アーカイブの制御(その9・条件によってアーカイブのテンプレートを変える)

先日の記事に続いて、「条件によってアーカイブのテンプレートを変える」ということを紹介します。
今日は、条件ごとに全く異なるテンプレートを使いたい場合の方法を紹介します。

1.取り上げる例

以下のような例を取り上げます。

  • カテゴリA~カテゴリEの5つのカテゴリがあります。
  • カテゴリAに属するブログ記事は、他のカテゴリに属するブログ記事とは違うテンプレートで出力します。

2.テンプレートモジュールの作成

まず、アーカイブページの出力に使いたいテンプレートを、テンプレートモジュールとして作成します(アーカイブテンプレートではありません)。

上であげた例では、個々のブログ記事のアーカイブページを、カテゴリAとその他との2種類に分けたいというものです。
この場合、2つのテンプレートモジュールを作ります。
それぞれに「カテゴリA用ブログ記事アーカイブ」と「その他用ブログ記事アーカイブ」などの名前を付け、テンプレートの内容を入力します。

アーカイブページ出力用に2つのテンプレートモジュールを作る

3.アーカイブテンプレートの書き換え

次に、元々のアーカイブテンプレートを書き換えて、条件に応じてテンプレートモジュールをインクルードするように書き換えます。

今取り上げている例だと、まず既存のブログ記事アーカイブテンプレートの内容をクリアします。
そして、内容を書き換えて、ブログ記事が属するカテゴリに応じて、「カテゴリA用ブログ記事アーカイブ」「その他用ブログ記事アーカイブ」のどちらかのテンプレートモジュールを読み込むようにします。

具体的には、ブログ記事アーカイブテンプレートの内容を、以下のようにします。

<mt:EntryCategory setvar="entry_category">
<mt:If name="entry_category" eq="カテゴリA">
  <mt:Include module="カテゴリA用ブログ記事アーカイブ">
<mt:Else>
  <mt:Include module="その他用ブログ記事アーカイブ">
</mt:If>

まず、1行目の文で、ブログ記事が属するカテゴリの名前を、変数entry_categoryに代入します。
次に、2行目のMTIfタグで、変数entry_categoryの値が「カテゴリA」と等しいかどうかを判断します。
2行目の条件が成立する場合は、3行目が処理されて、「カテゴリA用ブログ記事アーカイブ」テンプレートモジュールに沿ってブログ記事が再構築されます。
一方、2行目の条件が成立しない(ブログ記事「カテゴリA」に属していない)場合は、5行目が処理されて、「その他用ブログ記事アーカイブ」テンプレートモジュールに沿ってブログ記事が再構築されます。