11月
28
2008
一定の条件でモジュールを表示・非表示 : Joomla!
サイトを作成しているとよくあることですが、
- この時は表示したいけどいつも非表示にしたい。
- この時だけは非表示にしたい。
などと。
Joomla!は、メニューにテンプレートを割り当てる事ができるのでメニュー毎にテンプレートを切り替える方法は、一般的な方法です。
もう一つ簡単な方法として考えられること。要はその表示・非表示の条件が、何で判断できるかを考えてみます。
例えば、
- ログインしていない時に表示したいけど、ログイン後は非表示にしたい。
簡単です。モジュールの中にきっとログイン後しか表示しないモジュールがあると思います。なければ、ユーザー詳細などログイン後にしか表示しないメニューを他のメニューモジュールとは別で作成し、アクセスするレベルを一般(Public)から登録(Registered)に変更します。そして単独(他の同条件のモジュールと共に)で表示するモジュールポジションを作成します。ログイン後に表示したいモジュールを作成したポジションに指定します。
後は、下記のようにテンプレートに記述すれば、このモジュールが表示されているときは、ログイン後で表示されていないときは、ログインされていないと判断することができます。
<?php if($this->countModules('作成したモジュールのモジュールポジション')) : ?> <jdoc:include type="modules" name="ログイン後に表示したいモジュールポジション" style="rounded" /> <?php endif; ?>
他の条件の時は
もちろんPHPでなにがしかの分岐文を書かないとだめな場合もありますが、上記のように簡単にできると思って間違いないと思います。その一定の条件のときって必ず何かパラメータを持っているはずです。
例えば、カテゴリーIDが5の時だけ表示したい場合
<?php if(JRequest::getInt('catid') == 5) : ?>
<jdoc:include type="modules" name="表示したいモジュールポジション" style="rounded" />
<?php endif; ?>などとすれば、ほぼ(記事の場合、異なる場合もあるのでもう少し条件が、必要かもしれない)思うようになると思います。
他にも使えるだろうパラメータは、
- メニューID
JRequest::getInt('Itemid'); - コンポーネント
JRequest::getCmd('option');
などと判断する基準は、たくさんあると思います。組み合わせて使えば、もっと複雑な条件での切り替えもできます。
お試しあれ






























