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!!