ご存知の方はご存知でしょう。EC-CUBE。今や大手のECサイトもこのシステムを導入しています。しかし、基本的な機能に多々問題がある為、いろいろとカスタマイズされて公開されている事がほとんどなんですよね。でもって、その中は複雑怪奇。非常にファイルが多く、どこにどの機能を格納しているファイルか理解するのにさえ、膨大な時間がかかります。
正直言って私も全てを把握できている訳ではありません。基本的な表面の編集ぐらいでしょうかね。通常それ以外は使う事がないので、必要もないと思いますが、何せそのファイル数は非常に多いというのは確かです。
で、そんな事をダラダラと書いても仕方がありません。早速本題です。この商品個別送料無料設定ができるように行うには、いくつかのファイルをFFFTPやCodaなどを使って編集しないければなりません。その手順を私個人のメモ代わりとしても、書き留めておこうと思います。私と同じようにカスタマイズされる方もご参考頂ければと思います。
1.「…/data/Smarty/templates/default/admin/products/confirm.tpl」を編集します。以下の「ポイント付与率」の上部に赤色のコードを入力して下さい。だいたい92行目ぐらいの位置にあると思います。
</tr>
<!–{/if}–>
<tr>
<td bgcolor=”#f2f1ec” width=”160″ class=”fs12n”>送料区分</td>
<td bgcolor=”#ffffff” width=”557″ class=”fs12n”>
<!–{if $arrForm.deliv_fee == 1}–>
送料無料(同梱対応)
<!–{else}–>
通常商品
<!–{/if}–>
</td>
</tr>
<tr>
<th>ポイント付与率</th>
2.続いて「…/data/Smarty/templates/default/admin/products/product.tpl」を編集します。今回も削除と追記です。場所は、約161行目あたりです。
<!–{* 送料の個別指定は次期開発で追加予定
<tr>
<th>商品送料
<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=”attention”> (半角数字で入力)</span>
</td>
</tr>
*}–>
<tr class=”fs12n”>
<td bgcolor=”#f2f1ec” width=”160″>送料区分<span class=”red”> *</span></td>
<td bgcolor=”#ffffff” width=”557″><input type=”radio” name=”deliv_fee” value=”1″ <!–{if $arrForm.deliv_fee == “1”}–>checked<!–{/if}–>/>送料無料(同梱対応)
<input type=”radio” name=”deliv_fee” value=”0″ <!–{if $arrForm.deliv_fee == “0”}–>checked<!–{/if}–> />通常商品</td>
</tr>
<tr class=”fs12n”>
<td bgcolor=”#f2f1ec” width=”160″>ポイント付与率<span class=”red”> *</span></td>
<td bgcolor=”#ffffff” width=”557″>
3.続いて「…/data/class/SC_CartSession.php」を編集します。今回は削除のみです。場所は、約350行目あたりです。
// カートの中の売り切れチェック
function chkSoldOut($arrCartList, $is_mobile = false){
4.続いて「…/data/class/helper/SC_Helper_DB.php」を編集します。今回も削除&追記です。更に数カ所ありますので一カ所ずつご紹介致します。間違うとEC-CUBEが動かなくなってしまう事もあるので。間違わないように気をつけて下さい。まずは、約1498行目付近です。
// 配送業者の送料が有効の場合
if (OPTION_DELIV_FEE == 1) {
// 送料の合計を計算する
$arrData[‘deliv_fee’] += $this->sfGetDelivFee($arrData);
// 商品の種類が1種類で尚且つ送料無料設定が1以上の場合は送料0
if($objPage->tpl_total_deliv_fee >= 1){
$arrData[‘deliv_fee’] = 0;
}else{
$arrData[‘deliv_fee’] += $this->sfGetDelivFee($arrData);
}
}
5.引き続いて「…/data/class/helper/SC_Helper_DB.php」を編集します。今回は最後尾に追記します。
/**
* 都道府県、支払い方法から配送料金を加算する.
*
*@param array $arrData
*/
function lfAddDelivFee(&$arrData) {
$arrData[‘deliv_fee’] += $this->sfGetDelivFee($arrRet);
}
6.またまた引き続いて「…/data/class/helper/SC_Helper_DB.php」を編集します。追記&削除です。これで一応最後の編集ですね。
一応これで商品登録の際に通常ではなかった「送料区分」が出ているはずです。そこで「送料無料(同梱対応)」と「通常商品」が選択できるラジオボタンも登場しているはずです。そこで、商品別に該当する内容に設定してやればOKなはず!私は一応これで問題なく動作しています。
こうやって書いてみたら簡単に見えるかもしれませんが、結構苦労しました。ネットでググったり、アドバイスを頂いたりと・・・。でも、その分達成感は違いますねぇ〜。これでまた1つ賢くなりましたぁ〜♪忘れないようにこうやってブログに書いていれば一安心です。って言ってもこの記事を書くのに、2時間掛かってしまっていますが(汗)。
今からまた仕事に戻りたいと思います。では、またこういうネタがあればエントリしたいと思います。