各カテゴリの最新日付別カテゴリアーカイブのリストを出力する

MTQに、以下のような質問がアップされていました。

サブナビから、登録した各カテゴリの最新記事がある年度別一覧に飛ばしたいのですが、いろいろタグを調べており、なかなかうまくリンク先のパスが出力されずにいます。

この質問に答えてみます。

1.MTCategories/MTTopLevelCategoriesタグの中でMTArchiveListタグを使う

この質問のようなことをするには、カテゴリ毎に出力を区切って、その中でカテゴリ毎の日付別アーカイブリストを出力するようにすると、テンプレートを組みやすくなります。
それには、「MTCategories/MTTopLevelCategoriesタグの中でMTArchiveListタグを使う」というテクニックを使います。

MTCategoriesタグやMTTopLevelCategoriesタグの中で、MTArchiveListタグを使うことができます。
そして、MTArchiveListタグにarchive_typeモディファイアに「Category-Monthly」等を指定すると、カテゴリ毎にカテゴリ月別アーカイブ等のリストを出力することができます。

質問の内容では、小川さんが作られたFiscalYearlyプラグインを使って、カテゴリ年度別アーカイブを出力するとのことでした。
MTTopLevelCategoriesタグを使う場合だと、以下のようにすることで、カテゴリ毎に年度別アーカイブのリストを出力することができます。

<mt:TopLevelCategories>
    <mt:If tag="CategoryCount">
    カテゴリの情報を出力する部分
    <mt:ArchiveList archive_type="Category-FiscalYearly">
        各カテゴリの年度別アーカイブリストを出力する部分
    </mt:ArchiveList>
    </mt:If>
    <mt:SubCatsRecurse>
</mt:TopLevelCategories>

なお、リスト内のMTIfタグは、記事がないカテゴリを出力しないようにするために入れています。

2.MTArchiveListタグにlastnモディファイアを指定する

MTArchiveListタグは、モディファイアを特に指定しない場合、すべてのアーカイブのリストを出力します。
しかし、「lastn="○"」のモディファイアを指定することで、最近○件のアーカイブのリストだけを出力することができます。

この仕組みを使って、「lastn="1"」のモディファイアを指定すれば、最近1件のアーカイブだけを出力することができます。

3.実際の例

ここまでの話に基づいて、各カテゴリの最新年度別アーカイブの一覧を出力するには、以下のようにタグを組むと良いでしょう。

<ul>
<mt:TopLevelCategories>
    <mt:If tag="CategoryCount">
    <mt:ArchiveList archive_type="Category-FiscalYearly" lastn="1">
    <li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$></a></li>
    </mt:ArchiveList>
    </mt:If>
    <mt:SubCatsRecurse>
</mt:TopLevelCategories>
</ul>

2行目のMTTopLevelCategoriesタグで、カテゴリを順に出力するようにします。
そして、4行目のMTArchiveListタグで、各カテゴリの年度別アーカイブの最新1件を出力します。

MT Cloud Starter Kit
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください