関連するエントリーへのリンク

エントリーアーカイブで関連するエントリーへのリンクを貼りたいと思い、WingMemo: エントリーアーカイブに関連する記事一覧を表示するを参考にして、テンプレートモジュールを作成してみました。

<MTSetVarBlock name="eid"><MTEntryID></MTSetVarBlock>
<MTEntryIfTagged>
    <MTSetVarBlock name="etag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock>
    <MTEntries lastn="11" tags="$etag"><MTSetVarBlock name="tid"><MTEntryID></MTSetVarBlock>
        <MTSetVarBlock name="ecount"><MTEntriesCount></MTSetVarBlock>
        <MTIf name="ecount" gt="1">
            <MTEntriesHeader><div class="trackbacks"><h2 class="trackbacks-header">関連するエントリー</h2><ul></MTEntriesHeader>
            <MTUnless name="tid" eq="$eid">
                <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
            </MTUnless>
            <MTEntriesFooter></ul></div></MTEntriesFooter>
        </MTIf>
    </MTEntries>
<MTElse>
    <MTSetVarBlock name="ecat"><$MTEntryCategory$></MTSetVarBlock>
    <MTEntries lastn="11" category="$ecat">
        <MTSetVarBlock name="xid"><MTEntryID></MTSetVarBlock>
        <MTSetVarBlock name="ecount"><MTEntriesCount></MTSetVarBlock>
        <MTIf name="ecount" gt="1">
            <MTEntriesHeader><div class="trackbacks"><h2 class="trackbacks-header">関連するエントリー</h2><ul></MTEntriesHeader>
            <MTUnless name="xid" eq="$eid">
                <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
            </MTUnless>
            <MTEntriesFooter></ul></div></MTEntriesFooter>
        </MTIf>
    </MTEntries>
</MTElse>
</MTEntryIfTagged>

もう少しスマートにできそうな気がしないでもないですが・・・(^^;。

同じタグがつけられたエントリーが他に無かったり、カテゴリーに他のエントリーが無い場合は、表示させないようにしています。

Movable Type 4.1で確認していますのが、Movable Type 4.01でちゃんと動くかはわかりません。

【2008年2月14日追記】

設定で静的に構築するようにしていて、エントリー数が多いブログの場合、再構築に掛かる時間が長くなる可能性があります。

ダイナミックパブリッシングに変更するか、再構築に掛かる時間を我慢するか、サーバーのスペックなども含めて検討したほうが良いと思います。