第三回(おっ)は、Paginationを自在に操ってみましょう。(えっ)
出来上がりイメージは、以下のようです。
まあまあ、デフォルトのテンプレートでも», «で最初と最後の先端は、表示されますが、それをさらに変更した物のように見えます。通常これをやろうと思えば、ランゲージファイルを変更し、さらに「自分のテンプレート]/html/pagination.phpを少し変更すれば可能です。だけど、ランゲージファイルをサイトを作成するたびに変更するのは面倒だし、ランゲージに左右されることなく、テンプレート配下で自由に変更したいですよね。
そこでpagination.phpを以下のようにしました。
(デフォルトのテンプレートにも含まれているhtmlフォルダ配下のファイルです。)
昨日に引き続いて第二回は、とその前に前回の説明で少し・・・。メニュー設定ですが、レガシーでない設定でないと前回のメニューは作成されない事をここで補足しておきます。
さて、第二回は、ページカウンターを上の画像のように、変更してみます。Joomla!のデフォルトだと見た目が・・・アレなので、表示されていない方もたくさんおられるでしょうが、少し体裁というより表示する文字を、ランゲージファイルの変更をしないで変更してみます。
Joomla!のデフォルトのテンプレート(rhuk_milkyway)では、オーバーライドされていないのでまずは、オーバーライドテンプレートを作成します。(beezや、ja_purityでは、すべてでは無いかもしれませんが、オーバーライドされています。)
お使いのテンプレート/html/com_content/category
お使いのテンプレート/html/com_content/frontpage
お使いのテンプレート/html/com_content/section
(※すでにある場合は作成する必要はありません。)
Joomla!1.5.3JPを新規インストールし、管理画面から新規にテスト記事を作成してみたら、記事の公開終了日時が公開日以前になってしまうではないか・・・。編集時にすでにそう表示されてしまっています。
なぜか、うちのテストサーバーでは正常です。ま、とりあえず応急策。
Joomla Root/administrator/components/com_content/controller.php
if (JHTML::_('date', $row->publish_down, '%Y') <= 1969 || $row->publish_down == $db->getNullDate()) {
$form->set('publish_down', JText::_('Never'));を以下のように変更した。
if ($row->publish_down == JText::_('Never') || JHTML::_('date', $row->publish_down, '%Y') <= 1969 || $row->publish_down == $db->getNullDate()) {
$form->set('publish_down', JText::_('Never'));これでとりあえず解決。
にしても、あらかじめわかっている結果までもJHTMLにつっこむってのはどうなんだろう。それか、"Never"を入れるのではなく、"nulldate"入れておけば、それでOKな気がするし、そうしておけば、nulldateで"Never"と表示すればいいわけで・・・。結局"nulldate"入れるんだし。
と、思って変更しましたが、これだと二度手間なので違う場所を変更します。上記のコードは、無視します。あらためて以下を
$row->publish_down = JText::_('Never');を
$row->publish_down = $nullDate;
に変更した方が無駄がありません。よく考えなくても”終了無し(Never)”の場合、データベースには$nullDate(0000-00-00 00:00:00)で登録される訳なのでこの方がスマートですし、先の方法では管理画面のランゲージを変更した場合に同じ条件にならない可能性がありますね。
※これは、私の環境でのみ発生した事象かもしれません。ちなみにランゲージを英語に変更すると正常に表示されます。ですが、各国の言語で”Never"を表現していてそれをJHTMLからdateな判断をさせるのは少しおかしい気がします。