質問 > フロント機能 > 商品一覧上での$表示と¥表示を両方出したいのですが・・・ |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
HaleHawaii |
投稿日時: 2010/10/28 13:50
対応状況: −−−
|
半人前 登録日: 2010/10/28 居住地: ハワイ 投稿: 11 |
商品一覧上での$表示と¥表示を両方出したいのですが・・・ はじめまして、これからec cubeをベースにしてオンラインショップを開店しようとしているものです。
初めに・・・ 開発者の方々・・とても使いやすいCMSをオープンソースとして利用させていただいてありがとうございます!そしてフォーラム上でのたくさんの投稿から、本当に自分の思うようにカスタマイズを出来てきております。 私が用意しているのは$での表示、決済をしているショップなのですが、ターゲットはあくまでも日本なので、$の金額の下の方に¥の金額を同時に表示させてみたいのです。 商品詳細画面は何とか出来たのですが、商品一覧のページではうまく配列を編集する事が出来ず困っております・・・ PHPでのプログラミングは初心者を少し卒業しかけている程度です。 自分の環境は サーバー側が ec cube2.4.3 php5.2.9です rapidsiteのvpsを使用しております。 ローカルの環境はxamppで 開発の環境はeclips+zendデバッガでステップ実行できます。 現在問題なく動いているように見える商品の詳細画面ですが ¥の為替相場を取得してDBのdtb_baseinfoに¥を格納する項目を追加してそこを読むようにしています。 次にarrProductのprice02_minをとりだし単純に掛け算しているだけですが、ソースはこんな感じで現在無事に動いております。 おそらく変な感じかもしれませんが・・・すいません。 LC_Page_Products_Detail.phpの function process()の最後のほうにある$this->lfConvertParam();の直前に //$から¥への変換 $this->objSiteInfo = new SC_SiteInfo(); $arrSiteInfo = $this->objSiteInfo->data; $yen = $arrSiteInfo["yen"]; $doller = $this->arrProduct["price02_min"]; $this->yen = $yen * $doller; と記述しております。 フォーラムにもありました、商品詳細画面での商品表示を一列につき4行で表示させるカスタマイズをしているのですが、そのためデザインテンプレート側でセクション関数を使用しています。 いろいろと自分で試行錯誤して考えた結果、計算した結果をarrProductsの中に$this->arrProduct["yen"] = $yen * $doller; という感じで格納してあげるともしかしたらいいのかなーと簡単に考えてしまいました。 商品一覧の時にはLC_Page_Products_List.phpを編集しておりましたが、デバッグするとarrProductsの中にはprice02_minがないです・・と言われてしまします。 540行目付近の // 検索結果の取得 $this->arrProducts = $objQuery->select($col, $from, $where, $arrval_order); // ▲商品詳細取得 の直後にいろいろ書き換えて書いたりしてみましたが、だめでした。というか解らないというところで現在停止しています。 また、テンプレート上でのmath関数を使用する事を考えましたが、調べるとセクション関数を使って多数の情報を処理するには効率が良くないから、php側で計算させるようにしてくださいと書いてあったので、断念しました。 いろいろとec cubeのカスタマイズを通して勉強させていただいておりますが、未熟者です。どうか皆さま知恵をお貸しいただけないでしょうか? |
sumkjr |
投稿日時: 2010/10/28 15:47
対応状況: −−−
|
一人前 登録日: 2010/10/8 居住地: 投稿: 103 |
Re: 商品一覧上での$表示と¥表示を両方出したいのですが・・・ 私は2.4.1を使っていますが、
<!--{debug}--> を使えるようにして商品検索したところ、price02_minに値は入っています。 どの時点で値が取れなくなっているかを特定することが重要だと思います。 ステップ実行できるのであれば、なお簡単に見つかるのではないかと思います。 DBから値を取得した瞬間はちゃんと値は取れていますか? |
AMUAMU |
投稿日時: 2010/10/28 16:03
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 商品一覧上での$表示と¥表示を両方出したいのですが・・・ 引用:
540行目付近の その直後に、var_dump($this->arrProducts); 等と書いてみて、どのように配列に格納されているか、イメージ通りに格納されているか確認されると良いと思います。
|
HaleHawaii |
投稿日時: 2010/10/28 17:37
対応状況: −−−
|
半人前 登録日: 2010/10/28 居住地: ハワイ 投稿: 11 |
Re: 商品一覧上での$表示と¥表示を両方出したいのですが・・・ 早々にお返事ありがとうございます!
よくよく考えると、本当にお恥ずかしい話ですが、実行しているページをステップしている時にarrProductsが見えなかったかというと、そもそも見えない状況だったんですね・・・ というわけで、DBからデータを取る際に$arrProductsに入れた後に$this->arrProducts = $arrProducts;という感じで大丈夫そうです。 しかし・・・・これはec cube以前の問題ですが、階層というか・・・$arrProductsを開くと、一番最初に一つ目の商品、そしてそれを開くと商品のデータが入っており、そうなると当然$arrProducts["price02_min"];なんていうのは存在しないし、もし自分が最初思い描いたように、テンプレートの方から$arrProducts.yenとして見えるようにするには、それぞれの商品の中に"yen"という項目を作りそこに計算したデータを入れていくという形になるのでしょうか・・・・ for文などでそこの処理をするような気がしますが、どうでしょうか? 勉強の為出来るだけ自分でやってみます! // 検索結果の取得 $arrProducts = $objQuery->select($col, $from, $where, $arrval_order); //円を作成 $this->objSiteInfo = new SC_SiteInfo(); $arrSiteInfo = $this->objSiteInfo->data; $yen = $arrSiteInfo["yen"]; $doller = $arrProducts["price02_min"]; $this->yen = $yen * $doller; $this->arrProducts = $arrProducts; // ▲商品詳細取得 コードについての文中に適切な表現が含まれていないかもしれませんが、勉強中の身なので、いくらでもお叱りを受けます!気がついた点などございましたら、お気を使わずにお願いします・・・ |
HaleHawaii |
投稿日時: 2010/10/28 17:47
対応状況: −−−
|
半人前 登録日: 2010/10/28 居住地: ハワイ 投稿: 11 |
Re: 商品一覧上での$表示と¥表示を両方出したいのですが・・・ お返事ありがとうございます!
おかげさまで配列がどのように作られているか、そして自分が書いているコードでなぜ値を取得できないのか解りました。 配列の構成がわかった今、配列内の階層というか、そういったところのデータの取得&計算処理の部分を作成するために配列について調べています・・・ また、自分なりにやってみて皆さんにチェックしてもらえるようにがんばってみます。 働いて、家族も出来て勉強する事も自由にはならないなか、本当に学生の頃に皆に言われていた「勉強は今しかできないよ」って言葉思い出します。 基本的なプログラミングについて一から勉強したいです・・ |
HaleHawaii |
投稿日時: 2010/10/28 19:10
対応状況: −−−
|
半人前 登録日: 2010/10/28 居住地: ハワイ 投稿: 11 |
Re: 商品一覧上での$表示と¥表示を両方出したいのですが・・・ 自己レスになりますが、一応なんとなくですが、解決したような気がするので、コード出してみます。
// 検索結果の取得 $arrProducts = $objQuery->select($col, $from, $where, $arrval_order); //円の取得 $this->objSiteInfo = new SC_SiteInfo(); $arrSiteInfo = $this->objSiteInfo->data; $yen = $arrSiteInfo["yen"]; //金額を取得してarrProduct.yenに格納 for ($i =0 ; $i <count($arrProducts); $i++){ $doller = $arrProducts[$i]["price02_min"]; $yenTemp = $yen * $doller; $arrProducts[$i]["yen"] = $yenTemp; } $this->arrProducts = $arrProducts; // ▲商品詳細取得 という感じで今のところ問題なく表示はされていますが、皆さまの目から見ておかしい感じなどありますでしょうか? プログラミングの常識なども知らぬゆえ、めちゃくちゃな記述をしてしまっている時があるので・・・・ とりあえずご回答いただいた方々、本当にありがとうございます。 ヒントを与えていただいた事でとりあえず表示はされるようになりました。 これからも日々勉強していきますので、またぶつかってしまった時は、ヒントをください!ありがとうございました! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |