MovableTypeのカテゴリーアーカイブ一覧の作り方

MTでカテゴリーごとの一覧ページを作った際の備忘録。いつもデフォルトのテンプレートを適当にカスタマイズしていたのだけど、ゼロから作ろうと思ったらどっから手をつけてよいのやら…でした。

インデックステンプレート

<mt:IfArchiveTypeEnabled archive_type="Category">
<h3>カテゴリ</h3>
<mt:TopLevelCategories>
<mt:SubCatIsFirst>
<ul>
</mt:SubCatIsFirst>
<mt:If tag="CategoryCount">
<li><a href="<$mt:CategoryArchiveLink$>"<mt:If tag="CategoryDescription"> title="<$mt:CategoryDescription remove_html="1" encode_html="1"$>"</mt:If>><$mt:CategoryLabel$> (<$mt:CategoryCount$>)</a>
<mt:Else>
<li><$mt:CategoryLabel$>
</mt:If>
<$mt:SubCatsRecurse$>
</li>
<mt:SubCatIsLast>
</ul>
</mt:SubCatIsLast>
</mt:TopLevelCategories>
</mt:IfArchiveTypeEnabled>

index.htmlに当たるようなテンプレート(つまり、インデックステンプレートのmain_index)に上記のタグを入れます。アーカイブテンプレートでカテゴリーのテンプレートがある場合にだけ動くように
<mt:IfArchiveTypeEnabled archive_type="Category">
というIf文でくくってあげます。問題なければ、なくてもいいです。で、それぞれのカテゴリ一覧ページに飛ぶようにリンクを作ってあげます。カテゴリーの一覧は、
<mt:TopLevelCategories>…</mt:TopLevelCategories>
でループさせてやります。
カテゴリー名は、
<$mt:CategoryLabel$>
でループの中で連続して出してくれます。
リンク先は、
<$mt:CategoryArchiveLink$>
です。カテゴリー関連のこれらのタグ、CategoryLabelとCategoryArchiveLinkは、EntryTitleとEntryPermalinkのような関係ですね。
で、このCategoryArchiveLinkの行き先は、デフォルトではいわゆる「カテゴリ別ブログ記事リスト」というテンプレートになります。このテンプレートはアーカイブテンプレートで「ブログ記事リスト」として作成したアーカイブマッピングがcategory/sub-category/index.htmlというものになります。((+)アーカイブテンプレートの作成で、(+)ブログ記事 (+)ブログ記事リスト ウェブページとなっているやつです。)

アーカイブテンプレート(ブログ記事リスト)

<ul>
<mt:Entries>
<li>
<a href="<$mt:EntryPermalink$>">
<$mt:EntryTitle$>
</a>
</li>
</mt:Entries>
</ul>

基本的にはこんな感じで書けばよいです。ブログ記事リストはアーカイブテンプレートが一枚多くなっているという感じで、当然理屈からいってもカテゴリーだの月別だのというところでまとめる(アーカイブする)要素が1つ増えているのでテンプレートも1つ増えるというイメージでしょうか。
これらのMTタグは通常インデックステンプレートでもよく使っているものなので特に難しいところはないです。mt:Entriesのループ内で自由に書けばよいと思います。
根幹になる部分はこんな感じです。