第四回は、メニューで設定したクラス接尾辞をテンプレートで利用してみます。
ページ毎(メニュー毎)にクラスの値を変えたり表示を変更するのは、$Itemid(メニューID)を下記のように取得すれば良いことをご存じの方は多いと思います。
$Itemid = JRequest::getInt('Itemid');これで取得したメニューIDでモジュールを表示したり、非表示にすることは、Joomla!1.0.xからも、普通に今まで行ってきました。ですが、これだとクラスの値だけをページ毎に設定したくてもコンテンツなどには、接尾辞は反映されるが、テンプレートまでは来ません。
そこで以下のようにしてメニューで設定したクラス接尾辞をテンプレートで利用できるようにしました。
$Itemid = JRequest::getInt('Itemid');
$pageclass_sfx = '';
if($Itemid > 0){
$menu = &JSite::getMenu();
$params = & $menu->getParams($Itemid);
$pageclass_sfx = $params->get('pageclass_sfx', '');
}
$this->params->set('pageclass_sfx', $pageclass_sfx);こうすることで、通常テンプレートのパラメータ(設定値)を得るように
$this->params->get('pageclass_sfx');で現在のメニューで設定した、クラス接尾辞が得られます。$Itemidで分岐してやることと大きな差はありませんが、最初に上記のコードを書いておく事で面倒な複数の分岐処理を書く必要がなくなります。
全く同じようにする必要はありませんが、何かの足しにはと・・・。
サイトを作成しているとよくあることですが、
などと。
Joomla!は、メニューにテンプレートを割り当てる事ができるのでメニュー毎にテンプレートを切り替える方法は、一般的な方法です。
もう一つ簡単な方法として考えられること。要はその表示・非表示の条件が、何で判断できるかを考えてみます。
例えば、
<?php if($this->countModules('作成したモジュールのモジュールポジション')) : ?>
<jdoc:include type="modules" name="ログイン後に表示したいモジュールポジション" style="rounded" />
<?php endif; ?>