MT:カテゴリとメニュー作成
今回を書き留めておこうと思った事柄は"稀によくある"そんな言葉脳裏に浮かんだ内容です。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で現在いるメニュー部分をアクティブにしたり、カスタムフィールドを使って、記事ではなく外部リンクを設けたり。
今回は記事とカテゴリという組み合わせですが、ウェブページとフォルダという組み合わせも、もちろんできると思います!