「EC-CUBEカスタマイズ!会員登録から必須チェックを削除する」では、EC-CUBE2.13をカスタマイズして会員登録画面から必須チェックを削除する方法を説明します。
EC-CUBEの会員登録情報でデフォルトの項目でいらないという項目があったり、逆に追加したいという項目があることがあります。
私の場合、「メールマガジン送付について」は使ったことありません。
でも入力必須になっているんですよね。
「メールマガジン送付について」の項目自体をなくしてしまうということも出来ますが、
今回は「メールマガジン送付について」の必須入力チェックの削除を行ってみましょう。
必須チェックについて
「メールマガジン送付について」のチェックを入れずに「確認ページへ」のボタンをクリックすると警告が出てしまいます。
このように、入力必須の項目にはタイトル部に ※ が付いていて、未入力のまま「確認ページへ」をクリックすると警告が表示されます。
テンプレートの修正
data/Smarty/templates/default/frontparts/form_personal_input.tpl
<th>メールマガジン送付について<span class="attention">※</span></th>
の部分から ※ を表示している箇所を削除するだけです。
<th>メールマガジン送付について</th>
ソースの修正
data/class/helper/SC_Helper_Customer.php の sfCustomerRegisterParam になりますので、
data/class_extends/helper_extends/SC_Helper_Customer_Ex.php にコピーしてきて修正します。
/** * 会員登録共通 * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param boolean $isAdmin true:管理者画面 false:会員向け * @param boolean $is_mypage マイページの場合 true * @param string $prefix キー名にprefixを付ける場合に指定 * @return void */ public function sfCustomerRegisterParam(&$objFormParam, $isAdmin = false, $is_mypage = false, $prefix = '') { $objFormParam->addParam('パスワード', $prefix . 'password', PASSWORD_MAX_LEN, '', array('EXIST_CHECK', 'SPTAB_CHECK', 'GRAPH_CHECK')); $objFormParam->addParam('パスワード確認用の質問の答え', $prefix . 'reminder_answer', STEXT_LEN, '', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('パスワード確認用の質問', $prefix . 'reminder', STEXT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); $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')); $objFormParam->addParam('年', $prefix . 'year', 4, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); $objFormParam->addParam('月', $prefix . 'month', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); $objFormParam->addParam('日', $prefix . 'day', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); $objFormParam->addParam('メールマガジン', $prefix . 'mailmaga_flg', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE) { $objFormParam->addParam('メールアドレス', $prefix . 'email', null, 'a', array('NO_SPTAB', 'EXIST_CHECK', 'EMAIL_CHECK', 'SPTAB_CHECK', 'EMAIL_CHAR_CHECK')); $objFormParam->addParam('パスワード(確認)', $prefix . 'password02', PASSWORD_MAX_LEN, '', array('EXIST_CHECK', 'SPTAB_CHECK', 'GRAPH_CHECK'), '', false); if (!$isAdmin) { $objFormParam->addParam('メールアドレス(確認)', $prefix . 'email02', null, 'a', array('NO_SPTAB', 'EXIST_CHECK', 'EMAIL_CHECK', 'SPTAB_CHECK', 'EMAIL_CHAR_CHECK'), '', false); } } else { if (!$is_mypage) { $objFormParam->addParam('メールアドレス', $prefix . 'email', null, 'a', array('EXIST_CHECK', 'EMAIL_CHECK', 'NO_SPTAB', 'EMAIL_CHAR_CHECK', 'MOBILE_EMAIL_CHECK')); } } }
21行目のメールマガジンの行にある array(‘EXIST_CHECK’, ‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’) から ’EXIST_CHECK’, を削除してください。
$objFormParam->addParam('メールマガジン', $prefix . 'mailmaga_flg', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
以上でこのように必須チェックが外れます。
「パスワードを忘れた時のヒント」には * マークと必須入力の警告メッセージが出ていますが、「メールマガジン送付について」にはついていません。
このまま確認画面、登録とすすめることが出来ます。
注意
他の項目でも同様の手順で必須チェックを外すことは出来ますが、顧客情報が登録されるデータベースの dtb_customer テーブルの該当のカラムが NULL を許容していない場合、DB登録時にエラーが起こります。
phpMyAdmin の画面
mailmaga_flg というカラムが「メールマガジン送付について」の情報が保存されるところになります。
ここの NULL の列(赤枠の箇所)が「はい」になっている場合は問題ありません。
(赤枠の右のNULLとなっているのは、デフォルト値の列ですので間違えないようにしてください)
ほかの項目で必須チェックを外そうとした場合、まずは dtb_customer テーブルを確認して、値が未設定(NULL)でも大丈夫化を確認しましょう
コメントを残す