top

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

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

「その記事に関連するエントリー」に関してはプラグインがいろいろ出回っていて、やり方もあらかじめ関連付けておいたエントリーを表示するとか、同じタグを持つエントリーを関連するエントリーとして表示するとかいろいろあるようです。しかしこれらのプラグインはダイナミックに対応していないので、ブログ記事(エントリーアーカイブ)をダイナミック・パブリッシングにしていると導入できないのが難でした。が、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年2月 1日 21:54
エントリーアーカイブで関連するエントリーへのリンクを貼りたいと思い、WingMe...
トラックバック ブログのタグってどんなときに使えばいいの?  »» 2008年9月 2日 17:56
ブログの記事を分類する手段として、・カテゴリー・年月・タグの3つがあります。カテゴリーと年月はよく知られているのですが、「タグ」というのはまだなじみのない...
トラックバック 関連記事(同じタグ使用&同じカテゴリの記事)の表示  »» 2008年9月16日 15:26
ダイナミックパブリッシングでプラグイン無しで実現できる、エントリにつけたタグとカテゴリから関連記事表示する方法
トラックバック MT4.0のインストール  »» 2008年10月10日 11:48
現在メインサイトにMT4.0をインストールしています。 3.Xシリーズに比べて数段インストールしやすくなっています。 標準の仕様をちょっと変えているので...
トラックバック エントリーアーカイブに同じカテゴリの記事一覧を表示する  »» 2008年12月 4日 11:58
方法 次の様に変数を使います。 <MTSetVarBlock name="...
トラックバック エントリーアーカイブに関連する記事一覧を表示する  »» 2009年1月13日 14:22
エントリーアーカイブにタグで関連づけられた記事一覧を表示する方法です。

コメント

参考にさせていただきました!
助かりました!

コメントありがとうございます。
お役に立てたようでよかったです。^^