イベントなどが終了したら表示を変えたい。よくあることです。
これを、php化したMT4でやってみました。
エントリー時に終了日時をあらかじめ入れておきます。
アクセスした時に、これを過ぎていれば終了と表示を出すことにします。
終了日時はカスタムフィールドで記入するようにします。
今回は時間はなしで、簡単に年月日だけで比較することにします。
設定を日付と時間にしたんですが、こうするとformat="%Y%m%dなどが効かないので、
表示は2008年8月15日というようになってしまうため、日付の比較ができません。
(実はこれがわからずかなり悩んだ)
テキストにして20080815などと入れてもらってもかまわないのですが
それじゃあんまりなので、ちょっと面倒ですがドロップダウンを使用しました。
年、月、日ごとにカスタムフィールドを設定します。
月日は全部二桁で01、02とします。
各フィールド名をDateY、DateM、DateDとします。
これを、php化したMT4でやってみました。
エントリー時に終了日時をあらかじめ入れておきます。
アクセスした時に、これを過ぎていれば終了と表示を出すことにします。
終了日時はカスタムフィールドで記入するようにします。
今回は時間はなしで、簡単に年月日だけで比較することにします。
設定を日付と時間にしたんですが、こうするとformat="%Y%m%dなどが効かないので、
表示は2008年8月15日というようになってしまうため、日付の比較ができません。
(実はこれがわからずかなり悩んだ)
テキストにして20080815などと入れてもらってもかまわないのですが
それじゃあんまりなので、ちょっと面倒ですがドロップダウンを使用しました。
年、月、日ごとにカスタムフィールドを設定します。
月日は全部二桁で01、02とします。
各フィールド名をDateY、DateM、DateDとします。
<?php
$enddate = ('<$MTDateY$><$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
なんかを見るとわかりやすいと思います。
これであってるよな......と、心配で何度も読み返す。