EC-CUBEの会員登録項目をテキスト入力項目にカスタマイズ

2012年6月29日 17:45
前回の記事EC-CUBEの小技:会員登録に会社名の項目を追加では、会社名の登録項目を無理やり作りました。

しかし、会社名以外にも客に記入して欲しい項目は本来、あってしかるべきもの。
というわけで、今回も無理やり項目を作ります。
ついでにいいますと、管理画面の方の表示も修正し忘れていたので、すべてまとめてご紹介します。
この記事は最終更新日から1年以上が経過しています。

新規に増やさず、他を使い回す技術

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 を選択
すると、以下のような画面が。
WS0003

というわけで、画像のように金額で区切っても良いですし、ここは自由です。
こうして選択性の質問があるならば、わざわざ難しい事をしなくても、管理画面から変更がききますので、利用していきましょう。

表示の部分は、自社サイト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でも利用できます。

ブログ運営

株式会社ちょもらんま

https://qomolangma.jp