同一テンプレートでのコンテンツの出し分け方法

トップページと一覧や詳細ページとで表示する内容を変えたい場合、テンプレートの設定で指定するテンプレートファイルを個別に設定する方法が一般的ですが、ちょっとした表示の違いで個別にテンプレートを用意するのは、テンプレートの修正が発生した際にメンテナンス性が下がります。そこでタッチモジュールやIFブロック、インクルードを使うことで同一のテンプレート内に表示の出し分けを行うことができます。

タッチモジュールの場合

<!-- BEGIN_MODULE Touch_Top -->トップページに表示<!-- END_MODULE Touch_Top -->
<!-- BEGIN_MODULE Touch_Index -->一覧ページに表示<!-- END_MODULE Touch_Index -->
<!-- BEGIN_MODULE Touch_Entry -->詳細ページに表示<!-- END_MODULE Touch_Entry -->

IFブロックの場合

<!-- BEGIN_IF [%{VIEW}/eq/top] -->トップページに表示
<!-- ELSE_IF [%{VIEW}/eq/index] -->一覧ページに表示
<!-- ELSE_IF [%{VIEW}/eq/entry] -->詳細ページに表示<!-- END_IF -->

テンプレートではIFブロックよりもモジュールの方が先に解決されます。このため、トップページはエントリーサマリー、詳細ページはエントリー本文などのモジュールの出し分けをIFブロックで行うと、モジュールの解決後にIFブロックで表示結果を消すことになり無駄な処理が動いてしまいます。モジュールの出し分けは、タッチモジュールやグローバル変数を使ったインクルードで行ってください。

インクルードの場合

top_parts.html・index_parts.html・entry_parts.html などのインクルードファイルを用意しておき、グローバル変数 %{VIEW} を使ってインクルード文を記述します。

<!--#include file="/include/%{VIEW}_parts.html" -->