Movable Type.net

MTタグ逆引き辞典

記事のカテゴリをサブカテゴリまで階層的に表示する

記事ページのサイドバーやメニュー部分で、カテゴリを階層的にサブカテゴリも含めて表示する場合があります。

テンプレート記述例

    <ul>
        <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>
    </ul>

まず、mt:TopLevelCategoriesで一番上の階層のカテゴリ一覧を呼び出します。
次にmt:Ifがきますが、ここではそのカテゴリに公開されている記事が一つでもあればカテゴリアーカイブへのリンクを表示し、なければカテゴリのラベルだけを表示するようにしています。

一番上の階層のカテゴリに、サブカテゴリがある場合はmt:SubCategoriesによって呼び出されます。

mt:SubCatIsFirstでは、mt:SubCategoriesでサブカテゴリー一覧が出力される際に最初に一度だけ実行する命令で、mt:SubCatIsLastは逆に最後に一度だけ実行されます。

また、mt:CategoryDepthはそのカテゴリが何回層目かを数字で表示するので、class名などで利用すれば階層ごとにCSSの調整が可能となります。

mt:SubCatsRecurseは、mt:SubCategoriesのブロックを再帰的に表示します。

出力例

使用したMTタグはこちら

Movable Type.net は無料トライアルが可能です。
Web制作者の方で、デモや評価利用をご希望の場合は、制作者向け評価ライセンスをご利用ください。

無料トライアル 資料ダウンロード 制作者向け評価ライセンス