EC-CUBEで、特定商品を購入時は送料を無料にするロジックを組み込む。
参考:
EC-CUBEで送料無料
[EC- CUBE]商品に送料無料(込)のフラグを設ける
考え方は1番目のサイトの通り。
送料無料対象商品のフラグには、dtb_products の deliv_fee を利用する。(将来拡張予定のフィールドだが、本サイトでは個別送料設定はないだろうと思われるため)
(2番目のサイトは、フラグのフィールドを新たに設けるやり方)
管理画面のテンプレートは1番目のサイトの通りに変更。プログラム変更はナシ。(厳密には必須チェックしなければいけないが今回は見送り)
ソース変更は、1番目サイトのID登録が必要なようなのであきらめ、2番目のサイトのコードを参考に修正する。
●SC_Helper_DB_Ex.php
1.function sfTotalCart(&$objPage, $objCartSess, $arrInfo)
(1)add行追加。
$objPage->tpl_total_pretax = 0; // 費用合計(税込み)
$objPage->tpl_total_tax = 0; // 消費税合計
if (USE_POINT === true) {
$objPage->tpl_total_point = 0; // ポイント合計
}
$objPage->tpl_postage_flag = 0; // add:送料無料フラグ
(2)del行削除、add行追加。
// 商品ごとの合計金額
$objPage->arrProductsClass[$cnt]['total_pretax'] = $objCartSess->getProductTotal($arrInfo, $arrCart[$i]['id']);
// 送料の合計を計算する
//$objPage->tpl_total_deliv_fee+= ($arrData['deliv_fee'] * $arrCart[$i]['quantity']); //del
$objPage->tpl_total_deliv_fee = 0; //add
//送料無料フラグを判定する add
if ($arrData['deliv_fee'] > 0) { //1:送料込み=送料無料
$objPage->tpl_postage_flag = 1;
}
2.function sfTotalConfirm($arrData, &$objPage, &$objCartSess, $arrInfo, $objCustomer = "")
(1)del行削除
//del
// 商品ごとの送料が有効の場合
/*if (OPTION_PRODUCT_DELIV_FEE == 1) {
$arrData['deliv_fee']+= $objCartSess->getAllProductsDelivFee();
}*/
(2)add行追加。
// 送料無料条件が設定されている場合
if($arrInfo['free_rule'] > 0) {
// 小計が無料条件を超えている場合
if($arrData['subtotal'] >= $arrInfo['free_rule']) {
$arrData['deliv_fee'] = 0;
}
}
//add
// 送料無料商品が含まれている場合
if ($objPage->tpl_postage_flag > 0) {
$arrData['deliv_fee'] = 0;
}
●ショップ画面
商品詳細画面と一覧画面で、deliv_fee == 1 で判定し、該当する場合は「この商品を購入の際は送料無料」のメッセージを表示する。
(カート画面、トップのオススメ一覧でも対応すればなおよし。今回は対象外)
参考:
EC-CUBEで送料無料
[EC- CUBE]商品に送料無料(込)のフラグを設ける
考え方は1番目のサイトの通り。
送料無料対象商品のフラグには、dtb_products の deliv_fee を利用する。(将来拡張予定のフィールドだが、本サイトでは個別送料設定はないだろうと思われるため)
(2番目のサイトは、フラグのフィールドを新たに設けるやり方)
管理画面のテンプレートは1番目のサイトの通りに変更。プログラム変更はナシ。(厳密には必須チェックしなければいけないが今回は見送り)
ソース変更は、1番目サイトのID登録が必要なようなのであきらめ、2番目のサイトのコードを参考に修正する。
●SC_Helper_DB_Ex.php
1.function sfTotalCart(&$objPage, $objCartSess, $arrInfo)
(1)add行追加。
$objPage->tpl_total_pretax = 0; // 費用合計(税込み)
$objPage->tpl_total_tax = 0; // 消費税合計
if (USE_POINT === true) {
$objPage->tpl_total_point = 0; // ポイント合計
}
$objPage->tpl_postage_flag = 0; // add:送料無料フラグ
(2)del行削除、add行追加。
// 商品ごとの合計金額
$objPage->arrProductsClass[$cnt]['total_pretax'] = $objCartSess->getProductTotal($arrInfo, $arrCart[$i]['id']);
// 送料の合計を計算する
//$objPage->tpl_total_deliv_fee+= ($arrData['deliv_fee'] * $arrCart[$i]['quantity']); //del
$objPage->tpl_total_deliv_fee = 0; //add
//送料無料フラグを判定する add
if ($arrData['deliv_fee'] > 0) { //1:送料込み=送料無料
$objPage->tpl_postage_flag = 1;
}
2.function sfTotalConfirm($arrData, &$objPage, &$objCartSess, $arrInfo, $objCustomer = "")
(1)del行削除
//del
// 商品ごとの送料が有効の場合
/*if (OPTION_PRODUCT_DELIV_FEE == 1) {
$arrData['deliv_fee']+= $objCartSess->getAllProductsDelivFee();
}*/
(2)add行追加。
// 送料無料条件が設定されている場合
if($arrInfo['free_rule'] > 0) {
// 小計が無料条件を超えている場合
if($arrData['subtotal'] >= $arrInfo['free_rule']) {
$arrData['deliv_fee'] = 0;
}
}
//add
// 送料無料商品が含まれている場合
if ($objPage->tpl_postage_flag > 0) {
$arrData['deliv_fee'] = 0;
}
●ショップ画面
商品詳細画面と一覧画面で、deliv_fee == 1 で判定し、該当する場合は「この商品を購入の際は送料無料」のメッセージを表示する。
(カート画面、トップのオススメ一覧でも対応すればなおよし。今回は対象外)
コメントする