バージョン選択

フォーラム

メニュー

オンライン状況

84 人のユーザが現在オンラインです。 (78 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 84
もっと...

サイト内検索

質問 > 管理機能 > 注文確認メールに年齢表示

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
GonGon
投稿日時: 2013/6/5 15:03
対応状況: −−−
常連
登録日: 2008/7/10
居住地: 東京都
投稿: 64
注文確認メールに年齢表示
注文確認メールに年齢表示をしたいのですが、
下記を参考に生年月日の表示までは出来たのですが年齢がうまく表示されません。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=12322&forum=10

order_mail.tplに下記を追加したのですが、エラーになってしまいます。
年齢:<!--{(int)date('Ymd')-$arrOrder.order_birth|escape|strtotime|date_format:"%Y%m%d"/10000}-->

ご教示の程、よろしくお願いいたします。
cohki
投稿日時: 2013/6/5 15:56
対応状況: −−−
一人前
登録日: 2013/4/15
居住地:
投稿: 133
Re: 注文確認メールに年齢表示
エラーはどのようになっていますでしょうか。

また、Smartyのエラーログではあまりロジカルな構文を書くと分析しづらいので、
一旦php側で年齢計算されて出力してみてはいかがでしょう。
red
投稿日時: 2013/6/5 16:23
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1570
Re: 注文確認メールに年齢表示
smartyで計算をする場合はmathを使わないとダメじゃないかと思います
http://www.smarty.net/docsv2/ja/language.function.math.tpl

また(int) date() のような書き方はsmartyでは出来ませんのでどうしてもテンプレート上でやりたい場合は
<!--{php}-->
ここにphpを書く
<!--{/php}-->
で解決したほうがいいんじゃないかと


----------------
EC-CUBEのカスタマイズ、トラブル解決承ります
お気軽にお問い合わせ下さい
https://www.ec-cube.net/integrate/partner/partner.php?partner_id=690

GonGon
投稿日時: 2013/6/5 20:29
対応状況: −−−
常連
登録日: 2008/7/10
居住地: 東京都
投稿: 64
Re: 注文確認メールに年齢表示
ご指摘ありがとうございます。

PHPにて記載することにしたのですが、下記内容でエラーが出てしまいます。

<!--{php}-->
$now = date('Ymd');
$birth = $arrOrder.order_birth|escape|strtotime|date_format:"%Y%m%d";
print floor(($now-$birth)/10000) . "才";
<!--{/php}-->

下記の方法だとうまく表示されるので、
$birth = $arrOrder.order_birth|escape|strtotime|date_format:"%Y%m%d";
部分がおかしいとは思うのですが、再度ご教示頂けないでしょうか。

<!--{php}-->
$now = date('Ymd');
$birth = "19700101";
print floor(($now-$birth)/10000) . "才";
<!--{/php}-->

よろしくお願いいたします。

EC-CUBEバージョン 2.11.5
PHPバージョン PHP 5.3.10
DBバージョン MySQL 5.5.21
bratech
投稿日時: 2013/6/5 23:23
対応状況: −−−
長老
登録日: 2008/11/28
居住地: 福岡
投稿: 223
Re: 注文確認メールに年齢表示
SmartyとPHPの記述がごちゃまぜ状態になってしまっていますね。

引用:


<!--{php}-->
$now = date('Ymd');
$birth = $arrOrder.order_birth|escape|strtotime|date_format:"%Y%m%d";
print floor(($now-$birth)/10000) . "才";
<!--{/php}-->



PHPの記述方法では


$birth = date('Ymd',strtotime($arrOrder['order_birth']));


こんな感じになります。

年齢の求め方が正しいかどうかまでは確認していないので何ともいえません。

ご参考まで。


----------------
★売れる通販サイト作ります! ========================
(株)ブラテック EC-CUBEカスタマイズサービス
http://www.bratech.co.jp/lpo/eccube.html
==============================================

GonGon
投稿日時: 2013/6/6 0:11
対応状況: −−−
常連
登録日: 2008/7/10
居住地: 東京都
投稿: 64
Re: 注文確認メールに年齢表示
bratech さん

ありがとうございます。
お教え頂いた方法に変更したところ、エラーは出なくなりました。
しかしながら、
$birth = date('Ymd',strtotime($arrOrder['order_birth']));

の返り値が、登録の生年月日とは関係なく19700101になってしまいます。

度々で恐縮なのですが、対処方法をご教示頂けないでしょうか。

どうぞよろしくお願いいたします。
bratech
投稿日時: 2013/6/6 1:02
対応状況: −−−
長老
登録日: 2008/11/28
居住地: 福岡
投稿: 223
Re: 注文確認メールに年齢表示
おそらく

$arrOrder['order_birth']

この部分に値が入っていないのだと思います。
<!--{php}-->を使用して記述するのであれば
まずは$arrOrderを使用できるようにしないとダメなのではないでしょうか。

その方法が分からないという場合は
cohki様やred様がご提案されているようにphp側で処理するか
smartyを使用するならmathを利用するのが良いかと思います。


----------------
★売れる通販サイト作ります! ========================
(株)ブラテック EC-CUBEカスタマイズサービス
http://www.bratech.co.jp/lpo/eccube.html
==============================================

GonGon
投稿日時: 2013/6/10 23:02
対応状況: −−−
常連
登録日: 2008/7/10
居住地: 東京都
投稿: 64
Re: 注文確認メールに年齢表示
cohki 様
red 様
bratech 様

ありがとうございます。

mathを利用して無事年齢表示が出来ました。

<!--{math equation="(x - y) / 10000|floor" x=$smarty.now|date_format:"%Y%m%d" y=$arrOrder.order_birth|escape|strtotime|date_format:"%Y%m%d"}-->

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,856名です
総投稿数は109,989件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.