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でも利用できます。