EC-CUBEの会員登録画面に独自の項目を追加する方法をご紹介いたします。
今回、項目を追加した環境は、EC-CUBE2.13.2です。”紹介コード”というのを追加したかったので、”紹介コード”を追加する前提で話を進めていきます。項目の名前などは、適宜置き換えて実施してください。
ステップ1. データベースへの追加
まずは、データベースへ登録できるように、追加したい項目の列を追加します。
以下のSQLを実行することで、列を追加できます。
ALTER TABLE dtb_customer ADD code text;「code」の部分は、環境に合わせて変更してください。
ステップ2. /data/Smarty/templates/テンプレート名/frontparts/form_personal_input.tplの編集
/data/Smarty/templates/テンプレート名/frontparts/form_personal_input.tplでは、入力フォームが記述されていますので、その中に項目を追加します。
<tr>
  <th>紹介コード</th>
  <td>
    <!--{assign var=key1 value="`$prefix`code"}-->
    <input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="box120">
  </td>
</tr>ソースはテンプレートによって異なると思います。今回編集した環境では、テーブルで記述されていたので上記のようにしました。
例によって、「code」やクラス名などは、環境に合わせて変更してください。
ステップ3. /data/Smarty/templates/テンプレート名/frontparts/form_personal_confirm.tplの編集
/data/Smarty/templates/テンプレート名/frontparts/form_personal_confirm.tplは、入力内容の確認画面です。確認画面でも入力内容が表示されるように、項目を追加します。
<tr>
  <th>紹介コード</th>
  <td>
    <!--{assign var=key1 value="`$prefix`code"}-->
    <!--{$arrForm[$key1].value|h}-->
  </td>
</tr>ここでも「code」の部分は変更してください。
ステップ4. /data/class/helper/SC_Helper_Customer.phpの編集
/data/class/helper/SC_Helper_Customer.phpの450行目あたりにある「public function sfCustomerRegisterParam」の中に、以下を追加します。
$objFormParam->addParam('紹介コード', $prefix . 'code', STEXT_LEN, 'n', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));arrayの中に入れている各パラメータの意味については、以下の通りです。
| EXIST_CHECK | 必須項目にする | 
| NO_SPTAB | スペース、タブ、改行はエラー | 
| SPTAB_CHECK | スペース、タブ、改行のみの入力はエラー | 
| MAX_LENGTH_CHECK | 最大文字数制限の判定 | 
その他、指定できるパラメータについては、こちらの記事がまとまっていて大変参考になります。また、具体的なチェック内容は「/data/class/SC_CheckError.php」で定義されています。
ここまでできたら、とりあえず動作します。会員登録時に追加した”紹介コード”を入力すると、データベース上のcode列に保存されるようになります。
ステップ5. /data/Smarty/templates/admin/customer/edit.tplの編集
/data/Smarty/templates/admin/customer/edit.tplは、管理画面での会員登録および会員情報編集画面です。以下を追加します。
<tr>
  <th>紹介コード</th>
  <td>
    <span class="attention"><!--{$arrErr.code}--></span>
    <input type="text" name="code" value="<!--{$arrForm.code|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" size="30" class="box30" <!--{if $arrErr.code !="" }--><!--{sfSetErrorStyle}--><!--{/if}-->>
  </td>
</tr>ステップ6. /data/Smarty/templates/admin/customer/edit_confirm.tplの編集
/data/Smarty/templates/admin/customer/edit_confirm.tplは、管理画面の会員情報編集の確認画面です。以下を追加します。
<tr>
  <th>紹介コード</th>
  <td><!--{$arrForm.code|h}--></td>
</tr>これで、管理画面から会員登録・編集する時も、追加した項目が表示されるようになります。
あとがき
今回は項目を追加する方法をご紹介いたしましたが、上記の手順とは逆に削除したい場合は、項目を追加した箇所それぞれで削除したい項目をコメントアウトしていけばOKです。
なお、カート内で会員登録もできるようにカスタマイズしている場合は、/data/class/pages/cart_exp内のLC_Page_Cart_Exp.phpとLC_Page_Cart_Exp_Confirm.phpの編集も必要になる場合があります。

