インデックスや一覧のMTEntries内で、
n日以内に更新されたエントリーだけに、NEWマークを表示する
MTの一覧でNEWマークを表示する方法です。
手順
比較的単純な方法としては、days モディファイアと unique モディファイルを併用する方法があります。
days モディファイアと unique モディファイルを併用する方法
たとえば5日以内のエントリーにNEWマークを表示したい場合には
<MTEntry days="5">~5日以内のエントリーが出力。NEWマークのタグを付与~ </MTEntries>
<MTEntry unique="1">~上記で扱われたエントリーを除いた出力~ </MTEntries>
しかし、一覧ページの分割プラグインなどを使っている場合には、上記の方法が通用しない場合があります。
そこで、MTIfタグの条件分岐を使ってNEWマークを表示するアイデアです。
MTIfタグの条件分岐を使ってNEWマークを表示
(ご利用は自己責任でお願いします)
<$MTDate format="%Y" setvar="current_year"$>
<$MTDate format="%j" setvar="past_date"$>
<$MTEntryDate format="%Y" setvar="entry_year"$>
<$MTEntryDate format="%j" setvar="entry_date"$>
<MTIf name="current_year" gt="$entry_year">
<$MTSetVar name="past_date" op="+" value="365"$>
<MTElseIf name="current_year" lt="$entry_year">
<$MTSetVar name="entry_date" op="+" value="365"$>
</MTIf>
<$MTSetVar name="past_date" op="-" value="$entry_date"$>
<MTTemplateNote value="デバッグ用"><MTIgnore><$MTVar name="past_date"$>-<$MTVar name="entry_date"$>=<$MTVar name="past_date"$></MTIgnore>
<MTIf name="past_date" le="5">
NEWマーク
</MTIf>
一部修正(2011/4/25)すみません、変数past_dateの配置にミスがありました。
キーポイントは日付テンプレートタグの format モディファイア %j です。
%j は年初からの日を、3桁の数字で表示します
ので、この値を取れば、単純計算で各エントリーから本日(最新の再構築日)までの経過日数を割り出すことが出来ます。
これに年をまたぐ場合の処理を加え、
最後に希望の日数で判別をかければOKです。
※閏年から年をまたぐ場合の処理は、上記のコードには入れていません。(NEWマークの表示が1日長くなります。)
%jの使い方を参考にさせていただきました。
MTタグで自動で消える"New"マークを表示する | 石輪っぷり! | 有限会社 Willさんいん