概要
EC-CUBEのポイント制を、商品購入時には付加しないようにする。他
カスタマイズ内容
EC-CUBEではデフォルトでポイント制が有効になっていますが、ユーザが使う際にポイント制がないように見えるようにします。
ただし、ポイント制のON/OFFに関して本家EC-CUBEのロードマップに今後導入予定との記述をどっかで見かけたので、とりあえずはviewテンプレート側で表示されるポイント部分の記述を全部取っ払う形で実現しようと思っています。
ただし、まったく無効にしてしまうのではなくお客様を紹介していただいたりキャンペーン時に店舗からユーザにポイントを付与できるようにしたいと思っています。
手順
編集対象の洗い出し
- 商品詳細
- カート画面
- ログイン時お支払い方法
- ご入力内容の確認
こんなところでしょうか。
本当はmyページの左ナビにもポイント数の表示はあるんですが、店舗から付与したポイントを確認できるように残しておきます。
テンプレートの修正
編集対象のテンプレートは/data/Smarty/templates/default/にあります。
デフォルトのテンプレートを想定して説明しますが、実際の編集はデフォルトテンプレートを別名で追加してそちらを編集した方がいいと思います。ミスってもすぐにもどせるしね 😉
商品詳細の修正
/detail.tplを修正します。
ソースの<!–★ポイント★–>以下がポイントの表示に関する部分です。
<!--★ポイント★--> <div><span class="price">ポイント: <!--{if $arrProduct.price02_min == $arrProduct.price02_max}--> <!--{$arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}--> <!--{else}--> <!--{if $arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id == $arrProduct.price02_max|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}--> <!--{$arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}--> <!--{else}--> <!--{$arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}-->〜<!--{$arrProduct.price02_max|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}--> <!--{/if}--> <!--{/if}-->Pt</span></div>
この部分を削除してください。
削除するのが不安だったら<div style=”display: none;”>とでもしておいてください。
カート画面の修正
/cart/index.tplを修正します。
<p class=”totalmoneyarea”>の中と、商品情報テーブルの中の2箇所を修正します。
まずは一箇所目
<!--{if $tpl_login}--> <!--メインコメント--> <!--{$tpl_name|escape}--> 様の、現在の所持ポイントは「<em><!--{$tpl_user_point|number_format|default:0}--> pt</em>」です。<br /> <!--{else}--> <!--メインコメント-->ポイント制度をご利用になられる場合は、会員登録後ログインしていだだきますようお願い致します。<br /> <!--{/if}-->
ここを削除します。
ちなみに$tpl_loginはログイン状態を表すフラグなので(そんなのわかってるって?)、ログイン状態で分岐して処理したい場合にはそのままつかってもOK。よそでも使えると思います。
もう一箇所は、商品情報テーブルの
<!--{if $arrData.birth_point > 0}--> <tr> <th colspan="5" class="resulttd">お誕生月ポイント</th> <td class="pricetd"><!--{$arrData.birth_point|number_format}-->pt</td> </tr> <!--{/if}--> <tr> <th colspan="5" class="resulttd">今回加算ポイント</th> <td class="pricetd"><!--{$arrData.add_point|number_format}-->pt</td> </tr>
この部分、削除するなりコメントアウトするなりお好きな方法で処理してください。
ちなみに$arrData.birth_pointは誕生日月ポイント(多分)で、
$arrData.add_pointはその買物で加算されるポイントが入ります。
{$arrData.add_point|number_format}という箇所は、
phpソースで言うところのnumber_format($arrData[‘add_point’])という意味で、ポイントに桁区切りをつけるためにやっています(多分)。
Smartyでは{引数1|関数:引数2:引数3}って感じでphpの関数を利用することができます。覚えておくとめっちゃ役立つと思います。
ログイン時お支払い方法の修正
/shopping/payment.tplを修正します。
<!-- ▼ポイント使用 ここから --> <!--{if $tpl_login == 1}--> <div class="pointarea"> <h3><img src="<!--{$TPL_DIR}-->img/shopping/subtitle_point.jpg" width="670" height="32" alt="ポイント使用の指定" /></h3> <p><span class="attention">1ポイントを1円</span>として使用する事ができます。<br /> 使用する場合は、「ポイントを使用する」にチェックを入れた後、使用するポイントをご記入ください。</p> <div> <p><!--{$objCustomer->getValue('name01')|escape}--> <!--{$objCustomer->getValue('name02')|escape}-->様の、現在の所持ポイントは「<em><!--{$tpl_user_point|default:0}-->Pt</em>」です。</p> <p>今回ご購入合計金額:<span class="price"><!--{$arrData.subtotal|number_format}-->円</span><span class="attention">(送料、手数料を含みません。)</span></p> <ul> <li><input type="radio" id="point_on" name="point_check" value="1" <!--{$arrForm.point_check.value|sfGetChecked:1}--> onclick="fnCheckInputPoint();" /><label for="point_on">ポイントを使用する</label></li> <!--{assign var=key value="use_point"}--> <li class="underline">今回のお買い物で、<input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|default:$tpl_user_point}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="6" class="box60" />&amp;amp;amp;amp;nbsp;ポイントを使用する。<span class="attention"><!--{$arrErr[$key]}--></span></li> <li><input type="radio" id="point_off" name="point_check" value="2" <!--{$arrForm.point_check.value|sfGetChecked:2}--> onclick="fnCheckInputPoint();" /><label for="point_off">ポイントを使用しない</label></li> </ul> </div> </div> <!--{/if}--> <!-- ▲ポイント使用 ここまで -->
この部分の削除でOKです。
ご入力内容の確認画面の修正
/shopping/confirm.tplを修正します。
修正箇所は2箇所。まずはご注文内容確認テーブルの、
<tr> <th colspan="4" class="resulttd">値引き(ポイントご使用時)</th> <td class="pricetd"> <!--{assign var=discount value=`$arrData.use_point*$smarty.const.POINT_VALUE`}--> -<!--{$discount|number_format|default:0}-->円</td> </tr>
この部分を削除。
もう一箇所はログインしたときのポイント状況を表示する箇所
<!--{* ログイン済みの会員のみ *}--> <!--{if $tpl_login == 1 || $arrData.member_check == 1}--> <table summary="ポイント確認" class="delivname"> <tr> <th>ご注文前のポイント</th> <td><!--{$tpl_user_point|number_format|default:0}-->Pt</td> </tr> <tr> <th>ご使用ポイント</th> <td>-<!--{$arrData.use_point|number_format|default:0}-->Pt</td> </tr> <!--{if $arrData.birth_point > 0}--> <tr> <th>お誕生月ポイント</th> <th>+<!--{$arrData.birth_point|number_format|default:0}-->Pt</td> </tr> <!--{/if}--> <tr> <th>今回加算されるポイント</th> <td>+<!--{$arrData.add_point|number_format|default:0}-->Pt</td> </tr> <tr> <!--{assign var=total_point value=`$tpl_user_point-$arrData.use_point+$arrData.add_point`}--> <th>ご注文完了後のポイント</th> <td><!--{$total_point|number_format}-->Pt</td> </tr> </table> <!--{/if}--> <!--{* ログイン済みの会員のみ *}-->
を削除してください。
やべえ!ミスった!
ここまで作業と平行してこの記事を書いてきたのですが、大変なことに気付きました。
そういえば「店舗からユーザにポイントを付与できる」ようにするつもりなのを忘れてました。最近飲みすぎ夜更かしのし過ぎで血迷っていたようです。
本来であれば購入時のポイントだけないことにすればいいので、下記の箇所は削除しなくてもOKです!
- ログイン時お支払い方法画面のポイントを使用設定の箇所
- ご入力内容の確認画面で、ポイント状況を表示する箇所の「今回加算ポイント」以外
いやぁ大変失礼しました。
でも、全部消す場合のプラクティスにもなってよかったんじゃないですか?(無責任)
全部消す場合はこの他にmyページのポイント表示箇所もチェックしてくださいね。
もう、つかれたよ。。。
追記
ソースの中にhタグがあっても目次に反映されちゃうみたい。
とりあえずhタグのhを全角にして対応しました。
コピペする際には注意してね 😉