MT タグ 日付比較 更新日と登録日を比較してnew表示

お仕事

MT で、ブログのポストからしばらくの間、「New」などのバッチとかフラグとか表示したい案件に出会ったので、備忘録をポスト。

内容としては、日付を比較して、新しいモノにNewマークを表示するもの、PHPを使って実現するのはまぁ簡単なんですが、拡張子をphpにしたり(もしくはhtmlでphpエンジン通るように設定するとか)なんか良くない子のような気がします。

 

ぐぐってみると結構プラグイン入れたり、やっぱりphpだったりしてう~んって考えていたら以外に簡単にひらめきました。簡単なのできっとググり方が下手なのだと内省しながら、忘れないうちに…


<$mt:Date format="%Y" setvar="rebuilt_year"$>
<$mt:Date format="%j" setvar="rebuilt_date"$>
<$MTEntryDate format="%Y" setvar="entry_year"$>
<$MTEntryDate format="%j" setvar="entry_date"$>
<$MTSetVar name="rebuilt_year" op="*" value="365"$>
<$MTSetVar name="entry_year" op="*" value="365"$>
<$MTSetVar name="rebuilt_date" op="+" value="$rebuilt_year" $>
<$MTSetVar name="entry_date" op="+" value="$entry_year" $>

<MTIf name="entry_date" value="30" op="+" gt="$rebuilt_date">
<img src="badge_new.gif" />
</MTIf>

年初からの日を、3桁の数字で取得←ここがポイント

$mt:Date タグで、再構築した日付がとれます。普通だと、YYYYMMDD形式で取りたいところですが、これだと足し算とか引き算とか非常に面倒でダメです。

年と日付を別々に取得します。日付の取得が大事で、フォーマットを、%j で取得します。そうすると、年初からの日を、3桁の数字で得ることができます。

$MTEntryDate タグでブログ記事の公開日が取得できます。こちらも年と日付を別々に取得します。
(ちなみに$MTEntryModifiedDate タグで記事の更新日が取得できます。)

年に365を掛けて日付に単位を揃えます。今回は2つの日付の比較なので、それまでのうるう年を両方無視しても得られえる値は同じなので、問題なしです。

で、それぞれ紀元からの再構築日と更新日が、比較には正確な形で得ることができます。

MTIfタグに、value=”日数” op=”+” をつけて、その日数期間を過ぎるまでを条件にすれば、その間の更新はifブロック内の記述を実行し、表示非表示が叶うことになります。

コメント

タイトルとURLをコピーしました