EC-CUBE 会員登録ページに初期値を設定する

■会員登録ページの項目に初期値を設定する

EC-CUBEがデフォルトでは会員登録の『性別』や『メールマガジン』等の
フィールドは未選択で設定されている

女性の購入者が多ければ初期値は『女性』にしておいた方が便利だし
必須項目についても入力の煩わしさを回避するために初期値を設けたほうが良い場合もある

[初期設定する項目]

性別:女性
メールマガジンの送付について:HTMLメール

手順は下記の通り

拡張クラス”SC_Helper_Customer_Ex”にコードを追記する
/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', 'ALNUM_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'));
    // 末尾に女性を示す値"2"を設定
    $objFormParam->addParam('性別', $prefix . 'sex', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'), 2);
    $objFormParam->addParam('職業', $prefix . 'job', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
    // XXX: year,month,dayはprefix付けないのが今のところ共通
    $objFormParam->addParam('年', 'year', 4, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);
    $objFormParam->addParam('月', 'month', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);
    $objFormParam->addParam('日', 'day', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);

    // 末尾にHTMLメールを示す値"1"を設定
    $objFormParam->addParam('メールマガジン', $prefix . 'mailmaga_flg', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'), 1);

    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' ,'ALNUM_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'));
        }
    }
}
addParam関数の第6引数に初期値が設定出来る

■運用しやすくする

上記の設定の場合だと、初期値を男性に変えたい等の仕様変更の際にフォルダが深いため
わざわざ調べる必要がある。覚えていれば問題ないが・・・

上記問題をクリアするため設定情報は1つのファイルに格納するようにする

定義ファイル”define.php”に下記を追記する
/html/define.php

////////////////////////////////////////////////////////////////////////////////
// 店舗サイト設定
define('ENTRY_INIT_SEX', 2);           // 1:男性 2:女性
define('ENTRY_INIT_MAILMAGAZINE', 1);  // 1:HTMLメール 2:テキストメール 3:希望しない

拡張クラス”SC_Helper_Customer_Ex”にコードを修正する
/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', 'ALNUM_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'));
    // ↓↓↓定数ENTRY_INIT_SEXを使用↓↓↓
    $objFormParam->addParam('性別', $prefix . 'sex', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'), ENTRY_INIT_SEX);
    $objFormParam->addParam('職業', $prefix . 'job', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
    // XXX: year,month,dayはprefix付けないのが今のところ共通
    $objFormParam->addParam('年', 'year', 4, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);
    $objFormParam->addParam('月', 'month', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);
    $objFormParam->addParam('日', 'day', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);

    // ↓↓↓定数ENTRY_INIT_MAILMAGAZINEを使用↓↓↓
    $objFormParam->addParam('メールマガジン', $prefix . 'mailmaga_flg', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'), ENTRY_INIT_MAILMAGAZINE);

    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' ,'ALNUM_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'));
        }
    }
}
こうすることでもし、『男性』に変更したい場合はdefine.phpファイルの
『ENTRY_INIT_SEX』の値を"1"に変えてやるとよい

ec_cube_037

Comments are closed.