Movable Typeで記事の投稿されていないカテゴリを表示しないようにする

カテゴリ名の一覧を出す際に、記事を投稿されていないカテゴリを除外する方法をメモ。

サンプルコード

まずは特に設定しないでカテゴリ名の一覧を出力してみます。
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になります。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930