top

エントリーアーカイブに同じカテゴリの記事一覧を表示する(1) Smarty編

ここはダイナミック・パブリッシングをテーマにしているので、今は使っていなくても、ダイナミックに関係するカスタマイズは気がついたら覚え書きしていくことにしようと思っています。で、今回は個別のエントリーアーカイブに、そのエントリーの属するカテゴリーの記事を表示するカスタマイズ。

これは普通にやろうとすると、<MTEntries category="******">の赤字の部分に変数(この場合は<$MTEntryCategory$>)が使えないため、静的生成の場合はプラグインが必要になるみたいです。が、ダイナミックならテンプレに専用のコードを記入するだけでプラグインなしに簡単に実現させることができます。これはこちらのsmartyの応用技です。

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

{{capture name="c_entry"}}<$MTEntryCategory$>{{/capture}}
{{if $smarty.capture.c_entry ne ""}}
<ul class="module-list">
<MTEntries lastn="10" category="`$smarty.capture.c_entry`">
<li class="module-list-item">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntries>
</ul>
{{/if}}

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

{{capture name="c_entry"}}<$MTEntryCategory$>{{/capture}}
{{if $smarty.capture.c_entry ne ""}}
<ul class="module-list">
<MTEntriesWithSubCategories lastn="10" category="`$smarty.capture.c_entry`">
<li class="module-list-item">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntriesWithSubCategories>
</ul>
{{/if}}

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

{{capture name="c_entry"}}<MTEntryCategories glue=" OR "><$MTCategoryLabel$></MTEntryCategories>{{/capture}}
{{if $smarty.capture.c_entry ne ""}}
<ul>
<MTEntries lastn="10" category="`$smarty.capture.c_entry`">
<li>
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntries>
</ul>
{{/if}}

<追記>
MTタグだけで同じことができることが分かりました。詳しくは以下を。
エントリーアーカイブに同じカテゴリの記事一覧を表示する(2) MTタグ編
エントリーアーカイブに同じカテゴリの記事一覧を表示する(3) 4.0MTタグ編(MT4以降専用)

<2007.2.9 追記>capture assignを使う場合を追記
<2007.7.31 追記>
・MT4ではcapture assignを使う方法が使えないのでcapture nameを使う方法のみに統一
・MTタグだけで実装できる方法があることを追記1(複数カテゴリ対応版)
<2007.8.26 追記>
・MTタグだけで実装できる方法があることを追記2(メインカテゴリのみ版:4専用)
<2007.9.8 追記>
・複数カテゴリも対象に出来ることが分かったのでその方法を追記
<2008.9.8>
・カテゴリーに属さない記事ではリストを表示しないよう修正(エラー回避のため)。