支払方法に簡単に銀行振込の口座が指定できる便利なエクステンション「Bank Payment」ですが、取引メールの支払方法欄に支払方法が表示されないという不具合があるようです。
(以前はちゃんと出てたような気がするので、本体のバージョンアップのせいかもしれません)
取引メールで支払方法を表示するには、メールテンプレートで
{{var payment_html}}
または、
{{var paymentMethod}}
と書けば、そこに支払方法が表示されます。
しかし、「Bank Payment」で設定した支払方法を選択すると、ここが空欄になってしまうのです。
同じ開発元の「Cash On Delivery」は、この方法で表示されますので、エクステンション側の問題だろうと思われます。
いろいろ調べたのですが、私の技術力では原因を突き止めることはできませんでした。
でも、なんとか表示させる方法は見つかりました。
支払方法のタイトルを表示する
まず、支払方法のタイトルを取引メールに表示させる方法ですが、メールテンプレートで直接メソッドを呼び出すことができるので、下記で支払方法のタイトルを表示させることができます。
{{var order.getPayment().getMethodInstance().getTitle()}}
振込先口座(アカウント情報)を表示する
振込先口座は、「Bank Payment」の「getAccounts()」というメソッドで取り出すことができます。
しかし、このメソッドの返り値は配列なので、そのままメールテンプレートに書いても、「Array」と表示されてしまいます。
ここでメソッドを追加することもできるのですが、元ファイルに手を加えないというMagentoの作法にのっとって、テンプレートファイルを追加してアカウント情報を展開したものが得られるようにします。
テンプレートファイルは、「app/design/・・・/BankPayment」のディレクトリに作成します。
ファイル名は任意なので、今回は「getAccounts.phtml」としました。
(新規ファイル)app/design/frontend/base/default/template/bankpayment/getAccounts.phtml
<?php $allAccounts = ''; $_accounts = $this->getPayment()->getMethodInstance()->getAccounts(); if ($_accounts) { foreach($_accounts as $_account): $allAccounts .= $_account->getAccountHolder().'<br />'.' '.$_account->getBankName().'<br />'; endforeach; $allAccounts .= '<br />'.$this->getPayment()->getMethodInstance()->getCustomText(); } echo $allAccounts;
実はこのテンプレートファイルの内容は、「BankPayment」のディレクトリにある、info.phtml を流用したものです。
info.phtml はレジでの表示に使用されているので、これを参考に出力用文字列 $allAccounts の内容を変えることができます。
取引メールテンプレートでは、次のように書けば振込先口座の情報が表示されます。
{{block type='core/template' area='frontend' template='bankpayment/getAccounts.phtml' payment=$order.getPayment()}}
仕組みがわかってしまえば、アレンジも簡単だと思います。
この記事を書いた人
-
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き
1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数
最新の投稿
ご質問・ご相談などありましたら
お気軽にお問い合わせください
資料請求・お問い合わせにはメールアドレスが必要です
コメントを残す