top

エントリーアーカイブと同じタグまたはカテゴリーの記事一覧を表示する(4.1~)

少し前に下書きしていた覚え書きですが、せっかくなので公開しておきます。
関連記事一覧(応用編)同じカテゴリの記事一覧(MT4応用編)の合わせ技です。

もしその記事にタグが付けられてなかったら。
該当記事は除外する場合、もしそのタグが付いた最初の記事のためにリストに表示できる記事がなかったら。

関連記事は何もない状態になりますね。
その時は代わりに同じカテゴリーの記事を関連記事として表示しようというものです。

■タグまたはカテゴリーで関連記事を10件表示する
該当記事はリストから除外します。 該当記事がリストに含まれる・含まれないに関係なく常に指定した記事数を保ちます。
表示する記事数は赤字の部分で指定します(2か所あります)。

<MTSetVarBlock name="thisid"><$MTEntryID$></MTSetVarBlock>
<MTEntryIfTagged>
<MTSetVarBlock name="etag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock>
<MTEntries tags="$etag"><MTEntriesHeader>
<MTSetVarBlock name="etagcount"><$MTEntriesCount$></MTSetVarBlock>
</MTEntriesHeader></MTEntries>
</MTEntryIfTagged>
 
<MTIf name="etagcount" gt="1">
<MTSetvar name="taglistcount" value="0">
<MTEntries lastn="0" tags="$etag">
<MTEntriesHeader><ul></MTEntriesHeader>
<MTIf name="taglistcount" lt="10">
<MTSetVarBlock name="eid"><$MTEntryID$></MTSetVarBlock>
<MTIf name="thisid" ne="$eid">
<MTSetVar name="taglistcount" op="++">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTIf>
</MTIf>
<MTEntriesFooter></ul></MTEntriesFooter>
</MTEntries>
<MTElse>
<MTSetVarBlock name="ecat"><$MTEntryCategory$></MTSetVarBlock>
<MTIf name="ecat">
<MTSetvar name="catlistcount" value="0">
<MTEntries lastn="0" category="$ecat">
<MTEntriesHeader>
<MTSetVarBlock name="ecount"><$MTEntriesCount$></MTSetVarBlock>
</MTEntriesHeader>
<MTIf name="ecount" gt="1">
<MTEntriesHeader><ul></MTEntriesHeader>
<MTIf name="catlistcount" lt="10">
<MTSetVarBlock name="eid"><$MTEntryID$></MTSetVarBlock>
<MTIf name="thisid" ne="$eid">
<MTSetVar name="catlistcount" op="++">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTIf>
</MTIf>
<MTEntriesFooter></ul></MTEntriesFooter>
</MTIf>
</MTEntries>
</MTIf>
</MTElse>
</MTIf>

まず、あらかじめ、タグ付けされている場合は同じタグの記事数を求めておきます。
ここで記事数が存在しない、または記事数が1の場合はタグで表示できる関連記事はないということになります。
そこで、記事数が2以上ある場合はタグによる関連リストを表示し、それ以外の場合はカテゴリリストを表示する、ということにしてみました。

応用:カテゴリに複数カテゴリを使用したい場合は緑字の部分を以下に差し替える。

<MTEntryCategories glue=" OR "><$MTCategoryLabel$></MTEntryCategories>

応用2:
<MTIf name="etagcount" gt="1">の数字をgt="5"などにすれば「関連するタグの記事が5個に満たない場合はカテゴリの方を表示する」なんて使い方も出来るかも…。

<2008.9.8>
タグが存在せず、かつカテゴリーに属さない記事ではリストを表示しないよう修正(エラー回避のため)。