カテゴリ名の一覧を出す際に、記事を投稿されていないカテゴリを除外する方法をメモ。
サンプルコード
まずは特に設定しないでカテゴリ名の一覧を出力してみます。
MTCategoriesを使う方法と、MTTopLevelCategoriesとMTSubCategoriesを使う方法を試してみます。
<mt:Ignore><!-- MTCategoriesを使う場合 --></mt:Ignore>
<ul>
<mt:Categories>
<li>
<a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
</li>
</mt:Categories>
</ul>
<mt:Ignore><!-- MTTopLevelCategoriesとMTSubCategoriesを使う場合 --></mt:Ignore>
<ul>
<mt:TopLevelCategories>
<li>
<a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
</li>
<mt:SubCategories>
<li>
<a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
</li>
</mt:SubCategories>
</mt:TopLevelCategories>
</ul>
MTCategoriesの場合は投稿記事のないカテゴリは自動で除外されますが、MTTopLevelCategoriesとMTSubCategoriesを使った場合は投稿記事のないカテゴリも含まれるようです。
MTTopLevelCategoriesとMTSubCategoriesを使った場合でも投稿記事のないカテゴリを除外したい場合、MTCategoryCountを使って以下のようにします。
<ul>
<mt:TopLevelCategories>
<mt:If tag="CategoryCount">
<li>
<a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
</li>
</mt:If>
<mt:SubCategories>
<mt:If tag="CategoryCount">
<li>
<a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
</li>
</mt:If>
</mt:SubCategories>
</mt:TopLevelCategories>
</ul>
MTCategoryCountでカテゴリに属する記事数を取得できるので、以下のようにMTIfで記事が1件以上ある場合にのみ表示するようにしています。
<mt:If tag="CategoryCount"> // カテゴリに属する記事が1件以上ある場合 </mt:If>
MTIfのtagでMTのテンプレートタグを指定でき、これ以外のモディファイアを指定しない場合、指定したタグの値の有無で判定できます。
0以外の値の場合はtrue、0または値が無い場合はfalseになります。
【参考サイト】
コメントが承認されるまで時間がかかります。