EC-CUBE4 – acmailerと連携
EC-CUBE4のお問い合わせページとメルマガ管理ツール[acmailer]を連携させました。
復習を兼ねてその手順をシェアします。
ちょっとPHPいじれるレベルの方向けです。
仕様としては、
- お問い合わせページ 入力 – [ 確認ページへ ]
- お問い合わせ内容確認ページ [ 送信 ]
- acmailer 登録確認ページ表示
- [ 登録しない ]なら送信完了ページへ遷移 —> /contact/complete
[ 登録する ]ならacmailerの登録ページに遷移 —> acmailer/reg.cgi - acmailerで登録処理後、送信完了ページへ自動遷移 —> /contact/complete
いじるところは、
- /src/Eccube/Controller/ContactController.php
- /app/template/mytpl/Contact/mmreg.twig 作成し上記でコントロール
- /acmailer/tmpl/reg_finish.tmpl
新規会員登録の際にacmailer登録してもらいたい時も同様の手順でいけます。
その場合、いじるファイル名をContact から Entry に置き換えて読んでください。
裏の設定
acmailer登録確認ページに遷移
/src/Eccube/Controller/ContactController.php
お問い合わせ内容の送信後の遷移先を新規ページのメルマガ登録ページに変更します。
case ‘complete’:
……… 省略 ………
// 送信後送信完了ページへ
return $this->redirect($this->generateUrl(‘contact_complete’));
上記を以下に変更
// 送信後メルマガ登録確認ページへ
return $this->render(‘Contact/mmreg.twig’, [
‘form’ => $form->createView(),
]);
遷移設定は以上です。
表の設定
acmailer登録確認ページ作成
/app/template/mytpl/Contact/mmreg.twig
上記ファイルをconfirm.twigと同じ階層に新しく作ります。
mmregのmmはメルマガです。Controller.phpと合わせて好きな文字列使ってください。
confirm.twigを参考にフォーム内容持ってきます。
今回は、会社名、姓名、メールアドレスなので
{{ form.company_name.vars.data }}
{{ form.name.name01.vars.data }} {{ form.name.name02.vars.data }}
{{ form.email.vars.data }}
ですね。
これをacmailer登録用フォームに埋め込みます。
参考までに会社名部分
<dl>
<dt>
{{ form_label(form.company_name, ‘会社名’, { ‘label_attr’: { ‘class’: ‘ec-label’ }}) }}
</dt>
<dd>
{{ form.company_name.vars.data }}
<!–必須–>
<input type=”hidden” name=”col1″ size=”30″ value=”{{ form.company_name.vars.data }}“>
<!–/必須–>
</dd>
</dl>
ここまで来れば送信ボタンはEC-CUBE4に依存しません。
参考までに送信ボタンの処理
{% block main %}
<script type=”text/javascript”>
function actionA(){
document.getElementById(‘form’).action = ‘/acmailer/reg.cgi’;
}
function actionB(){
document.getElementById(‘form’).action = ‘/contact/complete’;
}
</script>
……… 省略 ………
<!–必須–>
<button type=”submit” name=”submit” value=”登録する” class=”input ec-blockBtn–action” onclick=”actionA();“>登録する</button>
<button type=”submit” name=”submit2″ value=”登録しない” class=”input ec-blockBtn–cancel” onclick=”actionB();“>登録しない</button>
<input type=”hidden” name=”reg” value=”add”>
<input type=”hidden” name=”encode” value=”文字コード”>
<!–/必須–>
裏の設定
送信完了ページに遷移
/acmailer/tmpl/reg_finish.tmpl
acmailerに登録後送信完了ページに戻すのはacmailerのお仕事です。
var currentURL = currentURL1.replace(‘mmreg’,’success’);
上記を以下に直します。
var currentURL = currentURL1.replace(‘contact’,’contact/complete’);
ちなみに新規会員登録にもacmailer登録を埋め込みたいなら
var currentURL = currentURL1.replace(‘contact’,’contact/complete’).replace(‘entry’,’entry/complete’);
後はacmailer登録確認ページのスタイルをいじって完了となります。
最後の〆
管理画面「コンテンツ管理」-「キャッシュ管理」-「キャッシュ削除」
以上です。
当サイトでは何の保証もいたしませんので、十分にテストされてから本番環境に実装してください。
何か不備を発見の際はご教示いただければ幸いです。