<![CDATA[ スニペット:CountDown(カウントダウンとメッセージ(画像可)を挿入) - My Forums]]> https://forums.modx.com/thread/?thread=56322 <![CDATA[&#12473;&#12491;&#12506;&#12483;&#12488;&#65306;CountDown&#65288;&#12459;&#12454;&#12531;&#12488;&#12480;&#12454;&#12531;&#12392;&#12513;&#12483;&#12475;&#12540;&#12472;&#65288;&#30011;&#20687;&#21487;&#65289;&#12434;&#25407;&#20837;&#65289;]]> https://forums.modx.com/thread/56322/countdown#dis-post-330665 ので、間違いも多くあるかも知れません。間違いがありましたら、どうぞ、ご指摘下さい。
また、書いてある内容を試す場合は、自己責任でお願い致します。

尚サンプルは、こちらに書き出しています。
http://www.liolion.info/modx/resource/countdown.html

テスト環境:
サーバ:さくらインターネット
 PHP 4.4.4
 MYSQL 4.0.27
MODX:0.9.5
AntispamEmail (1.0)

概要
CountDownは、指定した日(基準日)までの日数を表示します。残り日数によってメッセージを変更できます。
またメッセージはチャンクを使い独自に指定できます。チャンクに画像を指定すればバナーチェンジャーとしても利用できます。

コード:
/*
* CountDown Ver.0.3
* Developed By ZeRo(http://www.petit-power.com/)
* Produced By MEGU(http://www.liolion.info/)
* 
* event_chunk_data:
* 0 => "Today!",1 => "Tomorrow!",7 => "One week!"
*/
$msg = isset($msg) ? $modx->getChunk($msg):"Countdown %d days";
$outmsg = isset($outmsg) ? $modx->getChunk($outmsg):"";
$event_data = $modx->getChunk($event);
$e = "\$evt = array(".$event_data.");";
eval($e);
list($year,$mon,$day) = sscanf($end_date,"%04d/%02d/%02d");
$targetDate = mktime(0,0,0,$mon,$day,$year);
$seq = ($targetDate - mktime(0,0,0,date("m"),date("d"),date("Y")))/86400;
$seq = intval($seq);
if ($seq < 0)
{ $output = $outmsg;
} else
{
if (isset($evt[$seq]))
{ $output = $evt[$seq];
} else
{ $output = $msg;
}
}
return sprintf($output,$seq);

基本的な書式:
[!CountDown? &end_date=`2007/05/09`!]

パラメータ

 end_date
 基準日を指定します。この日に向かってカウントダウンします。

 msg
 表示させたいメッセージをチャンクで指定します。デフォルト「Countdown %d days 」

 event
 残りの日数によって変更するメッセージをチャンクで指定します。デフォルト「なし」。
 基準日(当日)はカウント「0」が表示されるので、サンプル(後述)のように「発売日まであと×日です」などとする場合は、
 このパラメータで「0」の場合のメッセージを指定しておくと良いでしょう。

 outmsg
 基準日を過ぎた場合のメッセージをチャンクで指定する。デフォルトなし。
 指定しなければ、基準日を越えた時点でメッセージは表示されなくなります。

サンプル1:

 スニペットコールサンプル:
 [!CountDown? &end_date=`2007/05/09` &msg=`cd_msg` &event=`cd_evnmsg` &outmsg=`cd_outmsg`!]
 cd_msg:
 <p>発売日まで あと%d日</p>
 cd_evnmsg:
 0 => "<p>本日発売です</p>",1 => "<p>明日発売です</p>"
 cd_outmsg:
 <p>ただいま発売中です</p>

サンプル2:
画像を利用することも可能です。

 msg で呼ぶチャンクサンプル
 <p><img src="image1 URL" /></p>
 event で呼ぶチャンクサンプル
 0 => ’<p><img src="image2 URL" /></p>’,1 => ’<p>明日発売です<img src="image3 URL" /></p>’
  ※値を囲むクォーテーションに注意して下さい※
 outmsg で呼ぶチャンクサンプル
 <p><img src="image4 URL" /></p>

 指定日を越えた時点で画像を入れ替える
 スニペットコールサンプル
 [!CountDown? &end_date=`2007/04/25` &msg=`cd_msgimg` &outmsg=`cd_outmsgimg`!]
 アウトプットサンプルはこちら
 http://www.liolion.info/modx/resource/countdown.html#sample02
 
 
]]>
MEGU Apr 22, 2007, 08:14 AM https://forums.modx.com/thread/56322/countdown#dis-post-330665