テンプレートだけで関連するエントリーを表示 by Junnama Online

テンプレートだけで関連するエントリーを表示する方法の覚書。

こんなサイトで使用してます。

いくつかの方法がありますが二つご紹介。なお、テンプレートタグは当方で使用しているものに変更してあります(ul要素ではなくdl要素を使うなど)。

1. MTSetVar(Block)/MTIfタグの具体的な利用例。 - Junnama Onlineで公開されている方法。

<mt:EntryIfTagged>
<div class="asset-more">
<mt:SetVarBlock name="entrytags"><mt:EntryTags glue=" OR "><$mt:TagName$></mt:EntryTags></mt:SetVarBlock>
<mt:SetVarBlock name="thisid"><mt:EntryID></mt:SetVarBlock>
<mt:SetVar name="match" value="0"><mt:Ignore><!--←当該エントリーがマッチしたかどうか--></mt:Ignore>
<mt:Entries tag="$entrytags" lastn="11"><mt:Ignore><!--←10件でなく11件にしておく--></mt:Ignore>
<mt:SetVarBlock name="eid"><mt:EntryID></mt:SetVarBlock>
<mt:SetVarBlock name="entryCount"><mt:EntriesCount></mt:SetVarBlock><mt:Ignore><!--←何件マッチしたか--></mt:Ignore>
<mt:If name="entryCount" gt="1">
<mt:Ignore><!--↑1件以上マッチしたら出力 / 1件だったら当該エントリのみと判断できる--></mt:Ignore>
<mt:EntriesHeader><dl class="relatedEntry">
<dt><$mt:GetVar name="entrytags"$>の記事</dt>
<dd>
<ul></mt:EntriesHeader>
<mt:Unless name="__last__"><mt:Ignore><!--←ループの最後でなければ--></mt:Ignore>
<mt:Unless name="eid" eq="$thisid">
<li><a href="<mt:EntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><mt:EntryTitle></a></li>
<mt:Else>
<mt:SetVar name="match" value="1"><mt:Ignore><!--←当該エントリーがマッチしたことを覚えておく!--></mt:Ignore>
</mt:Else>
</mt:Unless>
<mt:Else><mt:Ignore><!--←ループの最後ならば--></mt:Ignore>
<mt:If name="match"><mt:Ignore><!--←当該エントリと既に一致していた場合は11件目を表示--></mt:Ignore>
<li><a href="<mt:EntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><mt:EntryTitle></a></li>
<mt:Else>
<mt:If name="__counter__" ne="11"><mt:Ignore><!--←11件に満たない場合も無条件に表示--></mt:Ignore>
<li><a href="<mt:EntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><mt:EntryTitle></a></li>
</mt:If>
</mt:Else>
</mt:If>
</mt:Else>
</mt:Unless>
<mt:EntriesFooter></ul>
</dd>
</dl></mt:EntriesFooter>
</mt:If>
</mt:Entries>
</div>
</mt:EntryIfTagged>

2. Movable Type 備忘録 - エントリ・タグを使って関連するエントリ一覧を表示だとこんな感じ

<mt:EntryIfTagged>
<div class="asset-more">
<mt:SetVarBlock name="entid"><$MTEntryID$></mt:SetVarBlock>
<mt:SetVarBlock name="enttags"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></mt:SetVarBlock>
<MTEntries tags="$enttags" lastn="6">
<MTEntriesHeader>
<dl class="relatedEntry">
<dt><$mt:GetVar name="enttags"$>の記事</dt>
<dd>
<ul>
</MTEntriesHeader>
<mt:SetVarBlock name="cur"><$MTEntryID$></mt:SetVarBlock>
<mt:If name="entid" ne="$cur">
<li><a href="<MTEntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><$MTEntryTitle$></a></li>
</mt:If>
<MTEntriesFooter>
</ul>
</dd>
</dl>
</MTEntriesFooter>
</MTEntries>
</div>
</mt:EntryIfTagged>