条件分岐で行う効率的なテンプレート管理 - テンプレートモジュール
前回の記事では、MTSetVar
, MTSetVarBlock
といった MT タグを利用し、テンプレートの判別を行う方法、また、そのテンプレートの判別と、MTIf
といった条件分岐を行う MT タグを利用して、テンプレートごとに異なる出力結果を得る方法をご紹介しました。
今回は、同じ仕組みを利用して、テンプレートモジュールを作成し、全てのテンプレートで同じように読み込みながら、読み込むテンプレートごとに有効とする内容を変更する方法をご紹介します。
Movable Type 4 以前のテンプレートモジュールは、カスタマイズにより、長くなってしまいがちなブログのテンプレートを、働きごとに部品化するなどして、編集作業を行いやすいようにしたり、どのテンプレートでも同じ内容になる部分をモジュールとして部品化することで、繰り返しの作業を行わなくてもすむようにする、といった利用方法が主でした。MTSetVar
と MTGetVar
を利用し、テンプレートモジュールを柔軟に作成できても、少しの内容の違いだけで、別のモジュールとして管理しなければならなくなるなど、よく似た役割のテンプレートモジュールが増えてしまい、結果、管理が大変になってしまう。ということもありました。
テンプレートモジュールは、目的や働きによりきちんと分類され、読み込まれるテンプレートに合わせた内容を有効できると、数も増えすぎず、効率的な管理が行えるのが理想です。
Movable Type 4 では、MTSetVar
, MTSetVarBlock
タグに加え、MTIf
のような、 設定した変数の値を利用した条件分岐を行う MT タグと組合せることで、柔軟なテンプレートモジュールを作成することができます。
テンプレートモジュールのサンプル
読み込んだ、テンプレートごとに有効にする部分を変更したい場合の簡単なサンプルは以下のようになります (MTIgnore
の部分は再構築時に処理されません。テンプレートの処理をわかりやすくするための、コメントとして利用しています)
<MTIf name="main_index"> <MTIgnore>main_index と判別されたテンプレートのみ有効になる</MTIgnore> <p>このテンプレートは、main_index と判別されたテンプレートですね。</p> </MTIf> <MTIf name="entry_archive"> <MTIgnore>entry_archive と判別されたテンプレートのみ有効になる</MTIgnore> <p>このテンプレートは、entry_archive と判別されたテンプレートですね。</p> </MTIf>
MTElse ブロックタグを利用することもできます。
<MTIf name="main_index"> <MTIgnore>main_index と判別されたテンプレートのみ有効になる</MTIgnore> <p>このテンプレートは、main_index と判別されたテンプレートですね。</p> <MTElse> <MTIgnore>main_index と判別されたテンプレート以外のテンプレートで有効になる</MTIgnore> <p>このテンプレートは、main_index ではないですね。</p> </MTElse> </MTIf>
さらに、条件分岐を部分的に利用することもできます。
<p>このテンプレートは main_index <MTIf name="main_index">ですね<MTElse>ではないですね</MTElse></MTIf>。
MTInclude で変数を利用し、より柔軟に
テンプレートモジュールを読み込む MTInclude
ファンクションタグに、読み込むテンプレートモジュール変数を設定すれば、より柔軟なテンプレートモジュールを作成することができます。詳細は以下の記事を参照ください。
テンプレートの判別と、テンプレートごとに異る結果を有効にするカスタマイズをうまく利用すれば、きちんと働きごとに分類されたテンプレートモジュールを用意することができ、管理やカスタマイズを効率的に行えるようになります。