EC-CUBEで会員登録画面を改造する方法【2.13系】
会員登録を対会社(B2B)用にカスタマイズする方法
EC-CUBEは対カスタマー向けのソフトですので会員登録には「誕生日」などの個人用の項目があるので、EC-CUBEをB2B用の卸サイト化するには個人用の項目を削除した後に、業者用の項目を増やしてやる必要があります
増やしたい項目と減らしたい項目
増やしたい項目は以下のとおり
- 店舗名
- 店舗名フリガナ
- 会社名フリガナ
- 代表者名
- 代表者名(フリガナ)
- 担当者名
- 担当者名(フリガナ)
- ホームページURL
削除したい項目は以下のとおり
- お名前
- お名前(フリガナ)
- 性別
- 職業
- 生年月日
1.データベースに項目を追加
「お名前」「お名前(フリガナ)」と「代表者名」「代表者名(フリガナ)」は同じなので元のDBをそのまま利用しましょう。
SQL文にて以下を追加、ポスグレでもMySQLでもいけるはず
ALTER TABLE dtb_customer ADD shop_name text; -- 店舗名 ALTER TABLE dtb_customer ADD shop_kana text; -- 店舗名フリガナ ALTER TABLE dtb_customer ADD company_kana text; -- 会社名フリガナ ALTER TABLE dtb_customer ADD name03 text; -- 担当者名01 ALTER TABLE dtb_customer ADD name04 text; -- 担当者名02 ALTER TABLE dtb_customer ADD kana03 text; -- 担当者名(フリガナ)01 ALTER TABLE dtb_customer ADD kana04 text; -- 担当者名(フリガナ)02 ALTER TABLE dtb_customer ADD homepage text; -- ホームページURL
2.会員登録画面の編集
ファイルの編集
「data/Smarty/templates/[デザインテンプレ名:普通はdefault]/frontparts/form_personal_input.tpl」
私が編集しているのはデザインテンプレなのでHTMLソースは少し異なると思いますが、
以下の要領で増やしたい項目を追加していきます
<dl class="tr"> <dt>店舗名</dt> <dd> <!--{assign var=key1 value="`$prefix`shop_name"}--> <!--{$arrForm[$key1].value|h}--> </dd> </dl>
逆に減らしたい項目は以下のとおりコメントアウトしておきましょう
EC-CUBEのコメントアウトは独特なので注意
<!--{if false}--> ~ここから非表示~ <dl class="tr"> <dt>性別<span class="attention">※</span></dt> <dd> <!--{assign var=key1 value="`$prefix`sex"}--> <!--{foreach name=sex_loop from=$arrSex item=item key=key_sex}--> <!--{if !$smarty.foreach.sex_loop.first}--> <!--{/if}--> <input<!--{if $arrErr[$key1]}--> class="error"<!--{/if}--> type="radio" id="<!--{$key1}--><!--{$key_sex}-->" name="<!--{$key1}-->" value="<!--{$key_sex}-->"<!--{if $arrForm[$key1].value eq $key_sex}--> checked="checked"<!--{/if}--> /> <label for="<!--{$key1}--><!--{$key_sex}-->"><!--{$item|h}--></label> <!--{/foreach}--> <!--{if $arrErr[$key1]}--> <div class="attention"><!--{$arrErr[$key1]}--></div> <!--{/if}--> </dd> </dl> ~ここまで非表示~ <!--{/if}-->
3.会員登録システムの編集
EC-CUBEの2.13系からファイルの場所が変わりました
以下のSC_Helper_Customer.phpを編集します
「/data/class/helper/SC_Helper_Customer.php」
386行目付近の「function sfCustomerCommonParam」に以下のパラメータを追加します
$objFormParam->addParam('店舗名', $prefix . 'shop_name', STEXT_LEN, 'aKV', array('EXIST_CHECK','NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('店舗名フリガナ', $prefix . 'shop_kana', STEXT_LEN, 'aKV', array('EXIST_CHECK','NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'KANA_CHECK')); $objFormParam->addParam('会社名フリガナ', $prefix . 'company_kana', STEXT_LEN, 'aKV', array('EXIST_CHECK','NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'KANA_CHECK')); $objFormParam->addParam('担当者(姓)', $prefix . 'name03', STEXT_LEN, 'aKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('担当者(名)', $prefix . 'name04', STEXT_LEN, 'aKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('担当者名(フリガナ・姓)', $prefix . 'kana03', STEXT_LEN, 'aKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'KANA_CHECK')); $objFormParam->addParam('担当者名(フリガナ・名)', $prefix . 'kana04', STEXT_LEN, 'aKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'KANA_CHECK')); $objFormParam->addParam('ホームページURL', $prefix . 'homepage', STEXT_LEN, 'aKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
パラメータのそれぞれの意味は以下の通り
パラメータ | 意味 |
---|---|
EXIST_CHECK | 必須項目にする、空欄の場合はエラー |
NO_SPTAB | スペース、タブの判定、スペース、タブ、改行は含めた場合はエラー |
SPTAB_CHECK | スペース、タブの判定、スペース、タブ、改行のみの入力はエラー |
MAX_LENGTH_CHECK | 最大文字数制限の判定、○字を超えた入力でエラー |
KANA_CHECK | カタカナ以外を入力したらエラー |
そのすぐ下、会員登録共通「function sfCustomerRegisterParam」のいらない項目をコメントアウトします
//$objFormParam->addParam('性別', $prefix . 'sex', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); //$objFormParam->addParam('職業', $prefix . 'job', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); // XXX: year,month,dayはprefix付けないのが今のところ共通 //$objFormParam->addParam('年', 'year', 4, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); //$objFormParam->addParam('月', 'month', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); //$objFormParam->addParam('日', 'day', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);
ここでひとまず動くかテスト
ここまで編集すると、データベースへの登録までは出来るようになります
テストしてみましょう
ここまででちゃんと動けば後は各種ファイルを調整していくだけです
会員登録時確認画面
「data/Smarty/templates/[デザインテンプレ名:普通はdefault]/frontparts/form_personal_confirm.tpl」
マイページ編集画面
2.13系からここは自動で変換されます
マスタ管理画面
「/data/Smarty/templates/default/admin/customer/edit.tpl」
「/data/Smarty/templates/default/admin/customer/edit_confirm.tpl」
購入画面
「/data/Smarty/templates/[デザインテンプレ名:普通はdefault]/shopping/confirm.tpl」
いらない項目を非表示
<!--{if false}--> ~ここから非表示~ <dl class="tr"> <dt>性別</dt> <dd><!--{$arrSex[$arrForm.order_sex]|h}--></dd> </dl> <dl class="tr"> <dt>職業</dt> <dd><!--{$arrJob[$arrForm.order_job]|default:'(未登録)'|h}--></dd> </dl> <dl class="tr"> <dt>生年月日</dt> <dd> <!--{$arrForm.order_birth|regex_replace:"/ .+/":""|regex_replace:"/-/":"/"|default:'(未登録)'|h}--> </dd> </dl> ~ここまで非表示~ <!--{/if}-->
メール送信
「/data/Smarty/templates/default/mail_templates/order_mail.tpl」
次に、
B2Bの取引では会員に相応しいかどうかの審査をする必要があると思います
通常EC-CUBEでは会員登録と同時に会員になれますが、それを許可して始めて会員になれるように改造します。
EC-CUBEで会員登録を承認制に改造する方法【2.13系】
https://www.s-oj.com/ec-business/ec-cube-approval-membership/