MT:カテゴリとメニュー作成

top2013_0814.jpg今回を書き留めておこうと思った事柄は"稀によくある"そんな言葉脳裏に浮かんだ内容です。MTのカテゴリ構成をメインにしたメニュー作りを書き留めておこうと思います。

ポイントはカテゴリに属する記事の数によって出力内容を変える。という点です。

具体的には
1)カテゴリに属する記事が1つの場合は、カテゴリ名を出力する部分に記事のパーマリンクを設置する。

2)カテゴリに属する記事が2つ以上の場合は、カテゴリ名の部分には一番新しい記事のパーマリンクを設置し、カテゴリに属する記事の一覧を出力する。

<ul>
<MTTopLevelCategories>
<MTSetVarBlock name="CategoryCount"><$MTCategoryCount$></MTSetVarBlock>
<MTSetVarBlock name="CategoryLabels"><$MTCategoryLabel$></MTSetVarBlock>
<MTIf name="CategoryCount" eq="1">
	<MTEntries lastn="1" category="$CategoryLabels">
		<li><a href="<$MTEntryPermalink$>"><$MTCategoryLabel$></a></li>
	</MTEntries>
<MTElseIf name="CategoryCount" ge="2">
	<MTEntries lastn="1" category="$CategoryLabels">
		<li><a href="<$MTEntryPermalink$>"><$MTCategoryLabel$></a>
	</MTEntries>
	<MTEntries lastn="20"category="$CategoryLabels">
	<MTEntriesHeader><ul></MTEntriesHeader>
		<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
	<MTEntriesFooter></ul></li></MTEntriesFooter>
	</MTEntries>
</MTElseIf>
</MTIf>
</MTTopLevelCategories>
</ul>

カテゴリに属する記事の数を取得します。

<MTSetVarBlock name="CategoryCount"><$MTCategoryCount$></MTSetVarBlock>

記事が属するカテゴリを取得します。

<MTSetVarBlock name="CategoryLabels"><$MTCategoryLabel$></MTSetVarBlock>

ifを使って、カテゴリに属す記事が1つの場合と2つ以上の場合で出力内容を変えています。

<MTIf name="CategoryCount" eq="1"> <!--カテゴリに属する記事が1つ場合--&t;
	<MTEntries lastn="1" category="$CategoryLabels">
		<li><a href="<$MTEntryPermalink$>"><$MTCategoryLabel$></a></li>
	</MTEntries>
<MTElseIf name="CategoryCount" ge="2"> <!--カテゴリに属する記事が2つ以上の場合--&t;
	<MTEntries lastn="1" category="$CategoryLabels">
		<li><a href="<$MTEntryPermalink$>"><$MTCategoryLabel$></a>
	</MTEntries>
	<MTEntries lastn="20"category="$CategoryLabels">  <!--カテゴリに属する記事が2つ以上の場合一覧を表示--&t;
	<MTEntriesHeader><ul></MTEntriesHeader>
		<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
	<MTEntriesFooter></ul></li></MTEntriesFooter>
	</MTEntries>
</MTElseIf>
</MTIf>

条件をいろいろ組み合わせれば、ふんだんな表現ができると思います。
例えばcssで現在いるメニュー部分をアクティブにしたり、カスタムフィールドを使って、記事ではなく外部リンクを設けたり。

今回は記事とカテゴリという組み合わせですが、ウェブページとフォルダという組み合わせも、もちろんできると思います!