EC-CUBE(2.13系~)の商品数量毎に送料が掛かる設定


EC-CUBEでカートの中の商品数分の送料を実装する。
(商品1個が大きかったり重かったりして、商品1個毎に送料が掛かる場合を想定)
※例えば、A商品を3つ、B商品を2つ購入した場合には「配送業者別の送料×5」が掛かる時。

/data/class/SC_CartSession.php
を変更。

        if (OPTION_DELIV_FEE == 1
            && !SC_Utils_Ex::isBlank($deliv_pref)
            && !SC_Utils_Ex::isBlank($deliv_id)) {
            $results['deliv_fee'] += SC_Helper_Delivery_Ex::getDelivFee($deliv_pref, $deliv_id);
        }

上記の部分を・・・

        // 配送業者の送料を加算
        if (OPTION_DELIV_FEE == 1
            && !SC_Utils_Ex::isBlank($deliv_pref)
            && !SC_Utils_Ex::isBlank($deliv_id)) {
        	$cartItems = $this->getCartList($productTypeId);
        	foreach ($cartItems as $arrItem) {
            $results['deliv_fee'] += SC_Helper_Delivery_Ex::getDelivFee($deliv_pref, $deliv_id) * $arrItem['quantity'];
        }
	}

とする。
「 $cartItems 」~の部分で商品の数量を取得して、最期に 「 $arrItem['quantity'] 」を乗じることで配送業者毎の送料に数量分が掛け合わされて計算ができる。

EC-CUBEのdataディレクトリの場所


※通常、「data」フォルダはドキュメントルート((EC-CUBE)をインストールするディレクトリ)の上位ディレクトリ(1階層上)にアップロードして、外部からアクセスできない状態にしておく必要があります。
さくらのレンタルサーバは、初期設定するさくら用のサブドメインドキュメントルートが/home/アカウント名/www/になっているので、「data」フォルダを非公開ディレクトリにアップロードする場合は、さらに上位のディレクトリにアップロードする必要があります。/home/アカウント名/data
※もし、「data」ディレクトリを2階層以上に設置した場合は、EC-CUBEの「data」ディレクトリパスを変更する必要があります。
html/define.phpの3行目を変更
/** HTMLディレクトリからのDATAディレクトリの相対パス */
define(“HTML2DATA_DIR”, “../data/”);
2階層上に設置の場合:define(“HTML2DATA_DIR”, “../../data/”);
3階層上に設置の場合:define(“HTML2DATA_DIR”, “../../../data/”);