ちょっと思いついたのでメモ。ブログ記事(個別のエントリーアーカイブ)に同じカテゴリの記事一覧を表示するというのを少し前にやりましたが、同じ方法で「関連するエントリー」も表示できることに気が付いたので覚え書きしておきます。
「その記事に関連するエントリー」に関してはプラグインがいろいろ出回っていて、やり方もあらかじめ関連付けておいたエントリーを表示するとか、同じタグを持つエントリーを関連するエントリーとして表示するとかいろいろあるようです。しかしこれらのプラグインはダイナミックに対応していないので、ブログ記事(エントリーアーカイブ)をダイナミック・パブリッシングにしていると導入できないのが難でした。が、4.0ではMTタグが拡張され、プラグインなしのMTタグだけでも似たようなことが出来るようになりました。
ここで試してみたのは「MT標準のタグで関連付けられたエントリーを表示する」という方法です。まずそのエントリーに付けられているタグを抜き出し、それを<MTEntries lastn="10" tags="タグ1 OR タグ2 OR タグ3">という形になるようにしてみました。
■MT4以降専用版
MT4から追加された変数機能を利用した方法。MT4以降でないと使えませんが、MTタグだけで実現できます。
基本編:そのエントリーに関連付けられたタグの記事を表示する
<MTEntryIfTagged> <MTSetVarBlock name="etag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock> <ul> <MTEntries lastn="10" tags="$etag"> <li> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a> </li> </MTEntries> </ul> </MTEntryIfTagged>
応用編1:タグがない場合は同じカテゴリーの記事を表示する(メインカテゴリのみ)
<MTEntryIfTagged> <MTSetVarBlock name="etag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock> <ul> <MTEntries lastn="10" tags="$etag"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li> </MTEntries> </ul> <MTElse> <MTSetVarBlock name="ecat"><$MTEntryCategory$></MTSetVarBlock> <MTIf name="ecat"> <ul> <MTEntries lastn="10" category="$ecat"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li> </MTEntries> </ul> </MTIf> </MTElse> </MTEntryIfTagged>
応用編2:タグがない場合は同じカテゴリーの記事を表示する(複数カテゴリも対象)
このカスタマイズの趣旨は「関連するエントリー」なので、カテゴリで表示する場合も複数カテゴリを全部対象にした方がより目的に合っているかもしれません。
<MTEntryIfTagged> <MTSetVarBlock name="etag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock> <ul> <MTEntries lastn="10" tags="$etag"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li> </MTEntries> </ul> <MTElse> <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> </MTElse> </MTEntryIfTagged>
■Smarty版(ダイナミック全バージョン対応)
この方法ならSmarty使えば3.35以前でもプラグイン使わずに関連エントリー表示できるじゃん!てことに気付いたのでSmarty版もついでに。ダイナミック専用です。静的生成では使えませんのでご注意下さい。
<MTEntryIfTagged> {{capture name="etag"}}<MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags>{{/capture}} <ul> <MTEntries lastn="10" tags="`$smarty.capture.etag`"> <li> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a> </li> </MTEntries> </ul> </MTEntryIfTagged>
<MTEntryIfTagged> {{capture name="etag"}}<MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags>{{/capture}} <ul> <MTEntries lastn="10" tags="`$smarty.capture.etag`"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li> </MTEntries> </ul> <MTElse> {{capture name="ecat"}}<MTEntryCategories glue=" OR "><$MTCategoryLabel$></MTEntryCategories>{{/capture}} {{if $smarty.capture.ecat ne ""}} <ul> <MTEntries lastn="10" category="`$smarty.capture.ecat`"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li> </MTEntries> </ul> {{/if}} </MTElse> </MTEntryIfTagged>
上:タグのみ
下:タグがない場合は同じカテゴリの記事を表示
プラグインのような複雑なことは出来ないごく簡単な方法ですが、「これだけ出来ればいい」な場合なら十分使えるのではと。
<2008.9.8>
タグが存在せず、かつカテゴリーに属さない記事ではリストを表示しないよう修正(エラー回避のため)。
コメント
体育会系オンナ | 2008年10月10日 11:49
参考にさせていただきました!
助かりました!
TAEKO | 2008年10月10日 23:09
コメントありがとうございます。
お役に立てたようでよかったです。^^