バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seasoft
投稿日時: 2013/4/3 23:22
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
引用:

soy_beanさんは書きました:
詳細のほうだけですが、
「カゴに入れる」を押したときに、まだpriceの情報がカートセッションに入っていないため、カートに金額が反映されていないと思います。
カートはセッションの情報を参照して金額や数量だしているみたい。

detail.tplに
<input type="hidden" name="price" value="<!--{$arrProduct.price02_min_inctax}-->" />
あたりを追加して

LC_Page_Products_Detail.phpの
case 'cart'内の$objCartSess->addProductにpriceを追加
$objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'), $this->objFormParam->getValue('price'));

SC_CartSession.phpのfunction addProductを
function addProduct($product_class_id, $quantity, $price) {
にして

if (strlen($val) <= INT_LEN) { 内に
$this->cartSession[$productTypeId][$i]['price'] = $price;

if (!$find) { 内に
$this->cartSession[$productTypeId][$max+1]['price'] = $price;
を追加する感じで自分はごまかしました。

もっといいやり方あると思いますし、
他で使うかもしれないので元の関数は残して、
いじる関数は別名にした方がいいと思います。


SC_CartSession#addProduct の末尾に下記コードを1行追加するだけで十分なようです。(2.12.2 で確認)

$this->getCartList($productTypeId);


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

uubb
投稿日時: 2012/9/11 12:55
対応状況: −−−
常連
登録日: 2012/5/29
居住地:
投稿: 53
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
hirokatoさんと同様に規格によって値段が違う場合は、うまく行きません。
<input type="hidden" name="price" value="<!--{$arrProduct.price02_min_inctax}-->" />
>内のvalueの値を<!--{$arrProduct.price02_min}-->にすれば規格内最安値(税込)の数値が入ります。

規格選択された際の数値が必要なので、<!--{$arrProduct.price02_min|number_format}-->にすればエラーがでます。

number_formatの数値どこで渡せばいいのかうまく検討できません。
hirokato
投稿日時: 2012/8/24 12:34
対応状況: −−−
新米
登録日: 2012/8/22
居住地:
投稿: 2
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
返答ありがとうございます


値段がおかしいのは税込み値段にまた税をかけているんですね…
><input type="hidden" name="price" value="<!--{$arrProduct.price02_min_inctax}-->" />
>内のvalueの値を適切なものに変更してください。
の「適切なもの」がわかりませんが、いろいろ試して頑張ってみます

規格によって値段が違う場合の解決案についても
何をどうすれば良いのかさっぱりですが、、、
手がかりをいただけたのでこちらも頑張ってみます


どうしても進めなかったらまた質問させていただこうと思います
soy_bean
投稿日時: 2012/8/23 9:45
対応状況: −−−
新米
登録日: 2012/8/14
居住地:
投稿: 5
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
ちょっと忙しく、実装してプログラム変更を教える余裕はなさそうです。

まず値段がおかしくなるのは、
商品値段+5%税になってるようですね。
/data/Smarty/templates/default/products/detail.tpl

<input type="hidden" name="price" value="<!--{$arrProduct.price02_min_inctax}-->" />
内のvalueの値を適切なものに変更してください。

自分の場合規格によらず値段統一でしたので規格は考慮してませんでした。
解決案として思いついたのは
?tpl側を主に修正する方法
上記valueの値を選択している規格によって、smartyを使い条件分岐変更する方法。

?LC_Page_Products_Detail.php側を主に修正する方法
得られる規格と商品の情報を使い、データベースの商品情報部分からpriceを作成する方法。

あたりでしょうか。
hirokato
投稿日時: 2012/8/22 23:45
対応状況: −−−
新米
登録日: 2012/8/22
居住地:
投稿: 2
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
スレッド主のby0448様
解決済みのスレッドですが横からコメントを失礼致します
soy_bean様がお詳しいようなので
こちらへの返信と言う形でコメントさせていただきました

この問題に関わる内容について質問をさせてください
(2.12.1で作成しています)

前述にあります通りに
各ファイルの所定の箇所に追記・変更し
「カゴに入れる」をクリックすると「現在のカゴ」の金額が変わるようになりました
しかしよくよく見てみるとどうも動作がおかしいのです
具体的にどのようにおかしいのかと言いますと…



商品詳細ページで

商品の規格を
S 525円(税込)
M 1525円(税込)
L 2625円(税込)
と3サイズ用意しているのですが
MやLを選択して「カゴにいれる」をクリックしても
なぜかSの金額が「現在のカゴ」に反映されてしまうようで

しかもなぜか525円が追加されるのではなく
551円という、26円余分に価格が追加されてしまうのです

ただ、カートのページへ移動すると
本来選択したサイズと価格はきちんと反映されていて
そのページ移動に伴って「現在のカゴ」の価格もその正しい金額に表示し直されます


ほかに参考になりそうなこととしては…
・ポイントは1%付くようにしています
・データ商品販売のため、いくつも購入することはないので
 数量選択はコメントアウトして自動的に1になるようにしています



どこかに問題があるのか
どういう改善方法が考えられるのか
お知恵をお貸しいただけますでしょうか。。。
よろしくお願い致します
by0448
投稿日時: 2012/8/17 17:31
対応状況: 解決済
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
soy_bean 様

ご返答ありがとうございます。

お陰様で、修正が出来ました。


$objFormParam->addParam('販売価格', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));

この一行を追加しましたら、ちゃんとかごの料金が変更されるようになりました。

本当にありがとうございます。

この情報を参考に、商品一覧ページの方でも、同じようにかごに入れた瞬間に料金が加算された表示になる様に修正してみます。


色々とご教授いただき、ありがとうございました。
soy_bean
投稿日時: 2012/8/17 15:39
対応状況: −−−
新米
登録日: 2012/8/14
居住地:
投稿: 5
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
すみません書き忘れてました

/data/class/pages/products/LC_Page_Products_Detail.php
の434行目付近の
function lfInitParam(&$objFormParam)


$objFormParam->addParam('販売価格', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));

追加でどうでしょう?


ちょっと新しく環境作り直してチェックする余裕がないので、
詳しい原因は教えられないかもしれません。

またカート遷移させない方法とか他機能の実装のために変更した個所が有効になってるせいかもしれません。

あとエラー出ていますか、それとも「かご内の値段」が変わらないですか?
by0448
投稿日時: 2012/8/17 14:15
対応状況: −−−
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
soy_bean 様

ご返答ありがとうございます。

おっしゃる通り、やってみましたが、やはり上手くいきません。


/data/Smarty/templates/default/products/detail.tpl
こちらのファイルの追加個所がまずいのでしょうか。

<input type="hidden"
が4つ並んでいるところに追加したのですが、間違えているという事はありませんか?

ただ、色んな箇所に張り付けたりしてますが、やはり反応しません。


priceの書き換えは違うのですね、あまりに無知でずれた質問をしてしまい、申しわけないです。


引き続き、ご教授いただけますよう、宜しくお願い致します。
soy_bean
投稿日時: 2012/8/17 12:16
対応状況: −−−
新米
登録日: 2012/8/14
居住地:
投稿: 5
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
/data/class/pages/products/LC_Page_Products_Detail.php

159行目 $objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'));


$objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'), $this->objFormParam->getValue('price'));

に変更でどうでしょう?


やってることは、
カートセッションの値段を参照してカートの値段を計算してるのに、
商品詳細のとこでは数量と商品IDしか入れてないことがわかるので、
カートセッションの構造を見て、値段を入れる場所に、
上記と同じタイミングで値段を入れておこうてことです。

でpriceは変えちゃまずいと思う。
変えた方がいいというのはaddProductをaddProduct_priceとかにして、
元のaddProduct参考に別に作ったほうがいいかもということです。
by0448
投稿日時: 2012/8/16 20:12
対応状況: −−−
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
soy_bean 様

ご返答ありがとうございます。

自分では何もわからず、半ばあきらめていましたが、このようにお助けいただいたことに感謝致します。


しかしながら、どうにも上手くいかないので、以下のやり方で宜しいのか確認して頂けないでしょうか。


/data/Smarty/templates/default/products/detail.tpl 
197行目付近以下を追加。

<input type="hidden" name="price" value="<!--{$arrProduct.price02_min_inctax}-->" />


/data/class/pages/products/LC_Page_Products_Detail.php
170行目付近に以下を追加。

$objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'), $this->objFormParam->getValue('price'));


/data/class/SC_CartSession.php
231行目を以下に変更。
function addProduct($product_class_id, $quantity, $price) {

243行目付近に以下を追加。
$this->cartSession[$productTypeId][$i]['price'] = $price;

252行目付近に以下を追加。
$this->cartSession[$productTypeId][$max+1]['price'] = $price;



soy_bean 様助言では、このように書かれていますが、自分も同じようにやってみたところ、どうにも上手くいきません。
関数を変更をした方が良いという事で、priceを他の文字に変えましたが、これも上手くいかないようでした。


どこが間違えているのか、ご教授いただけますでしょうか。
宜しくお願い致します。
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,887名です
総投稿数は110,000件です

投稿数ランキング

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
1295
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.