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による新着表示

 

トラックバックURL

トラックバックされる際にはこの記事へのリンクをお願い致します

コメントを投稿

 


 <注意>
 ご利用のブラウザ、設定ではコメントのプレビューおよび投稿はご利用になれません。
 コメント投稿の際はお手数ですがjavascriptをオンにして下さい。
 *javascriptオフのまま投稿ボタンを押すと送信内容が消えますのでご注意下さい。