MTSubCategories
現在のカテゴリの子カテゴリを階層化して一覧表示するためのブロックタグです。MTSubCatsRecurse ファンクションタグと組み合わせることで子孫カテゴリを表示します。
- 基本的な使い方
<mt:SubCategories category="japan">
<div><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></div>
</mt:SubCategories>
指定したカテゴリの子カテゴリをリスト表示する例
<mt:SubCategories category="Italian">
<h3><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></h3>
<ul>
<mt:SubCategories>
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
</mt:SubCategories>
</ul>
</mt:SubCategories>
同じ名前のカテゴリが別の階層にある場合は、親カテゴリと子カテゴリをスラッシュ(/
)で区切って指定します。
<mt:SubCategories category="Restaurants/Italian">
<$mt:CategoryLabel$>
<mt:SubCategories>
</mt:SubCategories>
カテゴリ名にスラッシュ(/
)が含まれる場合は、カテゴリ名を角括弧([]
)で囲みます。
<mt:SubCategories category="Restaurants/[Indian/Pakistani]">
<$mt:CategoryLabel$>
<mt:SubCategories>
</mt:SubCategories>
再帰的なカテゴリリストの作成
<mt:SubCategories>
は、<mt:SubCatsRecurse>
ファンクションタグと組み合わせることで、子カテゴリを階層的に表示する再帰的なリストを作成できます。これにより、入れ子になったカテゴリ構造を柔軟に表示できます。
<mt:SubCategories>
<mt:ArchiveListHeader><ul></mt:ArchiveListHeader>
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a>
<mt:SubCatsRecurse>
</li>
<mt:ArchiveListFooter></ul></mt:ArchiveListFooter>
</mt:SubCategories>
記事のないカテゴリを除外する例
<mt:SubCategories>
<mt:ArchiveListHeader><ul></mt:ArchiveListHeader>
<mt:If tag="CategoryCount">
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a>
<mt:SubCatsRecurse>
</li>
</mt:If>
<mt:ArchiveListFooter></ul></mt:ArchiveListFooter>
</mt:SubCategories>
<mt:SubCategories>
タグは、指定されたコンテキスト(現在のカテゴリ、または category
モディファイアで指定されたカテゴリ)の子カテゴリのみを対象とします。再帰的にすべての子孫カテゴリを表示するには、<mt:SubCatsRecurse>
を使用してください。
親カテゴリ、子カテゴリを含め表示する例
<$mt:CategoryLabel setvar="CategoryLabel"$>
<mt:HasParentCategory>
<mt:ParentCategory>
<$mt:CategoryLabel setvar="ParentCategoryLabel"$>
<mt:ArchiveListHeader><ul></mt:ArchiveListHeader>
<li>Parent: <a href="<$mt:ArchiveLink$>"><$mt:CategoryLabel$></a></li>
<mt:SubCategories category="$ParentCategoryLabel">
<mt:If tag="CategoryLabel" ne="$ParentCategoryLabel">
<mt:ArchiveListHeader><ul></mt:ArchiveListHeader>
<li>Sibling: <a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
<mt:ArchiveListFooter></ul></mt:ArchiveListFooter>
</mt:If>
</mt:SubCategories>
<li>Current: <$mt:Var name="CategoryLabel"$></li>
<mt:SubCategories category="$CategoryLabel">
<mt:If tag="CategoryLabel" ne="$CategoryLabel">
<li>Child: <a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
</mt:If>
</mt:SubCategories>
<mt:ArchiveListFooter></ul></mt:ArchiveListFooter>
</mt:ParentCategory>
<mt:Else>
<mt:ArchiveListHeader><ul></mt:ArchiveListHeader>
<mt:SubCategories top="1">
<li>Sibling: <a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
</mt:SubCategories>
<li>Current: <$mt:Var name="CategoryLabel"$></li>
<mt:SubCategories category="$CategoryLabel">
<li>Child: <a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
</mt:SubCategories>
<mt:ArchiveListFooter></ul></mt:ArchiveListFooter>
</mt:HasParentCategory>
モディファイア
<mt:SubCategories>
タグは、以下のモディファイアをサポートします。top
または category
モディファイアのどちらかが必須です。
top モディファイアを有効にした場合は category モディファイアは適用されません。
- include_current="0 | 1"
-
値に 1 を指定すると、現在のカテゴリを含めて表示します。初期値は 0 です。
- top="0 | 1"
-
値に 1 を指定すると、最上位のカテゴリの一覧を表示します。MTTopLevelCategories ブロックタグと同様の挙動となります。初期値は 0 です。
- category="category_foo"
-
指定したカテゴリの子カテゴリのみを表示します。値にはカテゴリ名を指定します。(ベースネームではありません)
- 同じ名前のカテゴリが別の階層にある場合は、親カテゴリ/子カテゴリのようにスラッシュで区切って記述することで、異なるカテゴリを指定できます。
- カテゴリ名にスラッシュ(
/
)が含まれる場合は、カテゴリ名を角括弧([]
)で囲みます。例:category="[Indian/Pakistani]"
- sort_by="label | description | basename | created_on | modified_on | user_custom"
-
管理画面で並び替えた順番でカテゴリの一覧を出力します。初期値は user_custom です。Movable Type 5.1 で追加されました。
user_custom
: 管理画面で並び替えた順番(カスタムソート)でソートします。(初期値)label
: カテゴリ名でソートします。description
: カテゴリの説明でソートします。basename
: カテゴリのベースネーム(出力ファイル/フォルダ名)でソートします。created_on
: カテゴリの作成日でソートします。modified_on
: カテゴリの更新日でソートします。
- sort_order="ascend | descend"
-
並べる順序を指定します。ascend を指定すると昇順、descend は降順になります。初期値は ascend です。sort_by と併せて指定します。
<mt:SubCategories sort_by="label" sort_order="descend"> <$mt:CategoryLabel$> </mt:SubCategories>
user_custom 以外にも、上記の値を指定することができます。このモディファイアを指定した場合、管理画面で設定した並び順を無視し、指定した値で並び替えます。
このブロックタグ内で、<mt:CategoryPrevious>
タグ、および<mt:CategoryNext>
タグを利用した場合は、sort_by
モディファイアで指定した順番で、前と次のカテゴリを表示します。 - sort_method="sub_foo"
-
Perl のメソッド名を使用してカテゴリを並び替えます。これにより、カスタムのソートロジックを適用できます。
このモディファイアは、ダイナミックパブリッシングではサポートされていません。