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ブロック内の記述を実行し、表示非表示が叶うことになります。
コメント