モンスターカレンダー

« 2014年1月
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

PHPの最近のブログ記事

イベントなどが終了したら表示を変えたい。よくあることです。
これを、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
なんかを見るとわかりやすいと思います。




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