応用
サブカテゴリまで階層的に表示する
記事ページのサイドバーやメニュー部分で、カテゴリを階層的にサブカテゴリも含めて表示する場合があります。
使用するMTタグ
- mt:TopLevelCategories
- mt:If
- mt:SubCategories
- mt:SubCatIsFirst
- mt:SubCatIsLast
- mt:SubCatsRecurse
- mt:CategoryDepth
まず、mt:TopLevelCategoriesで一番上の階層のカテゴリ一覧を呼び出します。
次にmt:Ifがきます。ここではそのカテゴリに公開されている記事が一つでもあればカテゴリアーカイブへのリンクを表示し、なければカテゴリのラベルだけを表示するようにしています。
一番上の階層のカテゴリに、サブカテゴリがある場合はmt:SubCategoriesによって呼び出されます。
mt:SubCatIsFirstでは、mt:SubCategoriesでサブカテゴリー一覧が出力される際に最初に一度だけ実行する命令で、mt:SubCatIsLastは逆に最後に一度だけ実行されます。
また、mt:CategoryDepthはそのカテゴリが何回層目かを数字で表示するので、class名などで利用すれば階層ごとにCSSの調整が可能となります。
mt:SubCatsRecurseは、mt:SubCategoriesのブロックを再帰的に表示します。
ウェブページ記述サンプル
記事テンプレート記述例
<mt:TopLevelCategories>
<mt:If tag="CategoryCount">
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel encode_html="1"$></a>
<mt:Else>
<li><span class="nolink"><$mt:CategoryLabel encode_html="1"$></span>
</mt:If>
<mt:SubCategories>
<mt:SubCatIsFirst><ul class="submenu"></mt:SubCatIsFirst>
<mt:If tag="CategoryCount">
<li class="catdepth-<$mt:CategoryDepth$>"><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel encode_html="1"$></a>
<mt:Else>
<li class="catdepth-<$mt:CategoryDepth$>"><span class="nolink"><$mt:CategoryLabel encode_html="1"$></span>
</mt:If>
<$mt:SubCatsRecurse$>
</li>
<mt:SubCatIsLast></ul></mt:SubCatIsLast>
</mt:SubCategories>
</li>
</mt:TopLevelCategories>