EC-CUBE4 – acmailerと連携

EC-CUBE4のお問い合わせページとメルマガ管理ツール[acmailer]を連携させました。
復習を兼ねてその手順をシェアします。
ちょっとPHPいじれるレベルの方向けです。

 

仕様としては、

  1. お問い合わせページ 入力 – [ 確認ページへ ]
  2. お問い合わせ内容確認ページ [ 送信 ]
  3. acmailer 登録確認ページ表示
  4. [ 登録しない ]なら送信完了ページへ遷移 —> /contact/complete
    [ 登録する ]ならacmailerの登録ページに遷移 —> acmailer/reg.cgi
  5. acmailerで登録処理後、送信完了ページへ自動遷移 —> /contact/complete

 

いじるところは、

  1. /src/Eccube/Controller/ContactController.php
  2. /app/template/mytpl/Contact/mmreg.twig 作成し上記でコントロール
  3. /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登録確認ページのスタイルをいじって完了となります。

 

最後の〆

管理画面「コンテンツ管理」-「キャッシュ管理」-「キャッシュ削除」

 

 

以上です。

当サイトでは何の保証もいたしませんので、十分にテストされてから本番環境に実装してください。
何か不備を発見の際はご教示いただければ幸いです。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA