Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> EC-Cube3 -> 【ECCube3】「メルマガを受け取る」のチェックボックスを作る方法

【ECCube3】「メルマガを受け取る」のチェックボックスを作る方法

ECCube3で、会員登録フォームに、
「メルマガを受け取る」のチェックボックスを付け、
メルマガ登録を促す方法です。

メルマガの配信スタンドとは連動していないため、
別途、定期的に、チェックが入っているかどうかを確認して、
手動でメルマガに登録する必要はあります。

ちなみに、会員のテーブルにカラムを追加する場合の手順としても、参考になると思います。

テーブルにカラムを追加

dtb_customerに、カラムを追加します。 カラム名:mail_flg 型:smallint null default '0'

Entityの編集

Customerというクラスを定義して、getMailFlg()、setMailFlg()で読み書きできるようにするための設定です。たぶん。
/src/Eccube/Entity/Customer.php 1240行目あたり: 下記を追加します。 private $mail_flg; public function getMailFlg(){return $this->mail_flg;} public function setMailFlg($mail_flg){$this->mail_flg = $mail_flg; return $this;}

Doctrineの編集

Doctrine(型などの定義ファイル?)を編集します。型はsmallintあたりのはずなのですが、 booleanじゃないと上手くいきませんでした。 EC-Cubeのバージョンにもよるかも。
/src/Eccube/Resource/doctrine/Eccube.Entity.Customer.dcm.yml 144行目あたり: fields:の最後尾あたりに追加します。 mail_flg: type: boolean nullable: false unsigned: false options: default: '0'

Typeの編集(管理画面用)

フォームの設定ファイルっぽいやつですね。
/src/Eccube/Form/Type/Admin/CustomerType.php 122行目あたり: buildFormメソッド内に追加します。 ->add('mail_flg', 'checkbox', array( 'label' => 'メルマガを受け取る', 'required' => false, 'value' => '1', ))

Twigの編集(管理画面の会員情報変更)

テンプレートファイルを編集します。
/app/template/admin/Customer/edit.twig 上記ファイルが無い場合は、 src/Eccube/Resouces/template/admin/Customer/edit.twig を、 コピペして生成します。 192行目あたり(どこでも良いのでform内に下記を追加) {{ form_row(form.mail_flg) }}

Controllerの編集(フロント側の新規会員登録フォーム用)

コントローラーを編集します。 ここからは、フロント側向けの修正です。
/src/EccubeController/EntryContoller.php: 56行目あたり: 赤文字の箇所を追加(デフォルトでチェックを入れる処理): $Customer = $app['eccube.repository.customer']->newCustomer();
$Customer->setMailFlg(true);

Typeの編集(フロント側用)

フロント側のフォーム定義ファイル。
/src/Eccube/Form/Type/Front/EntryType.php: 92行目あたり: ->add('mail_flg', 'checkbox', array( 'label' => 'メルマガを受け取る', 'required' => false, 'value' => '1', ))

twigの編集(フロント側の新規会員登録フォーム)

新規会員登録フォームのテンプレートファイルを編集します。
/app/template/default/Entry/index.twig: 150行目あたり: <dl id="top_box__mailflg"> <dt>{{ form_label(form.mail_flg) }}</dt> <dd> <div class="form-group form-inline"> {{ form_widget(form.mail_flg) }} {{ form_errors(form.mail_flg) }} </div> </dd> </dl>
こちらは確認画面です。
/app/template/default/Entry/confirm.twig: 127行目あたり: <dl id="confirm_box__mailflg"> <dt>{{ form_label(form.mail_flg) }}</dt> <dd> <div class="form-group form-inline"> {{ form_widget(form.mail_flg) }} </div> </dd> </dl>

twigの編集(マイページの会員情報変更フォーム)

マイページの、会員情報変更フォームでも、メルマガのチェックを編集できるように、テンプレートファイルを修正します。
/app/template/default/mypage/change.twig: 153行目あたり: <dl id="detail_box__mailflg"> <dt>{{ form_label(form.mail_flg) }}</dt> <dd> <div class="form-group form-inline"> {{ form_widget(form.mail_flg) }} {{ form_errors(form.mail_flg) }} </div> </dd> </dl>
・・・たったこれだけの追加に、かなりのファイルを修正しなければならない。 これが、ECCubeなわけですな☆ ちなみに、上記だけでなく、会員登録CSVに、メルマガフラグのための項目を付けたり、定期的にメルマガ受け取りにチェックが入っているかどうかを、リスト化するための処理を作ったりと、ちゃんと実装するなら、もっと多岐に渡る修正が必要かも知れません。 というわけで、GOOD LUCK!!

この記事の最終更新日:2018/07/05
最初に記事を書いた日:2018/07/05

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

資料室のトップに戻る
Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> EC-Cube3 -> 【ECCube3】「メルマガを受け取る」のチェックボックスを作る方法
▲Top English