top

一定期間new表示をする(MTタグ版)

「最近○日のコメント」の応用で、MTタグだけで新着マークを付ける方法を覚え書きしてみました。さすがに厳密さではjavascriptやPHPにかないませんが、頑張ればMTタグだけでも限りなく近いことは出来るということで。

1.新着表示をさせたい期間を指定する
2.のタグより上に以下を記述。 <head>~</head>内でも可。 赤字の部分で表示させたい日数を指定します。

<MTSetVar name="day" value="5">
<MTSetVarBlock name="jday"><MTDate format="%j"></MTSetVarBlock>
<MTSetVarBlock name="oldday"><MTDate format="%Y%j"></MTSetVarBlock>
<MTSetVar name="oldday" value="$day" op="-">
<MTIf name="jday" le="$day"><MTSetVar name="oldday" value="635" op="-"></MTIf>

2.最近のエントリー一覧に新着マークを付ける
newマークを付けたい箇所に以下の 赤字の部分を追加します。
マークを画像にする場合はnewの部分を<img src="画像のアドレス" />に変えます。

<ul class="module-list">
<MTEntries lastn="10">
<li class="module-list-item">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
<MTSetVarBlock name="newday"><MTEntryDate format="%Y%j"></MTSetVarBlock>
<MTIf name="newday" gt="$oldday">new</MTIf>
</li>
</MTEntries>
</ul>

3.コメントやトラックバックへの応用
赤字部分の<MTEntryDate format="%Y%j">を、<MTCommentDate format="%Y%j">にすればコメントに、<MTPingDate format="%Y%j">にすればトラックバックに応用できます。その他、工夫次第でいろいろなところに応用できると思います。

注意事項とか:
*うるう年まで考慮してないので、指定した日数が「年をまたいで前年がうるう年」だった場合、指定した数より1日分多く表示されます。とはいえ、4年に1回でしかも年を超えるまでのわずかな期間だけなので、気にならなければOKかと。
*ダイナミック・パブリッシングならリアルタイムで動作しますが、静的生成だと再構築しないと最新の情報にならないため、ある程度のタイムラグは生じます。ただ、用途や目的によっては使えることもあるかもと。MTタグの可能性の1つということで。

関連エントリ
javascript版:新着エントリ・カテゴリ等に一定期間new表示をする
Smarty(PHP)版:Smartyによる新着表示