2.11系 フォームにセレクトボックスの項目を追加する
お問い合わせフォームや会員登録フォームなどに、「資料請求」や「アンケート」などを追加したい!
という要望があったので、EC-CUBEのフォームにセレクトボックスを追加してみた手順を自分用にメモ。
あんまり綺麗じゃないので、もっとコンパクトな記述があれば教えていただきたいです_(:3 」∠)_
1.LC_Page_Contactのinit内へセレクトボックスに表示する項目を追加する
function init() { parent::init(); ・ ・ ・ //配列 $this->arrCheckbox[0] = 'りんご'; $this->arrCheckbox[1] = 'みかん'; $this->arrCheckbox[2] = 'すいか'; $this->arrCheckbox[3] = 'さくらんぼ';
2.パラメーターの準備をする
/** * お問い合わせ入力時のパラメーター情報の初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ function lfInitParam(&$objFormParam) { $objFormParam->addParam("チェックボックス", 'check01', INT_LEN, 'KVa', array("MAX_LENGTH_CHECK"));
3.テンプレート内の表示させたいところへ以下のように記述する
<!--{assign var=key value="check01"}--> <!--{html_checkboxes name="$key" selected=$arrForm.check01 options=$arrCheckbox separator=' ' assign="checkboxes"}--> <!--{section name=checkbox loop=$checkboxes}--> <!--{$checkboxes[checkbox]}--> <!--{/section}-->
ちなみにseparatorが、要素同士の間の区切り方の指定です。
assignプロパティを指定してあるので、
セレクトボックスの要素が一旦assignで指定した変数へ配列として格納されます。
なので、section内でif文をかけば、n個ごとに改行を入れたり、
4番目と6番目だけ改行する、なんていうことも出来ます。
4.確認画面へ追加する
<!--{foreach from=$arrForm.check01.value item=check}--> <!--{$arrCheckbox[$check]}--> <input type="hidden" name="check01[]" value="<!--{$check}-->" /> <!--{/foreach}-->
5.メールテンプレートへ追加する
<!--{if $check== 0}-->・りんご <!--{elseif $check== 1}-->・みかん <!--{elseif $check== 2}-->・すいか <!--{elseif $check== 3}-->・さくらんぼ<!--{/if}-->
ここだけアナログですね・・・(苦笑)
以上でチェックボックスが設置&メールテンプレートへ反映されると思います。
ただ、確認画面で「戻る」を押した時に、
元の入力画面で入力した情報が再度引き継がれるようにする処理は
含まれていないので、別途つけてあげてください^^;