【EC-CUBE 4】メールテンプレートを増やす方法

EC-CUBE 4でメールテンプレートを追加する方法

この記事では、新規にメールテンプレートを作成し、管理画面で修正したり送信したりする方法を紹介します。

メールテンプレート追加後の状態
新規メールテンプレート追加後のメール設定画面
メール設定画面
新規メールテンプレート追加後の受注登録画面
受注管理画面
開発前にデバッグモードの設定をお薦めします

デバッグモードを設定しておくと、エラーが起きたときに詳細情報が表示されるようになります。
エラー箇所を探しやすくなるので、開発前に設定しておくのをオススメします。
デバッグモードの設定方法については 以下記事 で解説しています。

カスタマイズ後は、デバッグモードの解除を忘れないように。

【動作環境】
EC CUBEのバージョン:4.1.2
サーバー:Xserver

STEP
データベースのテーブル(dtb_mail_template)に新規テンプレートを追加します。

まず、データベースにあるメールテンプレートを管理するテーブル『dtb_mail_template』に、新規テーブルを追加します。

メールテンプレートが保存されているテーブル(dtb_mail_tamplate)
dtb_mail_template(テーブル修正前)

テンプレートの追加は、既存のテンプレートをコピーするとやりやすいです。

dtb_mail_tamplateに新しくレコードを追加する
新規テンプレートを挿入します。

今回は以下のように入力しました。

name

注文受け付けメール(2)

file_name

Mail/order2.twig

mail_subject

ご注文を受け付けました

一番下の「discriminator_type」には、必ず『mailtemplate』と記述してください。

dtb_mail_tamplateにレコード追加後
新規テンプレートの追加が完了しました。
STEP
次に、メールテンプレートの中身を構成するTwigファイルを作成します。

データベースに追加後は、テンプレートの中身を作成したファイルをサーバーにアップします。

テンプレートは一から自分で作っても良いですが、既存テンプレートをコピーした方が作りやすいです。既存のメールテンプレートは「src/Eccube/Resource/template/default/Mail」下に保存されており、この中にあるテンプレートの一部を「app/template/default/Mail」下にコピーします。
Mailフォルダがない場合は、フォルダも作成します。

コピーしたファイルは、データベース上のファイル名に修正するのを忘れないように。
(テンプレート追加時に記入した『file_name』の「Mail/」より後ろに合わせます。)

このとき、既存テンプレートには「XXX.twig」と「XXX.html.twig」という2種類がセットになっているファイルがいくつかあります。メールの形式によって分かれており、前者はテキスト、後者はHTMLの内容を設定するファイルです。

追加するファイルは、最低限htmlが付いていないファイルを用意します。HTML形式のメールも用意したい場合は、htmlが含まれるファイルも用意します。
今回は両方とも用意しました。

テンプレート追加後のファイルサーバー
テンプレートのTwigファイルを2つ追加しました。
STEP
最後に、受注管理画面からメールを飛ばせるようにします。

STEP2までで、管理画面のメール設定から、追加したテンプレートの選択および修正ができるようになっているはずです。

新規メールテンプレート追加後のメール設定画面
選択できるテンプレートが増えており、修正もできます。

これだけでもOKなのですが、受注管理から受注毎にメールを飛ばせるようにするには、もう1つファイルを操作しなければなりません。

「src/Eccube/Form/Type/Admin」下にある『OrderMailType.php』を開き、55〜56行目をコメントアウトします。

->add('template', MailTemplateType::class, [
    'required' => false,
    'mapped' => false,
    'query_builder' => function (EntityRepository $er) {
        return $er->createQueryBuilder('mt')
            // ->andWhere('mt.id = :id')
            // ->setParameter('id', $this->eccubeConfig['eccube_order_mail_template_id'])
            ->orderBy('mt.id', 'ASC');
    },
])

上記コードは一部のみを抜粋しています。

これで、受注管理のメール選択にすべてのテンプレートが表示されるようになります。

新規メールテンプレート追加後の受注登録画面
「注文受付メール」以外に、追加した分を含めて全てのテンプレートが選択できるようになりました。

適切なテンプレートを選択しないとエラーが表示されます。
必要なテンプレートのみを表示させる方法については別記事で紹介予定です。


以上、メールテンプレートを新規に作成する方法を紹介しました。

「入金確認メール」など、デフォルトでは備わっていないテンプレートを作ったり、既存のテンプレートは残したまま別のテンプレートを用意したい場合などに、ぜひ活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次