バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 規格のある商品の一括購入

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
dream777
投稿日時: 2015/4/30 20:10
対応状況: −−−
半人前
登録日: 2015/2/27
居住地:
投稿: 20
規格のある商品の一括購入
お世話様です。

現在、規格のある商品を商品一覧からまとめて購入できればと考えています。
規格を選ぶプルダウンの所に、【全て購入】という選択肢を増やせれば理想です。

data/Smarty/templates/default/products/list.tpl を弄らなくてはいけないと思うのですが、具体的にどうしていいかわかりません。

どうかお助けください。よろしくお願いします。
yuh
投稿日時: 2015/4/30 22:50
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 規格のある商品の一括購入
ぱっと思い浮かぶのは「すべて購入」ボタンをする方法ですね。

テンプレートだけではなくLC_Page_Products_List.phpも弄る必要があると思います。

プルダウンにすべて購入でも、すべて購入ボタンでもどちらでもいいんですが、なんらかの値を受け取った時に、
LC_Page_Products_ListのlfAddCartで全部の企画をカートに入れるように調整すればできますよ
dream777
投稿日時: 2015/5/1 12:04
対応状況: −−−
半人前
登録日: 2015/2/27
居住地:
投稿: 20
Re: 規格のある商品の一括購入
yuh様

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

data/Smarty/templates/default/products/list.tplの規格の所に

<option value="all">全て購入</option>

として「全て購入」の選択肢を増やしたのですが、この後の処理が分りません。

data/class/pages/products/LC_Page_Products_List.phpの方は、
460行目あたりの、


public function lfAddCart($arrForm)
{
$objCartSess = new SC_CartSession_Ex();

$product_class_id = $arrForm['product_class_id'];
$objCartSess->addProduct($product_class_id, $arrForm['quantity']);
}

辺りに処理を足す感じでしょうか?
yuh
投稿日時: 2015/5/1 12:57
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 規格のある商品の一括購入
その場合、lfInitParamのINT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')とかのチェックに引っかかるので、$product_class_id = $arrForm['product_class_id'];では値は取れないのでallの場合はarrErrからそのエラーをはじく等の処理が必要になってきます。

多分その「全て購入」を追加したのがclasscategory_id1だと思うので、別途別の処理を追加になると思います。

なので、product_idが存在していて、classcategory_id1がallの場合にifAddCartをコピーして別メソッドを作って、そちらの方でまとめて全部入れる処理を書いた方がいいかもですね。
dream777
投稿日時: 2015/5/1 17:59
対応状況: −−−
半人前
登録日: 2015/2/27
居住地:
投稿: 20
Re: 規格のある商品の一括購入
yuh様

お世話様です。

INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')の
'NUM_CHECK'を外して、public function lfAddCartを下記の様に変更してみました。

(ifAddCartをコピーはわからなくて出来ませんでした。すみません。。。)


public function lfAddCart($arrForm)
{
$objCartSess = new SC_CartSession_Ex();

$product_class_id = $arrForm['product_class_id'];

if ($product_class_id == all) {

$objCartSess->addProduct($arrClassCat1[$id], $arrForm['quantity']);
} else {

$objCartSess->addProduct($product_class_id, $arrForm['quantity']);
}
}

結果、規格を選ばなくてもカートに入ったり、「全て購入」を選択すると、一つだけ入ったりするようになってしまいました。

どこがおかしいのでしょうか?

yuh
投稿日時: 2015/5/1 18:15
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 規格のある商品の一括購入
DBから該当のproduct_class_idをすべて取得して、ループでaddProductでカートに入れてく感じです。
dream777
投稿日時: 2015/5/4 11:17
対応状況: −−−
半人前
登録日: 2015/2/27
居住地:
投稿: 20
Re: 規格のある商品の一括購入

お世話様です。

色々試しているのですが、中々実現できません。。。

もし可能であれば、サンプルコードを頂けないでしょうか
よろしくおねがいします。
yuh
投稿日時: 2015/5/4 13:31
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 規格のある商品の一括購入
Smarty/templates/default/products/list.tpl

                                <div class="cartin_btn">
<!--{if $tpl_classcat_find1[$id]}-->
	<input type="checkbox" name="all_in" value="1" >すべての企画をカートに入れる
<!--{/if}-->
                                    <!--★カゴに入れる★-->
                                    <div id="cartbtn_default_<!--{$id}-->">
                                        <input type="image" id="cart<!--{$id}-->" src="<!--{$TPL_URLPATH}-->img/button/btn_cartin.jpg" alt="カゴに入れる" onclick="fnInCart(this.form); return false;" class="hover_change_image" />
                                    </div>
                                    <div class="attention" id="cartbtn_dynamic_<!--{$id}-->"></div>
                                </div>


かごに入れるボタンあたりをこんな感じで変更

LC_Page_Products_List_Ex.phpを

    function action(){
        parent::action();
        if($this->arrForm['all_in'] == 1 AND $this->arrForm['product_id'] AND preg_match('/^[0-9]+$/',$this->arrForm['product_id'])){
            $this->allCartIn($this->arrForm['product_id']);
        }
    }
    function allCartIn($product_id = NULL){
        if(is_null($product_id)){
            return false;
        }
        
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objCartSess = new SC_CartSession_Ex();        
        $query = '
        SELECT 
            product_id 
        FROM 
            dtb_products 
        WHERE 
            del_flg    = 0 AND 
            status     = 1 AND 
            product_id = ? 
        LIMIT 1';
        
        $check = $objQuery->getOne($query,array($product_id));
        if($check != $product_id){
            return false;
        }
        $query = '
        SELECT
            *
        FROM
            dtb_products_class
        WHERE
            product_id = ? AND
            del_flg = 0
        ';
        $data = $objQuery->getAll($query,array($product_id));

        foreach($data as $key => $value){
            $objCartSess->addProduct($value['product_class_id'], $this->arrForm['quantity']);
        }
        // 開いているカテゴリーツリーを維持するためのパラメーター
        $arrQueryString = array(
            'category_id' => $this->arrForm['category_id'],
        );

        SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);
        SC_Response_Ex::actionExit();
    }
    
    
    function lfInitParam(&$objFormParam){
        parent::lfInitParam($objFormParam);
        $objFormParam->addParam('すべての規格をカートに入れる', 'all_in', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
    }

こんな感じで追記するとできます。
dream777
投稿日時: 2015/5/5 11:40
対応状況: −−−
半人前
登録日: 2015/2/27
居住地:
投稿: 20
Re: 規格のある商品の一括購入
yuh様

できました!すごいです。。。
こんなにも素晴らしいコードを教えていただき本当にありがとうございます。すごくうれしいです。

とても助かりました。本当にありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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