質問 > フロント機能 > 前ページの情報(価格)の取得について |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
spgo |
投稿日時: 2013/2/21 2:48
対応状況: −−−
|
一人前 登録日: 2011/6/30 居住地: 投稿: 73 |
前ページの情報(価格)の取得について 環境
eccube 2.12.0-beta2 MySQL 5.0.77 PHP 5.2.9 いつもお世話になっております。どなたかご教授頂くことは可能でありますでしょうか。 円とドルの表示を考えております。 トップページで円かドルかでの表示の選択をできるように(は)致しました。 ご質問させて頂きたい事は、 トップページでドルを選択し、商品をクリックし、商品詳細ページに進んだ際、 通常ですと、商品詳細ページではデフォルトの円の販売価格である(price02)が表示されますが、 今回の様にトップページでドル(price03:作成済み)を選択した場合、次ページである商品詳細ページでも自動的にドルが表示される様にするにするにはどの様な設定が必要になるかアドバイス等頂くことは可能でしょうか。 *とりあえず試した方法。結果はエラーはでませんが、$0と表示されます。(明らかに不足しているステップがあると思いますのでアドバイスを、あるいは他のやり方をご教授いただければ幸いです。) ? トップページにcurrency_idで通貨を選択できるプルダウンメニューを商品検索ブロックをコピーして作成。(ドル(price03,currency_id)用にdb,tpl,classfile,phpなどを追加・修正) ? LC_Page_Products_Detail.php内に以下を記述。 // 前頁のcurrency_idを記録しておく function setPrevCurrency_id($currency_id, $excludePaths = array()) { // 前頁として記録しないページを指定する。 $arrExclude = array( '/shopping, cart,/' ); $arrExclude = array_merge($arrExclude, $excludePaths); $exclude = false; // ページチェックを行う。 foreach ($arrExclude as $val) { if (preg_match('|' . preg_quote($val) . '|', $currency_id)) { $exclude = true; break; } } // 除外ページでない場合は、前頁として記録する。 if (!$exclude) { $_SESSION['prev_currency_id'] = $currency_id; } } /* 前頁のcurrency_idを取得する */ function getPrevCurrency() { return isset($_SESSION['prev_currency_id']) ? $_SESSION['prev_currency_id'] : ''; } ? 管理者画面/デザイン/PC/ページ詳細設定から商品詳細ページを選択し以下を記述。 <!--{assign var=price02 value=`$arrProducts[cnt].price02_min`}--> <!--{assign var=price03 value=`$arrProducts[cnt].price03_min`}--> <!--{if $smarty.get.prev_currency_id == 3}--><p class="sale_price"><span class="dl" >$<!--{$price03|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}--></span> </p> <!--{else}--><p class="sale_price"><span class="dl" ><!--{$price02|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->円</span> </p> <!--{/if}--> |
bratech |
投稿日時: 2013/2/22 23:58
対応状況: −−−
|
長老 登録日: 2008/11/28 居住地: 福岡 投稿: 223 |
Re: 前ページの情報(価格)の取得について ?のテンプレート記述で$0と表示されているのであれば
前ページからの円・ドル表記の設定は引き継がれていると思います。 おそらく詳細画面にprice03が割り当てられていないのではないでしょうか。 SC_Product内の alldtlSQL関数あたりに手を加えるといいような気がします。 ご参考まで。
|
spgo |
投稿日時: 2013/2/23 16:17
対応状況: −−−
|
一人前 登録日: 2011/6/30 居住地: 投稿: 73 |
Re: 前ページの情報(価格)の取得について bratech様
ご教授頂きまして感謝致します。 前回記述した結果についてなのですが、$0ではなく、0円と表示されるの間違いでした。 申し訳ございません。 つまり、?のページ詳細設定の以下の部分を、ドルが選択されたにもかかわらず、読み込んだ結果なのかなと推測しております。 <!--{else}--><p class="sale_price"><span class="dl" ><!--{$price02|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->円</span> </p> (勿論商品詳細ページのデフォルト設定ではprice02の金額が表示されるところが、この条件式ではprice02の金額が0になります。) ということはドル選択時に本来機能すべき以下の記述が機能していないことなのかなとも推測しております。 <!--{if $smarty.get.prev_currency_id == 3}--><p class="sale_price"><span class="dl" >$<!--{$price03|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}--></span> </p> ご指摘がありましたSC_Product内のalldtlSQL関数にはprice03に関する内容をprice02同様に記述しております。 ただ通常ですとエラーの一つや二つ出てもおかしくないところですが、エラーが出ません。 やはり、やり方が根本から間違っているのでしょうか、あるいは?のprev_currency_idの取得に関する記述か、?の記述自体が、このステップが全く機能していないことを考えると、間違っているのでしょうか。 何かご意見、ご教授等何卒宜しくお願い申し上げます。 |
bratech |
投稿日時: 2013/2/23 22:34
対応状況: −−−
|
長老 登録日: 2008/11/28 居住地: 福岡 投稿: 223 |
Re: 前ページの情報(価格)の取得について 円の表記になっているという事はcurrent_idの取得も出来ていないという事だと思います。
取得したidを記録する処理は?に記述されていますが、そもそもどのようにして詳細ページにcurrent_idを送っているのでしょうか? 一般的にはGETもしくはPOSTで送信する方法だと思いますが、その部分がうまく動作していないのではないでしょうか? 確認する順序としまして 詳細画面にcurrent_idが送られているか(取得できるか)? という点から確認されるのが良いかと思います。
|
spgo |
投稿日時: 2013/2/25 18:46
対応状況: −−−
|
一人前 登録日: 2011/6/30 居住地: 投稿: 73 |
Re: 前ページの情報(価格)の取得について bratech様
ご教授頂きまして感謝致します。ありがとうございます。以下の設定の様に前ページでドルのcurrency_idが選ばれたなら商品詳細ページで?のgetPrevCurrency()が動き、ドル表示とするというつもりなのですが、動作せず、現在は円(price02)の価格を円マークとともに表示しております。(つまり設定が機能しておりません。<!--{else}-->の部分が読まれています。) 前ページのcurrency_idが取得できていないと思われます。以下の設定につきまして何かアドバイス等ありますでしょうか。 ?デザイン管理>PC>ページ詳細設定>商品詳細ページ <!--{if $smarty.get.prev_currency_id == 2}--><p class="sale_price"><span class="dl" >$<!--{$arrProduct.price03_min_inctax|number_format}--></span> </p> <!--{else}--><p class="sale_price"><span class="dl" ><!--{$arrProduct.price02_min_inctax|number_format}-->円</span> </p> <!--{/if}--> ?LC_Page_Products_Detail.php function action() { //前ページのcurrency_idの記録 $this->smarty = $this->setPrevCurrency(); //前ページのcurrency_idの表示 $this->smarty = $this->getPrevCurrency(); } // 前頁のcurrency_idを記録しておく function setPrevCurrency($currency_id, $excludePaths = array()) { // 前頁として記録しないページを指定する。 $arrExclude = array( '/shopping/' ); $arrExclude = array_merge($arrExclude, $excludePaths); $exclude = false; // ページチェックを行う。 foreach ($arrExclude as $val) { if (preg_match('|' . preg_quote($val) . '|', $currency_id)) { $exclude = true; break; } } // 除外ページでない場合は、前頁として記録する。 if (!$exclude) { $_SESSION['prev_currency_id'] = $currency_id; } } /* 前頁のcurrency_idを取得する */ function getPrevCurrency() { return isset($_SESSION['prev_currency_id']) ? $_SESSION['prev_currency_id'] : ''; } |
bratech |
投稿日時: 2013/2/25 20:30
対応状況: −−−
|
長老 登録日: 2008/11/28 居住地: 福岡 投稿: 223 |
Re: 前ページの情報(価格)の取得について すいません。
私の書き方が紛らわしかったかもしれません。 ?トップページで円・ドルを選択 ?詳細画面で円・ドルフラグを受け取る ?詳細画面に?のフラグを利用して円orドルの表記を切り替える おおまかには上記の流れだと思うのですが トップページでの実装は行われたとありますが そのトップページの処理内容はどのようになっているかというご質問でした。 つまり、トップページから詳細画面に対して円・ドルフラグ(currency_id)が渡るようになっているかをまずは確認されるのが先決だと思います。 ちなみに?について 引用:
この記述であればトップページから詳細ページへ向けてGETを利用してprev_currency_idを送信していなければなりません。 例えば shop_url/products/detail.php?product_id=○&prev_currency_id=2 といった具合です。 さらに言えば、?の記述内容であれば?の処理は必要ない処理になっていると思います。 (セッションに保存した内容を以降の処理で利用されたい等のお考えがあるのであれば別です) 参考になれば幸いです。
|
spgo |
投稿日時: 2013/3/1 7:57
対応状況: −−−
|
一人前 登録日: 2011/6/30 居住地: 投稿: 73 |
Re: 前ページの情報(価格)の取得について Bratech様
大変有益な情報を頂きまして心より感謝致します。 bratech様のおっしゃる通り商品詳細ページに関する限り、?の情報は必要ございませんでした。必要以上に難しく考えておりました。 ご指摘を受けて以来いろいろと試しておりましたが、bratech様からのご指摘のとおりトップページからprev_currency_idを送信する方法で解決できました。素晴らしいです。 難解かつ分かりづらい質問にもかかわらず懇切丁寧にご教授頂きまして本当にありがとうございます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |