目次
受注確認のメールにプラグインから手を入れたい。普通のテンプレートイベントと似て少々異なるので、手順を調べるのに戸惑った。イベントmail.order
をフックする。共通フックポイントとか呼ばれるものらしい。一次資料の共通フックポイント一覧には見当たらないけど……。
環境
- [EC-CUBE] EC-CUBE3.0.16
event.yml
イベントmail.order
を記述。
## メール通知 mail.order: - [onMailOrderComplete, NORMAL]
EVENTファイル
EVENTファイルの中で、メール本文を取得して書き換える。テンプレートイベントではないので、setParameters()
して変数で渡すというわけにはいかないみたい。テンプレートイベントがあると書きやすいんだけどなぁ。あるのかしら。
preg_match_all()
の第一引数は正規表現パターンで、PHPではデリミタ/
で前後を挟み、UFT-8では最後にu
をつける。
PHP_EOL
は改行\n
の置き換えとして定数定義されているみたい。
public function onMailOrderComplete(EventArgs $event) { // メールボディ取得 $body = $message->getBody(); // 置換されるテキストを検索する $search = array(); preg_match_all('/some text to be replaced/u', $body, $search); //置換するテキスト $replace = 'some text to place'.PHP_EOL; $body = preg_replace('/'.$search[0][0].'/u', $replace, $body); // メッセージにメールボディをセット $message->setBody($body); }