カテゴリ名の一覧を出す際に、記事を投稿されていないカテゴリを除外する方法をメモ。
サンプルコード
まずは特に設定しないでカテゴリ名の一覧を出力してみます。
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になります。
【参考サイト】
コメントが承認されるまで時間がかかります。