プラグイン > 開発について > Mail/xxx.twig へのフック |
開発について
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ss764020 |
投稿日時: 2019/3/8 19:05
対応状況: −−−
|
新米 登録日: 2019/3/4 居住地: 投稿: 3 |
Re: Mail/xxx.twig へのフック こちらの件、先日ご提案いただいた方向性で無事実装完了いたしました。
本当にありがとうございました! |
umebius |
投稿日時: 2019/3/7 17:23
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: Mail/xxx.twig へのフック そうですね、私もポイントプラグインの方式が現状では良いのかなと思っています。
また何かございましたらご投稿お願い致します。 |
ss764020 |
投稿日時: 2019/3/7 14:04
対応状況: −−−
|
新米 登録日: 2019/3/4 居住地: 投稿: 3 |
Re: Mail/xxx.twig へのフック 確認、ご返信遅くなり申し訳ございません。
(実は本コミュニティで始めての投稿でして、自分が立てたスレッドであれば、返信があった際に通知メールがくるものと思っていて、メールが来ていなかったので返信されていないものかと思っていました。今気づきましたけど、スレッドにオプションで通知設定があるのですね。) ありがとうございます! 例に挙げていただいた 引用: ポイントプラグイン のソースを確認しましたが、こちらのソースを参考に、かなり理想に近いかたちで実装ができそうです。 本日中にうまい方法が見つからなければ 引用: $app['eccube.service.mail']を自身のクラスで置き換えてしまう という方向性で実装を進めようかと考えていたところでして、本当にありがたいご意見です。 では、一度こちらの方法で実装進めてみます。 取り急ぎご報告までに。 |
umebius |
投稿日時: 2019/3/4 21:45
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: Mail/xxx.twig へのフック Twigを置き換えるというよりはメールオブジェクトの本文を置き換えるという考えの方が良いかもしれません。
例えばポイントプラグインは'mail.order'イベントを使用して本文にポイントのデータを挿入しています。 受注メールはユーザー自身が書き換えることが多いのでうまくやらないと変なメールになることが多いですが... --------- あとはプラグインの有効化時にMail/order.twigをファイルごと置き換えてしまうプラグインや$app['eccube.service.mail']を自身のクラスで置き換えてしまうプラグインもありますが、全体の拡張性が犠牲になるのでおすすめはできません。
|
ss764020 |
投稿日時: 2019/3/4 20:50
対応状況: 解決済
|
新米 登録日: 2019/3/4 居住地: 投稿: 3 |
Mail/xxx.twig へのフック [EC-CUBE] 3.0.16
[サーバ] ローカル環境:windows XAMPP, 構築環境:AWS EC2 amazon linux [PHP] PHP 7.2.10 [データベース] mysql Ver 15.1 Distrib 10.1.36-MariaDB [WEBサーバ] Apache/2.4.34 [ブラウザ] Firefox (latest) [導入プラグインの有無] 独自プラグイン [カスタマイズの有無] 該当プラグインを導入 [現象] (1) 独自プラグインを開発しているのですが、一点問題が発生しまして、ご意見やアイデアなどあればと思い投稿させていただきます。 (2) 要件としては パスワードリセットメールの内容を、条件ごとに変更したい という状況です。 (3) まず最初に、下記のようにtwig呼び出しにフックして文字列置換しようと思いました。 ① event.yml にて、
② xxxEvent.php にて、
(4) ところが、 Mail/forgot_mail.twig へのフックというのはどうやら動作しないようです。 (5) Mail/forgot_mail.twig でフックできるであろう というのは、下記の記事を参考にしました。 http://blog.zamuu.net/2017/0302/eccube3_about_hooks/ (6) どうやらうまくフックできていないのでは?と思い、下記の記事を見つけました。 https://github.com/EC-CUBE/ec-cube/issues/543 twig呼び出しがrender()で実装されている箇所に関してはフックされるが、renderView()で実装されている箇所に関してはフックされないということのようです。 /src/Eccube/Service/MailService.php にて、該当箇所がrenderView()で実装されていることを確認しましたので、おそらくこれが原因であるということになるかと思います。 (※ためしに該当箇所のrenderView()をrender()に書き換えたところ、メールの内容が「HTTP/1.0 200 OK」といったものとなってしまうのですが、フックによる文字列置換はうまくいくことを確認しました) (7) どうにかうまくフックさせて文字列置換を実行する もしくは、 条件により別のtwigファイルを読み込ませる といったことができればと思うのですが、 何かよい考えやノウハウなどお持ちの方おられませんでしょうか。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |