バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
by0448
投稿日時: 2012/6/28 14:11
対応状況: −−−
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
いつもお世話になっております。

カート画面への遷移が煩わしく、以下のように変更しました。

LC_Page_Products_Detail.php 160行目付近
LC_Page_Products_List.php 195行目付近

SC_Response_Ex::sendRedirect(CART_URLPATH); 
SC_Response_Ex::actionExit();
↓

//カゴに入れた直後にカート画面に飛ばない。携帯とスマートフォンには適用しない。
if(SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE || SC_Display_Ex::detectDevice() == DEVICE_TYPE_SMARTPHONE) {
SC_Response_Ex::sendRedirect(CART_URLPATH);
exit;
} else {
//セッションに商品を買った事を保持する
$_SESSION['cart_buy_now'] = TRUE;
//リンク元のURLにリダイレクトさせる
SC_Response_Ex::sendRedirect($_SERVER['HTTP_REFERER']);
exit;
} 



確かに買い物はできているのですが、左カラムにつけたカートブロックの反応がおかしくなってしまっています。

商品数はちゃんと増えるのですが、商品金額と送料手数料無料の金額部分が計算されません。
ただし、一度更新ボタンを押せば、計算されるようになりますが、入れた瞬間に反応してくれないのは、不都合があります。


この場合、どこを修正すればいいのでしょうか?
お知恵をお貸し頂けますよう、宜しくお願い致します。



EC-CUBEバージョン 2.12.0
PHPバージョン PHP 5.1.6
DBバージョン MySQL 5.0.77

AMUAMU
投稿日時: 2012/6/28 16:32
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
合計金額を算出する処理を呼び出すように修正しないと、計算されないと思います。
該当の部分はカゴの中画面で呼出処理をしていたと思うので確認してみると良いと思います(処理本体はSC_CartSessionです)。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

by0448
投稿日時: 2012/6/28 16:49
対応状況: −−−
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
AMUAMU 様 ご返答ありがとうございました。

おっしゃる通りに
/data/class/SC_CartSession.phpをみました。

しかし、どこをいじればいいのか、見当がつきません。

宜しければ、修正個所をお教え願えないでしょうか?

宜しくお願い致します。
soy_bean
投稿日時: 2012/8/14 15:59
対応状況: −−−
新米
登録日: 2012/8/14
居住地:
投稿: 5
Re: 【2.12】カゴに入れた直後にカート画面に飛ばないようにすると、カートブロックの計算が狂う
詳細のほうだけですが、
「カゴに入れる」を押したときに、まだ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;
を追加する感じで自分はごまかしました。

もっといいやり方あると思いますし、
他で使うかもしれないので元の関数は残して、
いじる関数は別名にした方がいいと思います。
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を他の文字に変えましたが、これも上手くいかないようでした。


どこが間違えているのか、ご教授いただけますでしょうか。
宜しくお願い致します。
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/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 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 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'));

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

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

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


色々とご教授いただき、ありがとうございました。
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になるようにしています



どこかに問題があるのか
どういう改善方法が考えられるのか
お知恵をお貸しいただけますでしょうか。。。
よろしくお願い致します
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.