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

この記事をシェアする

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

関連記事

Meteoric Streamについて

管理人

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