子カテゴリ別のブログ一覧で同じ親カテゴリに属する他の子カテゴリを取得する

Movable Typeの子カテゴリ別ブログ記事一覧ページで、同じ親カテゴリに属する他の子カテゴリを取得したいことがあったのでその際の方法をメモ。

サンプルコード

例として、以下のようなカテゴリがあるとします。

  • カテゴリA(cata)
    • カテゴリA-1(cata1)
    • カテゴリA-2(cata2)
    • カテゴリA-3(cata3)
  • カテゴリB(catb)
    • カテゴリB-1(catb1)

この子カテゴリ別一覧ページで、同じ親カテゴリに属する他の子カテゴリを表示するには以下のようにします。

<mt:Ignore><!-- 親カテゴリ名を取得 --></mt:Ignore>
<mt:HasParentCategory>
  <mt:ParentCategory>
    <mt:SetVarBlock name="parentCat"><mt:CategoryLabel></mt:SetVarBlock>
  </mt:ParentCategory>
</mt:HasParentCategory>

<mt:Ignore><!-- 親カテゴリの一覧でループ処理 --></mt:Ignore>
<mt:TopLevelCategories>
  <mt:SetVarBlock name="thisCat"><mt:CategoryLabel></mt:SetVarBlock>
  <mt:Ignore><!-- 現在の親カテゴリと一致する場合のみ子カテゴリの一覧を表示 --></mt:Ignore>
  <mt:If name="thisCat" eq="$parentCat">
    <ul>
      <mt:SubCategories>
        <mt:if tag="CategoryCount">
          <li>
            <a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
          </li>
        </mt:if>
      </mt:SubCategories>
    </ul>
  </mt:If>
</mt:TopLevelCategories>

大まかな流れはコード内に記載しているコメント通りですが、現在のカテゴリの親カテゴリを取得して、親カテゴリ一覧のループ内で一致するものを探し、一致した親カテゴリに属する子カテゴリを出力しています。

各子カテゴリ別一覧で確認してみると、以下のように生成されました。

カテゴリA-1,A-2,A-3の一覧ページ

<ul>
  <li>
    <a href="http://xxxxx/blog/cata/cata1/">カテゴリA-1</a>
  </li>
  <li>
    <a href="http://xxxxx/blog/cata/cata2/">カテゴリA-2</a>
  </li>
  <li>
    <a href="http://xxxxx/blog/cata/cata3/">カテゴリA-3</a>
  </li>
</ul>

カテゴリB-1の一覧ページ

<ul>
  <li>
    <a href="http://xxxxx/blog/catb/catb1/">カテゴリB-1</a>
  </li>
</ul>

ちなみにカテゴリAやカテゴリBのなどの親カテゴリのページでは要素は生成されません。
 

【参考サイト】

 

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

関連記事

コメントを残す

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

CAPTCHA


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

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930