入れ子になったカテゴリの階層を調べるテンプレート

入れ子になったカテゴリの階層を調べる方法です。

MTSubCategories タグやカテゴリアーカイブに次のテンプレートを入れればOKです。

<$mt:SetVar name="cat_level" value="0"$>
<mt:ParentCategories><$mt:SetVar name="cat_level" op="++"$></mt:ParentCategories>

最初に変数 cat_level を初期化(ゼロを代入)して、MTParentCategories タグ内でインクリメント( +1 )します。これで親カテゴリの数だけ加算されていくので、カテゴリの階層が分かるというわけです。

ちなみに、MTParentCategories タグはトップレベルのカテゴリのコンテキストでも呼ばれ、その場合は MTParentCategories はトップレベルカテゴリである現在のカテゴリを返すようです(ソース未確認)。

試しに、このブログのカテゴリの一覧を、階層付きで表示すると次のようになります。

    [level:1]Movable Type
        [level:2]MT Plugins
        [level:2]MT Customize
        [level:2]Power CMS
        [level:2]DynamicMTML
    [level:1]WordPress
        [level:2]WP Plugins
        [level:2]WP Template
    [level:1]Web Development
        [level:2]XHTML+CSS
        [level:2]JavaScript
        [level:2]jQuery
        [level:2]Git
        [level:2]Server
        [level:2]Adobe AIR
    [level:1]Tool
        [level:2]Firefox
        [level:2]Web Browser
        [level:2]Web Service
            [level:3]Google
        [level:2]Mac
        [level:2]iPhone
        [level:2]CMS
            [level:3]EC-CUBE
    [level:1]Book
    [level:1]Diary
        [level:2]Design
        [level:2]Seminar

これを表示するためのテンプレートは次のようになります。

<mt:SubCategories top="1">
<mt:SubCatisFirst><ul></mt:SubCatisFirst>
<$mt:SetVar name="cat_level" value="0"$>
<mt:ParentCategories><$mt:SetVar name="cat_level" op="++"$></mt:ParentCategories>
<li>[level:<$mt:Var name="cat_level"$>]<$mt:categorylabel$><mt:SubCatsRecurse></li>
<mt:SubCatisLast></ul></mt:SubCatisLast>
</mt:SubCategories>

以上です。

  • このエントリーをはてなブックマークに追加
Just a second...