top

エントリーアーカイブに関連する記事一覧を表示する

ちょっと思いついたのでメモ。ブログ記事(個別のエントリーアーカイブ)に同じカテゴリの記事一覧を表示するというのを少し前にやりましたが、同じ方法で「関連するエントリー」も表示できることに気が付いたので覚え書きしておきます。

「その記事に関連するエントリー」に関してはプラグインがいろいろ出回っていて、やり方もあらかじめ関連付けておいたエントリーを表示するとか、同じタグを持つエントリーを関連するエントリーとして表示するとかいろいろあるようです。しかしこれらのプラグインはダイナミックに対応していないので、ブログ記事(エントリーアーカイブ)をダイナミック・パブリッシングにしていると導入できないのが難でした。が、4.0ではMTタグが拡張され、プラグインなしのMTタグだけでも似たようなことが出来るようになりました。

ここで試してみたのは「MT標準のタグで関連付けられたエントリーを表示する」という方法です。まずそのエントリーに付けられているタグを抜き出し、それを<MTEntries lastn="10" tags="タグ1 OR タグ2 OR タグ3">という形になるようにしてみました。

■MT4以降専用版
MT4から追加された変数機能を利用した方法。MT4以降でないと使えませんが、MTタグだけで実現できます。

基本編:そのエントリーに関連付けられたタグの記事を表示する

<MTSetVarBlock name="etag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock>
<ul>
<MTEntries lastn="10" tags="$etag">
<li>
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntries>
</ul>

応用編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>
<ul>
<MTEntries lastn="10" category="$ecat">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
</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>
<ul>
<MTEntries lastn="10" category="$ecat">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
</MTElse>
</MTEntryIfTagged>

■Smarty版(ダイナミック全バージョン対応)
この方法ならSmarty使えば3.35以前でもプラグイン使わずに関連エントリー表示できるじゃん!てことに気付いたのでSmarty版もついでに。ダイナミック専用です。静的生成では使えませんのでご注意下さい。

{{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>

MT4版 応用編の<MTSetVarBlock>の部分を{{capture}}で置き換えれば「タグがない場合は同じカテゴリの記事表示」も同様に可能です。

プラグインのような複雑なことは出来ないごく簡単な方法ですが、「これだけ出来ればいい」な場合なら十分使えるのではと。

 

トラックバックURL

トラックバックされる際にはこの記事へのリンクをお願い致します

トラックバックの一覧

トラックバック 関連するエントリーへのリンク  »» 2008年2月 1日 21:54
エントリーアーカイブで関連するエントリーへのリンクを貼りたいと思い、WingMe...

コメントを投稿


 <注意>
 ご利用のブラウザ、設定ではコメントのプレビューおよび投稿はご利用になれません。
 コメント投稿の際はお手数ですがjavascriptをオンにして下さい。
 *javascriptオフのまま投稿ボタンを押すと送信内容が消えますのでご注意下さい。