PHPUtilプラグイン(その3・日時関係の処理)

PHPUtilプラグインでは、ページにアクセスがあった日時を元にして、出力を変えるテンプレートタグもあります。
それらについて解説します。

1.MTPHPDateタグ

MTPHPDateタグは、ページにアクセスがあった日時を出力するテンプレートタグ(ファンクションタグ)です。
Movable Type標準の日付系テンプレートタグと同様に、formatモディファイアで出力をカスタマイズすることができます。

例えば、「現在の日時は〇〇年〇〇月〇〇日 〇〇時〇〇分〇〇秒です」のように出力したい場合、以下のようにテンプレートに記述します。

現在の日時は<$mt:PHPDate format="%Y年%m月%d日 %H時%M分%S秒"$>です

この部分を含むページを開くと、その都度現在の日時が表示されます。

2.MTPHPIfDateタグ

MTPHPIfDateタグは、現在の日時が一定期間内に入っているかどうかを調べ、入っていればタグのブロック内を出力するブロックタグです。

以下の4つのモディファイアで、日付の範囲を指定します。
また、日付は「20120123123456」のように、年は4桁、月/日/時/分/秒はそれぞれ2桁で指定します。

モディファイア判断する条件
lt="比較日時"現在の日時が比較日時より前(比較日時ちょうどは含まない)
gt="比較日時"現在の日時が比較日時より後(比較日時ちょうどは含まない)
le="比較日時"現在の日時が比較日時より前(比較日時ちょうども含む)
ge="比較日時"現在の日時が比較日時より後(比較日時ちょうども含む)

例えば、以下のように書くと、MTPHPIfDateタグのブロックの中身は、2012年3月1日より前の間だけ表示されます。

<mt:PHPIfDate lt="20120301000000">
2012年3月1日より前の時だけ表示する内容
</mt:PHPIfDate>

また、モディファイアを2つ指定して、一定期間内だけブロック内を表示するようにすることもできます。
例えば、以下のように書くと、MTPHPIfDateタグのブロックの中身は、2012年3月1日0時0分0秒から、2012年3月8日0時0分0秒になる直前の間だけ表示されます。

<mt:PHPIfDate ge="20120301000000" lt="20120308000000">
2012年3月1日0時0分0秒~2012年3月8日0時0分0秒の間だけ表示する内容
</mt:PHPIfDate>

なお、比較日時は、最後の秒から順に省略することができます。
時/分/秒を省略した場合は、「00」を指定したものとみなします。
また、日/月を省略した場合は、「01」を指定したものとみなします。

例えば、「<mt:PHPIfDate ge="201203" lt="201204">」と書くと、2012年3月1日0時0分0秒から、2012年4月1日0時0分0秒になる直前まで、つまり2012年3月中だけ、何かを出力することができます。

3.MTPHPIfDateDiffタグ

MTPHPIfDateDiffタグは、あるテンプレートタグの日時から現在の日時までの経過時間を調べ、それが一定範囲内に入っている時だけ、タグのブロック内を出力するブロックタグです。
書き方は以下のようになります。

<mt:PHPIfDateDiff tag="比較対象のテンプレートタグ" 比較モディファイア="経過時間">
条件を満たしている時に出力する内容
</mt:PHPIfDateDiff>

「比較対象のテンプレートタグ」には、現在の日時と比較したい日時を表すテンプレートタグ名を指定します。
ただし、先頭の「MT」は書きません。
例えば、ブログ記事の公開日時と現在の日時を比較したい場合、「tag="EntryDate"」と書きます。

「比較モディファイア」には、MTPHPIfDateタグと同様に、lt/gt/le/geのいずれか(またはそれらの中の2つ)を指定します。

また、経過時間は「1d」「3m」のような書き方で表します。「d」等の単位の意味は以下の通りです。
「1d12h」のように、複数の単位を並べて指定することもできます。

単位意味
w
d
h
m
s

例えば、ブログ記事を公開してから1週間だけ、「New」のマークを表示したいとします。
この場合、MTEntriesタグのブロックの中や、ブログ記事アーカイブテンプレートの中などで、Newのマークを出力したい位置に以下のようなタグを入れます。

<mt:PHPIfDateDiff tag="EntryDate" le="1w">
Newマークを出力するHTML
</mt:PHPIfDateDiff>

4.MTPHPElseタグ

MTPHPIfDate/MTPHPIfDateDiffタグで、条件を満たす時と満たさない時とで出力を分けたい場合は、MTPHPElseタグを使って以下のように書きます。

<mt:PHPIfDateまたはmt:PHPIfDateDiff ・・・>
条件を満たす時に出力する部分
<mt:PHPElse>
条件を見たさない時に出力する部分
</mt:PHPIfDateまたはmt:PHPIfDateDiff>

5.PHPUtilプラグイン関係の記事の一覧

PHPUtil関係のその他の記事は、以下のリンクから参照できます。