バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > カートへ商品の自動追加

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
lota
投稿日時: 2014/4/29 14:30
対応状況: −−−
新米
登録日: 2014/4/18
居住地:
投稿: 7
カートへ商品の自動追加
度々失礼いたします。
EC-CUBE歴:初心者
EC-CUBEバージョン:2.13.1

商品を注文すると「カタログプレゼント」(商品ID=0)を自動で1つ追加しようとしているのですが、IDを指定して追加しても違う商品が追加されてしまいます。

LC_Page_Products_Detail.php

function doCart()内で

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

の下に

$product_class_id_Catalog = $this->objFormParam->getValue('product_class_id');
$product_class_id_Catalog ['product_id'] ="1";
$objCartSess->addProduct($product_class_id_Catalog , 1);

のようにしています。


こちらを参考にしましたがバージョンが違うのでダメでした。

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=7822&forum=10


もし、方法がわかりましたらご指導をお願いいたします。
よろしくお願いします。
yuh
投稿日時: 2014/4/29 17:08
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: カートへ商品の自動追加
そのままだと、商品をカートに入れるたびにカタログが追加されるような気がします。

カートに追加する場合で
$this->objFormParam->getValue('product_class_id');
↑この部分で受け取るデータ自体はカートに入れた商品のproduct_class_idなのでその商品がカートに入っているかチェックして、入ってなければ追加する処理を入れたほうがいいと思います。
なので、LC_Page_Products_Detail_Exに

    public function doCart()
    {
        $this->arrErr = $this->lfCheckError($this->mode,$this->objFormParam,
                                            $this->tpl_classcat_find1,
                                            $this->tpl_classcat_find2);
        if (count($this->arrErr) == 0) {
            $objCartSess = new SC_CartSession_Ex();
            $product_class_id = $this->objFormParam->getValue('product_class_id');

            $objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'));
			
			$addCartProductClassID = 14;
			$objProduct = new SC_Product_Ex();
			$arrProduct = $objProduct->getProductsClass($addCartProductClassID);
			$productTypeId = $arrProduct['product_type_id'];
			$find = false;
			$max = $objCartSess->getMax($productTypeId);
			for ($i = 0; $i <= $max; $i++) {
				if ($objCartSess->cartSession[$productTypeId][$i]['id'] == $addCartProductClassID) {
					$find = true;
				}
			}
			if($find === false){
				$objCartSess->addProduct($addCartProductClassID, 1);
			}
			
            // 開いているカテゴリーツリーを維持するためのパラメーター
            $arrQueryString = array(
                'product_id' => $this->objFormParam->getValue('product_id'),
            );

            SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);
            SC_Response_Ex::actionExit();
        }
    }

上記のコードを追加でいけると思います。
$addCartProductClassID = 14;
この部分で追加する商品のproduct_class_idを設定する感じですね。
現状はテストで14を入れています。
あまりテストしてないので、確認はしてください。
lota
投稿日時: 2014/4/29 17:52
対応状況: −−−
新米
登録日: 2014/4/18
居住地:
投稿: 7
Re: カートへ商品の自動追加
早速ありがとうございます!
ご指摘の通りに商品毎に追加されてしまうところでした…

早速入れ込んでみましたらいい感じに動きそうでしたが
有効な商品のIDを設定しているのですが

「※ 現時点で販売していない商品が含まれておりました。該当商品をカートから削除しました。」

というメッセージが出てしまって追加されません…

こちらでも調べてみます。

yuh
投稿日時: 2014/4/29 20:02
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: カートへ商品の自動追加
IDじゃなくてproduct_class_idですね。
lota
投稿日時: 2014/4/30 7:47
対応状況: −−−
新米
登録日: 2014/4/18
居住地:
投稿: 7
Re: カートへ商品の自動追加
希望通りの動きが出来ました!
ありがとうございました!

IDとproduct_class_idが違うことを初めて知りました…勉強になります…



補足:
前前質問をした
「※ 現時点で販売していない商品が含まれておりました。該当商品をカートから削除しました。」
というメッセージは商品IDを指定していたために、存在しないproduct_class_idを指定したために起こったことです。

カタログ:商品ID→1 product_class_id→0

そこでproduct_class_id=1と指定したために起きたミスでした。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,537名です
総投稿数は110,117件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1656
8
red
1570
9
mcontact
1312
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.