質問 > フロント機能 > 会員用割引項目を表示したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
r.m |
投稿日時: 2018/7/4 15:13
対応状況: −−−
|
半人前 登録日: 2018/7/4 居住地: 投稿: 27 |
会員用割引項目を表示したい EC-CUBE 2.13.5を使っております。
カスタマイズとして商品詳細画面に 会員専用割引項目を追加したいのですが、 方法がわかりません。 現在管理画面にて、データベースへの 割引率の反映までは完了していますが 商品詳細画面での割引を適用した状態での値段の表示方法が 方法が分かりません。 具体的にはsmarty文にて値段を表示させる際の方法が不明であり $arrProductへ割引後の値段を追加し表示させると考え 試行錯誤しましたが、不明でした。 よろしくお願いします。 |
468 |
投稿日時: 2018/7/5 0:48
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 会員用割引項目を表示したい 商品詳細ページであれば、
/data/class/pages/products/LC_Page_Products_Detail.phpの function action()の中で $this->arrProductに割引後の金額をセットする形になるかと思います。 $this->arrProduct['price03'] = 割引後の金額; (配列に新しいキーを追加します) テンプレート側では以下の記述で表示できると思います。 <!--{$arrProduct.price03|n2s}--> price03の箇所は、既に使われていないキーワードで自由に命名すれば良いかと思います。
|
r.m |
投稿日時: 2018/7/5 11:30
対応状況: −−−
|
半人前 登録日: 2018/7/4 居住地: 投稿: 27 |
Re: 会員用割引項目を表示したい 468様 ご返信ありがとうございます。
> $error[] = '';/data/class/pages/products/LC_Page_Products_Detail.phpの > function action()の中で > $this->arrProductに割引後の金額をセットする形になるかと思います。 > $this->arrProduct['price03'] = 割引後の金額; > (配列に新しいキーを追加します) 上記にて 金額がセットできることが確認できました。 ありがとうございます。 ですが、現在のカスタマイズの内容として 管理画面の商品登録画面で、会員割引率を設定し、 その数値を割引率とするようなカスタマイズをしています。 同画面でのポイント付与率のようなイメージです 現在管理画面での会員割引率の設定とdtbproductへの登録 までできている状態です。 ポイント付与率は同画面で変更し、arrProductの値が変化 していますが、上記arrProductのような動作がうまく実装できず 悩んでいます。 eccubeのカスタマイズの経験がほぼなく困り果てています。 申し訳ありませんが、参考情報等でもよいのでご教示お願いいたします。 |
468 |
投稿日時: 2018/7/5 11:39
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 会員用割引項目を表示したい 割引後の金額を算出するロジックの書き方が分からないという事でしょうか?
それともdtb_productに追加された会員割引率をDBから取り出してくる方法が分からないという事でしょうか?
|
r.m |
投稿日時: 2018/7/5 12:02
対応状況: −−−
|
半人前 登録日: 2018/7/4 居住地: 投稿: 27 |
Re: 会員用割引項目を表示したい 468様 ご返信ありがとうございます。
現在以下の方法での記載を考えています。 以下の内容間違っていれば、ロジックがわからない状態です。 <!--{if $smarty.const.MEMBER_DISCOUNT !== false}--> <dl class="sale_price">会員割引価格(税込) <dt><!--{$smarty.const.SALE_PRICE_TITLE}-->(税込):</dt> <dd class="price"> <span id="price02_default"><!--{strip}--> <!--{if $arrProduct.price02_min_inctax == $arrProduct.price02_max_inctax}--> <!--{$arrProduct.【会員割引適用後の値段(min)】|n2s}--> <!--{else}--> <!--{$arrProduct.【会員割引適用後の値段(min)】|n2s}-->~ <!--{$arrProduct.【会員割引適用後の値段(max)】|n2s}--> <!--{/if}--> <!--{/strip}--></span><span id="price02_dynamic"></span> 円 </dd> </dl> <!--{/if}--> 上記の【会員割引適用後の値段(max)】に該当する値を $arrProductに格納し記載すると考えています。 大変お恥ずかしいですが、いまいちEccubeの構造を把握できていない部分があり、 > // 割引後の金額を算出するロジックの書き方が分からないという事でしょうか? > // それともdtb_productに追加された会員割引率をDBから取り出してくる方法が分からないという事でしょうか? 正直どちらも不明な状態です。 申し訳ありません。 |
468 |
投稿日時: 2018/7/5 21:30
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 会員用割引項目を表示したい 管理画面及びdtt_productにどのような項目で割引率を追加されたのか
分からない為、きっちりとしたソースを提示する事は出来ませんが、 通常、商品詳細ページに情報を追加しようとする場合、 以下の処理を追加する必要があるかと思います。 1.商品詳細ページの対象商品のデータをDBから取り出す 2.会員割引適用後の値段を計算する 3.テンプレートに変数で会員割引適用後の値段を渡す 4.テンプレートで会員適用後の値段を表示する 1.については、 /data/class/pages/products/LC_Page_Products_Detail.php 285行目の $this->arrProduct = $objProduct->getDetail($product_id); が該当します。 詳細は割愛しますが、SC_Productクラス(/data/class/SC_Product.php)のfunction getDetail($product_id)を呼び出して商品のレコードを配列で返していると思います。 function getDetailの中では、select句が*となるSQLを実行していると思いますが、この配列に追加された割引率は含まれていませんか? 2.の会員割引適用後の値段の計算式については、私には分かりませんので、var_dump()等で1.の配列の中身を確認しつつ、 必要な計算式を記述し、計算後の数値を変数に代入すれば良いかと思います。 (直接$this->arrProductにキーを追加して代入しても良いかと思います) 3.4.については、先日の回答の通り、$this->arrProductに新しいキーを追加して、値引き後の金額を代入し、 smarty側で呼び出せば表示できると思います。
|
r.m |
投稿日時: 2018/7/9 10:11
対応状況: −−−
|
半人前 登録日: 2018/7/4 居住地: 投稿: 27 |
Re: 会員用割引項目を表示したい 468様
ご返信いただきありがとうございます。 > 1.商品詳細ページの対象商品のデータをDBから取り出す > 2.会員割引適用後の値段を計算する > 3.テンプレートに変数で会員割引適用後の値段を渡す > 4.テンプレートで会員適用後の値段を表示する 上記といただいた内容をもとに、計算後の値を 定義することで無事、反映することができました。 返信が遅れてしまい、申し訳ございませんが、 無事解決することができました、誠にありがとうございます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |