ECCUBEの商品送料、個別送料や基本送料をカスタマイズ
EC CUBEのバージョンは2.4.4。
最終目標は、管理画面で、商品個別の送料が入力できるようにする。
カスタマイズする箇所は4か所。
1.元々ある作りかけの商品送料の部分を有効にする
/data/Smarty/templates/default/admin/products/product.tpl
コメントになっている商品送料のコメントを外す(185行目)
<!– ここから商品送料 –>
 <tr class=”fs12n”>
 <td bgcolor=”#f2f1ec” width=”160″>商品送料</td>
 <td bgcolor=”#ffffff” width=”557″>
 <span class=”red12″><!–{$arrErr.deliv_fee}–></span>
 <input type=”text” name=”deliv_fee”
 value=”<!–{$arrForm.deliv_fee|escape}–>” size=”6″
 class=”box6″ maxlength=”<!–{$smarty.const.PRICE_LEN}–>”
 style=”<!–{if $arrErr.deliv_fee != “”}–>background-color: <!–{$smarty.const.ERR_COLOR}–><!–{/if}–>”/>円
 <span class=”red10″> (半角数字で入力)</span></td>
 </td>
 </tr>
 <!– ここまで商品送料 –>
2.アドミン画面に入力用のテキストボックス(フォーム)を作る
/data/Smarty/templates/default/admin/products/confirm.tpl
在庫数とポイント付与率の間に追加する。(129行目)
<tr>
 <td bgcolor=”#f2f1ec” width=”160″ class=”fs12n”>在庫数</td>
 <td bgcolor=”#ffffff” width=”557″ class=”fs12n”>
 <!–{if $arrForm.stock_unlimited == 1}–>
 無制限
 <!–{else}–>
 <!–{$arrForm.stock|escape}–>
 個<!–{/if}–>
 </td>
 </tr>
 <!–{/if}–>
 <!– 商品送料の確認画面 –>
 <tr>
 <td bgcolor=”#f2f1ec” width=”160″ class=”fs12n”>商品送料</td>
 <td bgcolor=”#ffffff” width=”557″ class=”fs12n”>
 <!–{$arrForm.deliv_fee|escape}–>
 円</td>
 </tr>
 <!– 商品送料の確認画面 –>
 <tr>
 <td bgcolor=”#f2f1ec” width=”160″ class=”fs12n”>ポイント付与率</td>
 <td bgcolor=”#ffffff” width=”557″ class=”fs12n”>
 <!–{$arrForm.point_rate|escape}–>
 %</td>
 </tr>
3.送料の計算の部分に、個別商品を追加する計算式を追加
/data/class_extends/helper_extends/SC_Helper_DB_Ex.php
送料計算式をカスタマイズ。
$objPage->tpl_total_deliv_fee に、カートに入った商品の、商品送料deliv_feeの合計が格納されている。
/httpdocs/data/class/helper/SC_Helper_DB.php
 から、function sfTotalConfirmの部分(1467~1536行目)をすべて
SC_Helper_DB_Ex.php の
 class SC_Helper_DB_Ex extends SC_Helper_DB {
 }
 ?>
 の間にコピーし、以下の部分(55行目(コピペの仕方により変動する))を変更。
// 商品ごとの送料が有効の場合
 if (OPTION_PRODUCT_DELIV_FEE == 1) {
 $arrData[‘deliv_fee’]+= $objPage->tpl_total_deliv_fee;
 //$objCartSess->getAllProductsDelivFee();
 }
コピペ後はこんな感じになるはず↓
class SC_Helper_DB_Ex extends SC_Helper_DB {
 function sfTotalConfirm($arrData, &$objPage, &$objCartSess, $arrInfo, $objCustomer = “”) {
 // 未定義変数を定義
—–中略—–
$arrData[‘add_point’] = 0;
 }
 return $arrData;
 }
 }
 ?>
4.パラメーターで個別送料を有効にしておく
管理画面の[システム設定]-[パラメータ設定]で「OPTION_PRODUCT_DELIV_FEE」を’1’にする。
これでおしまい。
合計送料X = 配送業者送料A + 商品送料合計n(今追加した分) で算出されるようになる。
配送業者送料A を地域別に設定。
大きいものa と小さいものb を購入された場合、n(a)に500、n(b)に0 を入れておけば、
 X = A + n(a) + n(b) となるので、n(b)が0なので追加送料は発生しない。
 一方大きいものを2つ購入された場合は、n(a)+n(a’) となり、送料は加算される。
 また、小さいものを1つ購入された場合は、X = A + n(b) なので A がそのまま送料とになる。
 
  
 

