MT4でカテゴリにエントリ一覧を表示する
md@時間がないので高速エントリな人、です。MTをCMS的に使っていると、カテゴリのテンプレートにこんな感じで書き出したいときってありますよね。
- カテゴリA
- エントリA−1
- エントリA−2
- エントリA−3
- カテゴリB
- エントリB−1
- エントリB−2
- エントリB−3
<ul>
<li>カテゴリA
<ul>
<li>エントリA−1</li>
<li>エントリA−2</li>
<li>エントリA−3</li>
</ul>
</li>
<li>カテゴリB
<ul>
<li>エントリB−1</li>
<li>エントリB−2</li>
<li>エントリB−3</li>
</ul>
</li>
</ul>
これは
<MTCategories>
<h3><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>(<$MTCategoryCount$>)</h3>
<ul>
<MTEntries lastn="3">
<li><a href="<$MTEntryLink$>"><$MTEntryTitle$></a><$MTEntryDate format="(%m/%d)"$></li>
</MTEntries>
</ul>
</MTCategories>
とかなんですけど(lastn="3"は表示させたい記事件数)、これだとカテゴリが深くなった時に対応できないです。これを解決するには
<MTTopLevelCategories>
<MTSubCatIsFirst>
<ul>
</MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li class="category"><a href="<$MTCategoryArchiveLink$>"<MTIfNonEmpty tag="MTCategoryDescription"> title="<$MTCategoryDescription$>"</MTIfNonEmpty>><$MTCategoryLabel$>(<$MTCategoryCount$>)</a>
<ul>
<MTEntries lastn="999" sort_order="descend">
<li class="entry"><a href="<$MTEntryLink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
<MTElse>
<li><$MTCategoryLabel$>
</MTIfNonZero>
<$MTSubCatsRecurse$></li>
<MTSubCatIsLast>
</ul>
</MTSubCatIsLast>
</MTTopLevelCategories>
カテゴリ系のタグの中でMTEntriesを使うことによって、カテゴリに属するエントリへのリンクの一覧を書き出すわけです。吐き出されるコードはこんな感じ(改行の調整処理後)
<ul>
<li class="category"><a href="https://studiomd.jp/hogehoge/>ホームページを作成します(3)</a>
<ul>
<li class="entry"><a href="https://studiomd.jp/hogehoge/hoge1.html">MovableType4でもOK</a></li>
<li class="entry"><a href="https://studiomd.jp/hogehoge/hoge2.html">ホームページをリニューアルしたい</a></li>
<li class="entry"><a href="https://studiomd.jp/hogehoge/hoge3.html">新規でホームページを作成</a></li>
</ul>
<ul>
<li class="category"><a href="https://studiomd.jp/fugefuge/hagehage/">出張作成OK(1)</a>
<ul>
<li class="entry"><a href="https://studiomd.jp/fugefuge/hagehage/hage1.html">出張作成いたしますの記事</a></li>
</ul>
</li>
</ul>
</li>
<li class="category"><a href="https://studiomd.jp/higehige/">studio mdのクオリティ(3)</a>
<ul>
<li class="entry"><a href="https://studiomd.jp/higehige/hige1.html">豊富な管理・運用ノウハウ</a></li>
<li class="entry"><a href="https://studiomd.jp/higehige/hige2.html">ショッピングカート導入OK</a></li>
<li class="entry"><a href="https://studiomd.jp/higehige/hige3.html">あなたのホームページに「最新」を</a></li>
</ul>
</li>
</ul>
ここまでは自力でなんとかしたんですが、liの中にulが2つ入るのがどうにも...(^^;)。liタグで書き出されるとき、それがカテゴリかエントリかをclassで指定しています。これとul-liのネストの深さを基に、CSSで外観を調整します。mdは外観をこんな感じにしました。
以上、自分用メモ。参考にするほどの記事ではないのでご了承を(^^;)