[MTカスタマイズ Tips]ブログ記事に関連する記事リストを表示する

[MTカスタマイズ Tips]ブログ記事に関連する記事リストを表示する

イメージ

こんにちは、inoueです。睡眠の秋を満喫中です。もう眠っても眠ってもまだ眠い…

さて、最近MovableTypeのテンプレートカスタマイズを再びやる機会が巡ってきました。
面倒なこともちょいとありますが、おもしろいっすね、MTタグ。

よくありがちなブログ記事テンプレートの形に「ブログ記事本文の下に、関連する記事へのリンクをリスト表示する」というのがあります。
次のような仕様として、今回はその実装サンプルを紹介します。

仕様

  • 自身と同じカテゴリーの記事を5件表示する
  • 自身は含めない
  • 同じカテゴリーに記事がない場合は、「関連する記事はありません」と表示する

実装サンプル

<mt:ignore><!-- 当該ブログ記事の表示 --></mt:ignore>
<div class="blockEntry">
<h3><$mt:EntryTitle$></h3>
<div class="entryBody">
<$mt:EntryBody$>
<!-- /.entryBody --></div>
<div class="entryCategory">
<$mt:EntryCategory$>
<!-- /.entryCategory --></div>
<!-- /.blockEntry --></div>

<div class="blockOthers">
<h3><strong>「<$mt:EntryCategory$>」</strong>に関連するその他の記事</h3>
<mt:SetVarBlock name="this_category"><$mt:CategoryLabel$></mt:SetVarBlock>
<mt:SetVarBlock name="this_id"><$mt:EntryID$></mt:SetVarBlock>

<mt:ignore><!-- 当該ブログ記事を除くための処理 --></mt:ignore>
<mt:Entries id="$this_id"></mt:Entries>

<mt:ignore><!-- 変数の初期化 --></mt:ignore>
<$mt:SetVar name="entry_count" value="0"$>

<mt:ignore><!-- 関連記事を新しい順に5件表示する --></mt:ignore>
<mt:Entries category="$this_category" unique="1" lastn="5">
<mt:EntriesHeader><ol></mt:EntriesHeader>
<li><a href="<$mt:EntryLink$>"><$mt:EntryTitle$></a></li>
<$mt:SetVar name="entry_count" op="++"$>
<mt:EntriesFooter></ol></mt:EntriesFooter>
</mt:Entries>

<mt:ignore><!-- 関連記事がない場合の表示 --></mt:ignore>
<mt:If name="entry_count" eq="0">
<p>該当する記事はありません</p>
</mt:if>
<!-- /.blockOthers --></div>

実装のポイント

1. uniqueモディファイアを使って自身を取り除く
MTEntriesブロックタグにて unique=1 とすると、同じテンプレート内で使用した MTEntries ブロックで出力したブログ記事を除いて出力してくれます。
この機能を利用するために、直前でサンプル中の「当該ブログ記事を除くための処理」を行い、メインで表示しているブログ記事のみをMTEntries ブロックにてダミー出力し、取り除いています。
1. MTSetVar で 件数カウント
関連記事が0件の場合を検知するため、「関連記事を5件表示する」処理の中に件数をカウントする処理を追加しています。
<$mt:SetVar name="entry_count" op="++"$> にて、 変数 entry_count が 初期値0から1ずつ加算(インクリメント)されていきます。
op モディファイアは加減乗除が行える便利な属性です。これを使いこなすとMTタグがぐんとプログラミング言語っぽく使えるようになります。

まとめ

MTタグの豊富なモディファイアを組み合わせていくと、かなり柔軟に表示制御ができることが上記のサンプルからもわかると思います。
MTタグリファレンスの解説も非常にていねいなので、よく読んでやりたいことを実現してみてください。

参考情報

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ