【ECCube3】「メルマガを受け取る」のチェックボックスを作る方法
ECCube3で、会員登録フォームに、
「メルマガを受け取る」のチェックボックスを付け、
メルマガ登録を促す方法です。
メルマガの配信スタンドとは連動していないため、
別途、定期的に、チェックが入っているかどうかを確認して、
手動でメルマガに登録する必要はあります。
ちなみに、会員のテーブルにカラムを追加する場合の手順としても、参考になると思います。
Customerというクラスを定義して、getMailFlg()、setMailFlg()で読み書きできるようにするための設定です。たぶん。
Doctrine(型などの定義ファイル?)を編集します。型はsmallintあたりのはずなのですが、
booleanじゃないと上手くいきませんでした。
EC-Cubeのバージョンにもよるかも。
フォームの設定ファイルっぽいやつですね。
テンプレートファイルを編集します。
コントローラーを編集します。
ここからは、フロント側向けの修正です。
フロント側のフォーム定義ファイル。
新規会員登録フォームのテンプレートファイルを編集します。
こちらは確認画面です。
マイページの、会員情報変更フォームでも、メルマガのチェックを編集できるように、テンプレートファイルを修正します。
・・・たったこれだけの追加に、かなりのファイルを修正しなければならない。
これが、ECCubeなわけですな☆
ちなみに、上記だけでなく、会員登録CSVに、メルマガフラグのための項目を付けたり、定期的にメルマガ受け取りにチェックが入っているかどうかを、リスト化するための処理を作ったりと、ちゃんと実装するなら、もっと多岐に渡る修正が必要かも知れません。
というわけで、GOOD LUCK!!
「メルマガを受け取る」のチェックボックスを付け、
メルマガ登録を促す方法です。
メルマガの配信スタンドとは連動していないため、
別途、定期的に、チェックが入っているかどうかを確認して、
手動でメルマガに登録する必要はあります。
ちなみに、会員のテーブルにカラムを追加する場合の手順としても、参考になると思います。
テーブルにカラムを追加
dtb_customerに、カラムを追加します。
カラム名:mail_flg
型:smallint null default '0'
カラム名: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;}
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'
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',
))
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) }}
上記ファイルが無い場合は、
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();
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',
))
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>
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>
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>
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
この記事をシェアする
関連記事
- ・【ECCube3】お届け日の最大日数を設定する
- ・【ECCube3】AmazonPayで、お届け日調整プラグインが機能しない時の対策
- ・【ECCube3】クロネコとGMOペイメントで、受注編集画面のGMO決済ボタンがエラーになる件
- ・【ECCube3】管理画面のログをちゃんとソートする方法
- ・【EC-Cube3】Amazonペイメントとクロネコペイメントの組み合わせで受注編集画面のエラーが出る件
- ・【ECCube3】EC-Cubeでキーワード検索を高速化する方法
- ・【EC-Cube3】商品詳細ページに在庫数を表示したり、計算できるようにする
- ・【EC-Cube3】トップページに新着情報を自動表示する
- ・【EC-CUBE3】商品詳細ページだけH1タグの値を変える方法
- ・【EC-CUBE3】商品登録CSVの項目をプラグイン無しで変更する