eccube 2.11 キャンペーン用会員登録ページを作る | φ(..)メモとして残しておこう…

eccube 2.11 キャンペーン用会員登録ページを作る

「キャンペーンやるから、キャンペーン用の会員登録ページ作ってね」


うーん…。

とりあえず、要件は以下。


・ハガキを配布する
・キャンペーン専用webサイトにアクセスし、会員登録
・キャンペーン用サイトから会員登録した場合のみ、0円のサンプル商品を送る。
・キャンペーンの商品送付の注文は、NEXT-engineで自動受信したい


へいへい。
要は通常の会員登録の方々と分けりゃいいってことですね。

らじゃー!




まずは、キャンペーンフラグ用のカラムをDBに作成。
dtb_customerにカラムを追加。
とりあえず、INTでいいか…。
どうせ後からmtb_campaignとかいうテーブル作って、キャンペーンを複数登録できるようにカスタマイズする必要が出てくるかもしれないし。
EC-CUBEの管理画面から、クライアントが自分でキャンペーンを登録できるようにしておいてあげるのが親切ってもんだからね。

だが、今はやらねぇ!
そこんとこの機能追加は別料金ですぜ…ダンナ。

ってなわけで、今回は管理画面のカスタマイズはしません。
あとからできるようにしておくだけ…と。


よし!
カラムを作ったら、顧客管理周りのClassを書き換えるぞ…と。


/data/class/helper/SC_Helper_Customer.php

function sfCustomerRegisterParam (&$objFormParam, $isAdmin = false, $is_mypage = false) {}


$objFormParam->addParam("キャンペーン", "カラム名", INT_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));

を追加。

基本的にプログラム周りはこれだけですな。


キャンペーンフラグのパラメータをどう渡すか…ということについては、これはやはりGETパラメータが楽かな…ということで、その方向でテンプレートをいじります。

まずは
/data/Smarty/templates/default/entry/index.tpl
から。

formタグのアクションを変更


action="?"

action="?<!--{if $smarty.post.campaign != "" || $smarty.post.campaign != Null}-->campaign=<!--{$smarty.post.campaign}--><!--{/if}-->"



これで、入力ミスで戻ってきた時もGETパラメータを引き継いだままになる。
とりあえず、パラメータ名は"campaign"にしました。

そして、FORM内に以下のコードを追加。


<!--{if $smarty.get.campaign != "" || $smarty.get.campaign != Null}-->
<!--{assign var=key1 value="`$prefix`campaign"}--><input type="hidden" name="<!--{$key1}-->" value="<!--{$smarty.get.campaign}-->">
<!--{elseif $smarty.post.campaign != "" || $smarty.post.campaign != Null}-->
<!--{assign var=key1 value="`$prefix`campaign"}--><input type="hidden" name="<!--{$key1}-->" value="<!--{$smarty.post.campaign}-->">
<!--{else}-->
<!--{assign var=key1 value="`$prefix`campaign"}--><input type="hidden" name="<!--{$key1}-->" value="0">
<!--{/if}-->



次に
/data/Smarty/templates/default/entry/confirm.tpl
の戻るボタンのアンカータグを変更。


a href="?campaign=<!--{$smarty.post.campaign}--><!--{/if}-->"




とりあえずこれで、登録周りの処理は完了です。
動作チェックしてみたら、ちゃんと新しく作ったカラムにGETパラメータで指定した数値が挿入されてます。

これにて、キャンペーンごとにフラグをたてる作業は終了。
おつかれさまでした…という訳にはいかず、メール処理を。



あ、そうそう。
いまさらですがカラム名は各自でどうぞ。

メール送信は、次回。