EC-CUBEの会員登録項目をテキスト入力項目にカスタマイズ
新規に増やさず、他を使い回す技術
ECCUBEではあまり使い道のない、無駄な項目があります。
それを細かく説明してるのが、以下の記事。
EC-CUBEの会員登録画面で客を逃がさない為のカスタマイズ
こちらでは、性別、職業、生年月日の3つを槍玉に挙げてますね。
だもんで、わざわざ登録項目を新規に追加するより、この3つを変化させる方が、データベースとかあまりいじらないで、楽だという事です。
では、今回の目標として、性別項目を自社URL項目へ。
職業項目を月の購入予算項目へと改造することとします。
チェックボックス方式をテキスト入力方式へ
性別項目ですが、何故か必須です。
そして、チェックボックス方式です。
これを、テキストが入力できるように変えましょう。
/data/class/helperのSC_Helper_Customer.php
399行目を以下に書き換え。
$objFormParam->addParam('URL', 'sex', STEXT_LEN, 'aKV', array('NO_SPTAB', 'SPTAB_CHECK' ,'MAX_LENGTH_CHECK'));
/data/Smarty/templates/default/frontparts/form_personal_input.tpl
158行目付近を以下に書き換え。
<tr>
<th>自社サイトURL</th>
<td>
<!--{assign var=key1 value="`$prefix`sex"}-->
<span style="<!--{$arrErr[$key1]|sfGetErrorColor}-->">
<input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1]|h}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->; ime-mode: disabled;" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" class="box380 top" />
</span>
</td>
</tr>
データベースの変更も必須です。
データベース操作は、phpMyAdminの場合で説明します。
アカウントにログイン>EC-CUBEのデータベース>dtb_customer
そこにあるフィールド「sex」の種別をTEXT型に。
照合順序は自動的に入力されます。
これで、入力は可能となります。
が、修正箇所がいくつかあるので、一気にやります。
/data/Smarty/templates/default/entry/confirm.tpl
95行目付近を以下に書き換え。
<tr>
<th>自社サイトURL</th>
<td>
<a target="blank" href="<!--{$arrForm.sex}-->"><!--{$arrForm.sex}--></a>
</td>
</tr>
<tr>
/data/Smarty/templates/default/mypage/change_complete.tpl
83行目付近を以下に書き換え。
<tr>
<th>自社サイトURL</th>
<td>
<a target="blank" href="<!--{$arrForm.sex}-->"><!--{$arrForm.sex}--></a>
</td>
</tr>
これで客側に見える部分は、正確に表示されているはずです。
工夫による項目の追加
さて、次に追加するは、月の購入予算です。
ECサイトなわけですから、やはり会員になったからには、定期的な購入が欲しいですね。
なので、こんな項目です。
答えたくない客もいるでしょうから、そこはまあ、飾りとしてでも。
では、やり方をば。
管理画面>システム設定>マスターデータ管理>mtb_job を選択
すると、以下のような画面が。

というわけで、画像のように金額で区切っても良いですし、ここは自由です。
こうして選択性の質問があるならば、わざわざ難しい事をしなくても、管理画面から変更がききますので、利用していきましょう。
表示の部分は、自社サイトURL項目のを参考にしましょう。
管理画面の表示を修正
最後に、管理画面の方の表示も修正して、完成と行きましょう。
まず、検索結果一覧の、性別枠を削除しましょう。
/data/Smarty/templates/admin/customer/index.tpl
113行目~148行目を以下に書き換え
<!--検索結果表示テーブル-->
<table class="list" id="customer-search-result">
<col width="8%" />
<col width="10%" />
<col width="30%" />
<col width="38%" />
<col width="7%" />
<col width="7%" />
<tr>
<th rowspan="2">種別</th>
<th>会員ID</th>
<th rowspan="2">お名前/(フリガナ)</th>
<th>TEL</th>
<th rowspan="2">編集</th>
<th rowspan="2">削除</th>
</tr>
<tr>
<th>都道府県</th>
<th>メールアドレス</th>
</tr>
<!--{foreach from=$arrData item=row}-->
<tr>
<td class="center" rowspan="2"><!--{if $row.status eq 1}-->仮<!--{else}-->本<!--{/if}--></td>
<td><!--{$row.customer_id|h}--></td>
<td rowspan="2"><!--{$row.name01|h}--> <!--{$row.name02|h}--><br>(<!--{$row.kana01|h}--> <!--{$row.kana02|h}-->)</td>
<td><!--{$row.tel01|h}-->-<!--{$row.tel02|h}-->-<!--{$row.tel03|h}--></td>
<td class="center" rowspan="2"><span class="icon_edit"><a href="#" onclick="return fnEdit('<!--{$row.customer_id|h}-->');">編集</a></span></td>
<td class="center" rowspan="2"><span class="icon_delete"><a href="#" onclick="return fnDelete('<!--{$row.customer_id|h}-->');">削除</a></span></td>
</tr>
<tr>
<td><!--{assign var=pref value=$row.pref}--><!--{$arrPref[$pref]}--></td>
<td><!--{mailto address=$row.email encode="javascript"}--></a><!--{if $row.status eq 1}--><br /><a href="#" onclick="return fnReSendMail('<!--{$row.customer_id|h}-->');">仮登録メール再送</a><!--{/if}--></td>
</tr>
<!--{/foreach}-->
</table>
<!--検索結果表示テーブル-->
次に検索条件設定も修正。
/data/Smarty/templates/admin/adminparts/form_customer_search.tpl
まず、31行目から85行目までを完全削除
※性別とか誕生日とかを利用しない人に限ります。
同じく元108行目
<th>月の購入予算</th>
本当は、この予算の部分をプルダウン化したかったんですけど、やはりわからなかったですね。
不憫な事です。
さらに続いて各顧客ページの修正。
/data/Smarty/templates/admin/customer/edit.tpl
151行目~185行目付近を以下に書き換え。
<tr>
<th>自社サイトURL</th>
<td>
<span class="attention"><!--{$arrErr.sex}--></span>
<input type="text" name="sex" value="<!--{$arrForm.sex|h}-->" size="60" class="box60" <!--{if $arrErr.sex != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> />
</td>
</tr>
<tr>
<th>月の購入予算</th>
<td>
<span class="attention"><!--{$arrErr.job}--></span>
<select name="job" <!--{if $arrErr.job != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> >
<option value="" selected="selected">選択してください</option>
<!--{html_options options=$arrJob selected=$arrForm.job}-->
</select>
</td>
</tr>
例によって、生年月日の枠は削除してあります。
最後は変更の確認ページです。
/data/Smarty/templates/admin/customer/edit.tpl
102行目~113行目まで以下に書き換え。
<tr>
<th>自社サイトURL</th>
<td><!--{$arrForm.sex|h}--></td>
</tr>
<tr>
<th>月の購入予算</th>
<td><!--{$arrJob[$arrForm.job]|default:"未登録"|h}--></td>
</tr>
完成ですね。
結構、曖昧なやり方ですが、これでいけるはずです。
総括
見事なまでに無駄に長い記事となってしまいましたが、いかがでしょうか。
それなりに役に立つのではないでしょうか。
データベースも触るのは一回だけですし、いらないところを削除して、すっきり見やすくもなります。
このやり方ならば、最高で3つまで項目が増やせますね。
他の項目と引き換えに、ですが。
なんにせよ、URL入力欄とかは、必要とするECサイトも多いでしょうから、もしかしたら結構、良い記事を書いたのかもしれませんね。
以上でした。
このカスタマイズはVer.2.12でも利用できます。
