EC-CUBE4プラグインで新規作成したメールテンプレートファイルを連動させる方法
EC-CUBE4プラグインで、カスタマイズしたmail_templateファイルを連動させる方法をご紹介します。
例として、問合せフォームの問合せ受付メールと連動させます。
ここでは、本サイトで既にご紹介している問合せフォームの複製を利用する形でご紹介します。
・以下の記事を参考に、プラグインの雛形を作成してください。※既に作成済みの方は省略してください。
・以下の記事を参考に、作成したプラグインの雛形内に問合せフォームを複製してください。※既に作成済みの方は省略してください。
・以下のファイルを指定のフォルダーにコピーしてください。(本記事では、例としてプラグインフォルダー名の部分をHogePluginとしています。)
パス:src/Eccube/Service/MailService.php
⇒app/Plugin/HogePlugin/Serviceフォルダー内
※Serviceフォルダーは無ければ作成する。
・メールテンプレートファイルを作成してください。
ここでは、問合せフォームのメールテンプレートファイル×2種類(HTMLメール用・テキストメール用)をコピーし、それらのファイルと連動させます。
・パス:src/Eccube/template/default/Mail/contact_mail.twigおよびcontact_mail.html.twig
⇒app/Plugin/HogePlugin/Resource/template/ 命名自由フォルダー内にコピーしてください。(本記事ではmailフォルダーとします。)※無いフォルダーは新たに作成する。
・ファイル名のみ変更してください。(例:my_contact.mail.twig および my_contact_mail.html.twig)
※ファイル名は両ファイルとも、twigもしくはhtml.twig以前は必ず共通の名称にしてください。それぞれを別の名称にしてしまうと、MailServiceのgetHtmlTemplateメソッドの部分でエラーになります。
・Config.phpの変更点
・plg_…_configテーブルを作成します(今回はplg_hoge_plugin_configとします)。
・idとnameカラムがデフォルトで設定されていますが、新たに以下の2カラムを追加します。
1.dtb_mail_template テーブルから、該当のメールテンプレートファイルのidを取得するカラム。※今回、そのカラム名をmail_template_id とする。
2.連動するmail_templateファイルを検索するためのカラム。※今回、そのカラム名を、kensakuとする。
※nameカラムは無意味なカラムになっていますが、削除すると変更箇所がさらに増えるため、今回は残します。
・Config.phpの修正箇所は以下のファイルに全て記載しています。※行数の記載があるが、修正するうちに行がずれるため、初期の行数で表示。
・PluginManager の変更点
PluginManager.phpを以下のファイルのように作成し、プラグインフォルダー直下に保存してください。
また、既に本ブログの記事を見てPluginManager.phpを作成された方もソースコードが大幅に変わっているので、以下のファイルのように修正してください。
ここで重要なのは、dtb_mail_templateの新規レコードのid と plg_hoge_plugin_configテーブルのmail_template_id の数値を一致させることです。
・MailService.php の変更点
・MailService.phpファイルを以下のファイルのように修正してください。
ここで修正したのは、大きく分けて以下の4点です。
①問合せフォームに不要な大半のコードの削除。(残したままでも動きますが、そのままでは見辛いので整理します。)
②namespaceの変更。
③ConfigRepository.phpを使用するにあたって必要なコード一式追加。
④送信するお問合せ受付メールのテンプレートを、新規作成したメールテンプレートファイルで設定する。
①問合せフォームに不要な大半のメソッドの削除。
sendContactMailメソッドとgetHtmlTemplate以外の全てのメソッドを削除。
不要なメソッドは会員登録や受注時など、お問い合わせとは無関係のものになります。
不要なメソッドは残したままでも動きますが、コードを見やすくするために整理します。
②namespaceの変更。
・Plugin\HogePlugin\Service; に変更する。
③ConfigRepository.phpを使用するにあたって必要なコード一式追加。
・use Symfony\Component\EventDispatcher\EventDispatcherInterface; の下に、以下のコードを追加する。
use Plugin\HogePlugin\Repository\ConfigRepository; を追加する。
・protected $twig; の下に、以下のコードを追加する。
・sendContactMailメソッド内の以下のコードを削除。
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig[‘eccube_contact_mail_template_id’]
・削除した場所に、以下の3行の追加。
$config = $this->configRepository->findOneBy([“kensaku” => ‘search_mail_template’]);
$mail_template_id = $config->getMailTemplateId();
$MailTemplate = $this->mailTemplateRepository->find($mail_template_id);
以上の方法で、自分でカスタマイズしたメールテンプレートファイルと連動させることができます。