EC-Cubeでフォーム別にメールのタイトルを変更する

参考:返信メールテンプレートの追加&編集 EC-CUBE 2.11.2

Smarty/templates/default/mail_templates/以下にメールのテンプレートを新たに作成する

システム設定>マスターデータ管理から、
テンプレートのID設定、動的データのパス設定などを行う。
上記で作成したパスを設定する。
で、基本情報管理–>メール設定から、静的部分の編集が出来る。

しかし、これだとメールのタイトル部分を動的に出来ない

mail_title.tplがメールのタイトルのテンプレートになっているよう。
デフォルトでは以下になってる。

【<!--{$tpl_shopname}-->】 <!--{$tpl_mailtitle}-->

この<!--{$tpl_mailtitle}-->は、管理画面の基本情報管理>メール設定から設定したタイトルになるよう。
ここで動的にメールタイトルを変更は可能だけど、色々なパターンに対応、は出来ない。。

もしmail_title.tplに例えば以下のような設定をしたとする。
item.valueは表示したい商品名だとする。

[<!--{$arrForm.item.value}-->] <!--{$tpl_mailtitle}-->

これだと、商品名を表示したいメールの場合はうまくいくと思うけれど、
その他のテンプレートを使用したメールでも同じタイトルが使われるので、商品名がないものの場合、おかしくなってしまう。
例えば、お問い合わせ受付、というタイトルのメールだとすると、以下のように商品名が抜けて、カッコのみになってしまうはず。

\[\]お問い合わせ受付

参考:http://www.tokihouse.com/ec-cube/mail/mail_title.html

そうなると、やっぱり直接関数を触らないといけない、のかも。

(EC-CUBE2.11.4)お問い合わせメールの件名に名前を入れる

/data/class/helper/SC_Helper_Mail.phpを修正

テンプレートから静的部分だけを取ってきて表示する、方法がわからなかったので、
$tmp_subjectに直接入れた。
動的にしたかった商品名は引数で渡した。

このSC_Helper_Mail.phpsfMakeSubject関数の中で、タイトルにテンプレートを渡す処理をしているので、
その部分を独自のものに変更すれば、テンプレートから変更、も出来るようになるかもしれない。

$subject = $objMailView->fetch('mail_templates/mail_title.tpl');
   このエントリーをはてなブックマークに追加