top

エントリーアーカイブに同じカテゴリの記事一覧を表示する(3) 4.0~MTタグ編

3.3以前のMTではMTタグのアトリビュート(4ではモディファイアというみたいですね)に変数が使えませんでした。そのためアトリビュート(モディファイア)に変数を使いたい場合はプラグインやSmartyで工夫する必要がありました。が、4.0からはアトリビュートに変数が使えるようになったため、MTタグのみで<MTEntries category="<$MTEntryCategory$>">みたいなことが出来るようになりました。「エントリーアーカイブに同じカテゴリの記事一覧を表示する」カスタマイズを例にとってその方法を覚え書き。

面白いのは、4.0から実装されたこの方法がSmartyによる方法とほとんど同じことです。4.0でダイナミックで使えなくなった

{{capture assign="name"}}<$MTEntryCategory$>{{/capture}}
<MTEntries lastn="10" category="$name">

の{{capture assign="name"}}部分ががそっくりそのまま<MTSetVarBlock name="name">タグで置き換わったかのようです。この方法はダイナミックだけでなく静的生成でも使えますから静的頁の可能性も4.0により広がったと言えると思います。

■エントリーの属するカテゴリーの記事を表示させる
そのエントリーの属するカテゴリーの記事のみが表示されます。赤字の部分は好きな名前でかまいませんが、2箇所とも同じ名前にしておく必要があります。lastn="10"の中の数字は表示させたい件数を。

<MTSetVarBlock name="ecat"><$MTEntryCategory$></MTSetVarBlock>
<MTIf name="ecat">
<ul>
<MTEntries lastn="10" category="$ecat">
<li>
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntries>
</ul>
</MTIf>

■サブカテゴリー以下の記事も表示させる
そのエントリーの属するカテゴリの下にさらにサブカテゴリーがあり、サブカテゴリーの記事も一緒に表示させたい場合。赤字の部分は好きな名前でかまいませんが、2箇所とも同じ名前にしておく必要があります。lastn="10"の中の数字は表示させたい件数を。

<MTSetVarBlock name="ecat"><$MTEntryCategory$></MTSetVarBlock>
<MTIf name="ecat">
<ul>
<MTEntriesWithSubCategories lastn="10" category="$ecat">
<li>
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntriesWithSubCategories>
</ul>
</MTIf>

応用:エントリーの属する全てのカテゴリーの記事を表示させる
エントリーに複数カテゴリが指定してある場合、その全てのカテゴリーに属する記事を表示させることも出来ます。

<MTSetVarBlock name="ecat"><MTEntryCategories glue=" OR "><$MTCategoryLabel$></MTEntryCategories></MTSetVarBlock>
<MTIf name="ecat">
<ul>
<MTEntries lastn="10" category="$ecat">
<li>
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntries>
</ul>
</MTIf>

ただ、この方法ではカテゴリー毎にまとまらずまぜこぜになって表示されるので、カテゴリー毎に分けて表示したい場合はこちらの方法を使うといいと思います。

<注意>
・MT4.0以降専用カスタマイズです。3.3以前では使えませんのでご注意下さい。

<2007.9.8 追記>
複数カテゴリの記事を全て表示することも出来たことに気付いたので追記。
<2008.9.8>
カテゴリーに属さない記事ではリストを表示しないよう修正(エラー回避のため)。

 

トラックバックの一覧

トラックバック 個別エントリーアーカイブに同じカテゴリの記事を一覧表示する  »» 2009年4月 1日 22:33
エントリーアーカイブ(個別エントリー)に同じカテゴリの記事を 一覧表示する方法です。...