MTの個別記事で同じカテゴリの記事一覧を表示する際に、現在の記事を除外する。

MTやWordPressなどのCMSを使ってサイトを構築する際、個別記事の中で、関連記事として同じカテゴリの一覧を表示する場合があると思います。

その場合のテンプレートタグの組み方は、以下のような感じ。コード中のHTML要素は例です。ただ、この組み方だと1つだけ気になる点が・・・

<h2><$MTEntryCategory$>の関連記事</h2>
<div>
<ul>
<MTEntryCategories>
    <MTEntries>
        <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
    </MTEntries>
</MTEntryCategories>
</ul>
</div>

それは、表示される記事一覧の中に現在閲覧中の記事のリンクも表示されてしまうことなんですね。ナビゲーション的には不要だと思われるので、現在の記事を除外するためのテンプレートタグを組んでみました。

<MTSetVarBlock name="title01"><$MTEntryTitle$></MTSetVarBlock>
<h2><$MTEntryCategory$>の関連記事</h2>
<div>
<ul>
<MTEntryCategories>
    <MTEntries>
        <MTSetVarBlock name="title02"><$MTEntryTitle$></MTSetVarBlock>
            <MTIf name="title02" ne="$title01">
            <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
            </MTIf>
    </MTEntries>
</MTEntryCategories>
</ul>
</div>

最初のMTSetVarBlockで、現在閲覧中の記事タイトルを、title01という変数に格納します。

2番目のMTSetVarBlockでは、MTEntries区間で繰り返し出力される記事タイトルをtitle02という変数に格納しています。

MTEntriesで記事情報を繰り返し出力する過程で、変数title01と変数title02を比較し、記事タイトルが一致しないという条件分岐をMTIfタグで行います。ちなみに「一致しない」という指定は、MTIf中のneというモディフィアで行っています。

現在閲覧している記事とタイトルが違う同一カテゴリの記事の時だけ、リンクを書き出すという流れです。

参考サイト

colo-ri.jp

www.movabletype.jp