モンスターカレンダー

« 2008年8月 »
12345678910111213141516171819202122232425262728293031

MT4 カスタムフィールドで日時を取得

| コメント(0) | トラックバック(0)
イベントなどが終了したら表示を変えたい。よくあることです。
これを、php化したMT4でやってみました。

エントリー時に終了日時をあらかじめ入れておきます。
アクセスした時に、これを過ぎていれば終了と表示を出すことにします。

終了日時はカスタムフィールドで記入するようにします。
今回は時間はなしで、簡単に年月日だけで比較することにします。

設定を日付と時間にしたんですが、こうするとformat="%Y%m%dなどが効かないので、
表示は2008年8月15日というようになってしまうため、日付の比較ができません。
(実はこれがわからずかなり悩んだ)

テキストにして20080815などと入れてもらってもかまわないのですが
それじゃあんまりなので、ちょっと面倒ですがドロップダウンを使用しました。

年、月、日ごとにカスタムフィールドを設定します。
月日は全部二桁で01、02とします。

各フィールド名をDateY、DateM、DateDとします。


<?php
$enddate = ('<$MT
DateY$><$MTDateM$><$MTDateD$>'); //申込終了日時を取得
$today = date(Ymd); // 今日の日付を取得
if( $enddate >= $today )
print <<< EOD
終了前に表示したい内容
ここはインデントしないで
ここはインデントしないで
EOD;
}
else {
{
print <<< EOD
終了後に表示したい内容
ここはインデントしないで
ここはインデントしないで
EOD;
}
?>

このような感じです。

一応説明をば。

$enddate = ('<$MTDateY$><$MTDateM$><$MTDateD$>');
$enddateという変数に終了の年月日を入れています。
終了年月日=20080815

$today = date(Ymd);
今日の日付をdate関数で取得しています。Ymdで年月日を取得
今日=20080817

if( $enddate >= $today ) 
20080815と20080817どちらが大きいかを比較しています。
この場合、今日の日付の方が大きいのでelse以下、つまり終了後の
内容を表示するということになります。
もし、終了日と今日の日付が同じ場合は終了後の表示になります。
同じ場合は終了前にしたいときは「>=」の部分を「>」だけにしてください。

表示したい内容が短いものの場合は

print <<< EOD
終了前に表示したい内容
ここはインデントしないで
ここはインデントしないで
EOD;

ここを

print "短い文章";

としてもOKです。

ちなみに「ここはインデントしないで」の理由などは
http://nyx.pu1.net/reference/basic/character.html
なんかを見るとわかりやすいと思います。




これであってるよな......と、心配で何度も読み返す。

トラックバック(0)

トラックバックURL: http://www.nattydesign.com/mt5/mt-tb.cgi/32

コメントする