Under the Bridge

a Picture of the Late Him

MT4.2:現エントリの一つ前と一つ後の月別アーカイブの表示

2009年9月17日 18:35 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

久々にMTネタ。

「現エントリの一つ前と一つ後の月別アーカイブの表示」というお題をテンプレートタグのみで実現する。

twitterでこんな発言が。

mersyさん

「個別エントリーでそのエントリーの投稿月の前後の月へのリンク。ふむ。簡単にはいかないんだっけかな。」

コード

<MTIgnore>データ取得関数</MTIgnore>
<MTSetVarTemplate name="CreateData">
   <a href="<MTArchiveLink>"><MTArchiveTitle></a>
</MTSetVarTemplate>

<MTIgnore>初期値生成</MTIgnore>
<MTSetVar name="strCaption" value="前の記事の月別アーカイブ":"この記事の月別アーカイブ":"次の記事の月別アーカイブ">
<MTSetVarBlock name="CurDate"><MTEntryDate format="%Y&#24180;%b&#26376;"></MTSetVarBlock>

<MTIgnore>月別データ取得</MTIgnore>
<MTArchiveList archive_type="Monthly">
   <MTSetVarBlock name="LopDate"><MTArchiveTitle></MTSetVarBlock>
   <MTIf name="LopDate" eq="$CurDate">
      <MTSetVarBlock name="strMonth[0]"><MTArchivePrevious><MTGetVar name="CreateData"></MTArchivePrevious></MTSetVarBlock>
      <MTSetVarBlock name="strMonth[1]"><MTGetVar name="CreateData"></MTSetVarBlock>
      <MTSetVarBlock name="strMonth[2]"><MTArchiveNext><MTGetVar name="CreateData"></MTArchiveNext></MTSetVarBlock>
   </MTIf>
</MTArchiveList>

<MTIgnore>表示</MTIgnore>
<ul>
<MTFor var="x" from="0" to="2">
   <li><MTGetVar name="strCaption[$x]">:<MTGetVar name="strMonth[$x]"></li>
</MTFor>
</ul>

少し解説

データは後にforループで簡単にリストを生成するために0-2の配列です。項目名とデータに分けて準備します。これは私の癖のようなもんです。

MTArchivePrevious と MTArchiveNext で該当エントリ(1)の前(0)と次(2)の月別アーカイブを取得してstrMonth[]配列へ代入しています。

ちょっと「ん?」と思われるかもしれないけど、MTSetVarTemplateを用いCreateData変数を3回、「必要なときだけ」まったく同じコードで生成しています。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.2:現エントリの一つ前と一つ後の月別アーカイブの表示

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)