発売日で予約、発売中の表示を振り分けたい  【解決済み】

質問全般・改善要望
返信する
アバター
min-o
メンバー
メンバー
記事: 324
登録日時: 2009年10月07日(水) 18:32

発売日で予約、発売中の表示を振り分けたい

投稿記事 by min-o »

-----
ご利用のサーバ: さくらインターネット ビジネスプロ
MODXのバージョン:  1.0.6J-r8
PHPのバージョン:   PHP 5.2.17
MySQLのバージョン: 5.5.28-log
ブラウザ: firefox 17(win xp/mac)
-----

いつもお世話になっております。
またphx関係です。

商品案内のページで、テンプレート変数[*発売日*] を作り、ウィジェット Unixtime にしました。
発売日より前は 「予約受付中」 発売日から30日は 「好評発売中」 と表示したいのです。

まず、予約受付中の処理を作ろうとしたのですが、いきなりうまく行きません。

[*発売日:gt=`time()`:then=`予約受付中`:else=``*]
これで発売日が現在時刻より大きいとき、という意味だと思うのですが、発売日が過去、未来どちらも「予約受付中」と表示されます。

30日のほうも
[*phx:if=`[*発売日*]`:lt=`time()`:and:`[*発売日:math=`?+60*60*24*30`*]`:gt=`time()`:then=`好評発売中`:else=``*]
と書いてみたのですが、うまくいきません。 
どこが間違っているか、ご教授ください。

また、いままで[*発売日*]はDateFormatter を使って
%Y年%m月%d日(%a)発売
としていたのですが、今回Unixtimeに変更したので、

[*発売日:date=`%Y年%m月%d日(%a)発売`*]

としたところ、(%a)がDateFormatterでは(水)でしたが、(Wed)と英語表記になりました。
(水)にするには、カスタムモデファイが必要なのでしょうか?

よろしくお願いいたします。
---------
おのうちみん
http://scifitique.org/
http://gender-sf.org/
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: 発売日で予約、発売中の表示を振り分けたい

投稿記事 by yama »

コード: 全て選択

<?php
$today = time();
$after30 = $value + (60*60*24*30);
$wds = array('日','月','火','水','木','金','土');
$wd = $wds[date('w',$value)];
if($today < $value)       return '発売前';
elseif($today < $after30) return '好評発売中';
else                      return date('Y年m月d日',$value) . "({$wd})";
?>
上記のようなモディファイアをphx:モディファイア名というスニペットとして作り、
[*発売日:モディファイア名*]
としてみるとどうでしょう?

http://130124141400-1949.evo.demo.modx.jp/manager/
アバター
min-o
メンバー
メンバー
記事: 324
登録日時: 2009年10月07日(水) 18:32

Re: 発売日で予約、発売中の表示を振り分けたい

投稿記事 by min-o »

いつもありがとうございます。

いただいたスニペットで判定はできたのですが、
returnの後、出力部分をタグで囲むとうまきいきません。
return '<p class="prodact_date_txt">好評発売中!</p>';
は問題なかったのですが
return date('Y年m月d日',$value) . "({$wd})発売";
この部分にタグをつけるとエラーになります。

"や’など、やってみたのですがダメでした。
すごく初歩的な質問ですいません…orz
---------
おのうちみん
http://scifitique.org/
http://gender-sf.org/
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: 発売日で予約、発売中の表示を振り分けたい

投稿記事 by yama »

コード: 全て選択

<?php
$today = time();
$after30 = $value + (60*60*24*30);
$wds = array('日','月','火','水','木','金','土');
$wd = $wds[date('w',$value)];
if($today < $value)       return '発売前';
elseif($today < $after30) return '<p class="prodact_date_txt">好評発売中!</p>';
else                      return '<p class="prodact_date_txt">' . date('Y年m月d日',$value) . "({$wd})</p>" ;
?>
こちらだとどうでしょう?
アバター
min-o
メンバー
メンバー
記事: 324
登録日時: 2009年10月07日(水) 18:32

Re: 発売日で予約、発売中の表示を振り分けたい  【解決済み】

投稿記事 by min-o »

できましたー!

ありがとうございます。
. で処理を分けるのですね。覚えておきます。
---------
おのうちみん
http://scifitique.org/
http://gender-sf.org/
返信する