特定のカテゴリだけテンプレートとアーカイブマッピングを変える

MTQに、「『ケータイ』カテゴリとその他のカテゴリとで、出力に使うテンプレートと、アーカイブマッピングを別々にしたい」というような内容の質問がありました。
この質問に答えてみます。

1.基本的な考え方

特定の条件を満たす時だけ、アーカイブテンプレートを別のものにしたいということは、よくあることです。

Movable Typeに不慣れな方だと、「アーカイブテンプレートを2つ(または複数)作って、条件に応じてアーカイブテンプレートを使い分けられないか」と考える方が多いようです。
しかし残念ながら、Movable Typeのアーカイブテンプレートは、そのような動作にはなっていません。

アーカイブテンプレートを複数作ると、すべてのブログ記事が、それぞれのアーカイブテンプレートに沿って再構築されます。
例えば、すべてのブログ記事のページを、PC用とスマートフォン用の両方で出力したいような時に、アーカイブテンプレートを2つ(または複数)作ります。

条件によってアーカイブテンプレートの出力を分けたい場合、1つのアーカイブテンプレートの中で、MTIf等のタグを使って条件分岐するようにします。

また、条件によってアーカイブマッピングを変えたいということもあります。
この場合、アーカイブマッピングの設定を「カスタム」にした後、MTIf等のタグで条件に応じて異なるマッピングになるように設定します。

2.事例

以下のような事例で、具体的な手順を解説します。

  • 「ケータイ」カテゴリと、その他のカテゴリで、ブログ記事のページと、カテゴリアーカイブページ(カテゴリ別ブログ記事リストテンプレート)の出力方法を変えます。
  • ブログ記事のアーカイブマッピングは、「ケータイ」カテゴリとその他のカテゴリとで、以下のように変えます。
    カテゴリアーカイブマッピング
    ケータイ%mb/-c/%f
    その他%-c/%f
  • カテゴリ別ブログ記事リストのアーカイブマッピングは、「ケータイ」カテゴリとその他のカテゴリとで、以下のように変えます。
    カテゴリアーカイブマッピング
    ケータイ%mb/-c/%i
    その他%-c/%i

2-1.テンプレートの作り方

「ケータイ」の1つのカテゴリだけ出力を分けるなら、ブログ記事アーカイブテンプレートや、カテゴリ別ブログ記事アーカイブテンプレートを、以下のように組みます。
MTIfCategoryタグを使って、「ケータイ」カテゴリだけ出力を分けるようにしています。

<mt:IfCategory name="ケータイ">
  「ケータイ」カテゴリの時の出力
<mt:Else>
  それ以外のカテゴリの時の出力
</mt:IfCategory>

2-2.ブログ記事アーカイブテンプレートのアーカイブマッピングの設定

次に、ブログ記事アーカイブテンプレートで、アーカイブマッピングの設定を変えて、「ケータイ」カテゴリだけアーカイブマッピングが別になるようにします。

ブログ記事アーカイブテンプレートを編集する状態にし、「テンプレートの設定」の部分を開いて、「パス」の欄の選択肢の最後にある「カスタム」を選びます。
これで、パスを入力できる状態になりますので、以下のようなテンプレートタグを入力します。

<mt:IfCategory name="ケータイ"><$mt:FileTemplate format="mb/%-c/%f"$><mt:Else><$mt:FileTemplate format="%-c/%f"$></mt:IfCategory>

ここでも、MTIfCategoryタグを使って、「ケータイ」カテゴリかどうかを判別して処理を分けています。

2-3.カテゴリ別ブログ記事リストテンプレートのアーカイブマッピングの設定

最後に、ブログ記事アーカイブテンプレートと同様の手順で、カテゴリ別ブログ記事リストテンプレートのアーカイブマッピングも設定します。
パスとして以下を入力します。

<mt:IfCategory name="ケータイ"><mt:FileTemplate format="mb/%-c/%i"><mt:Else><mt:FileTemplate format="%-c/%i"></mt:IfCategory>

3.アーカイブマッピングが複雑な場合

今回取り上げた例では、「ケータイ」カテゴリとその他のカテゴリとで、アーカイブマッピングを分けるだけでした。
しかし、場合によっては、もっと複雑なアーカイブマッピングを取りたいこともあります。

このような場合、パスの欄にテンプレートタグを入力しきれなくなります。
その時は、パスの欄の代わりに、テンプレートモジュールを使う方法があります。
詳しくは、「アーカイブの制御(その4・アーカイブファイルのパスを柔軟にカスタマイズする)」の記事を参照してください。