SOY Shopプラグインの解説 メールビルダー
2014.02.17
メールの文面ですが、ヘッダとフッタは管理画面で設定できますが、
注文詳細の自動出力部分は変更することができません。
注文時に送信されるメールの設定 | SOY Shopマニュアル
注文詳細の自動出力部分を変更したい時は、本体に直接手を加えるのではなく、soyshop.order.mailbuilder.phpという拡張ポイントを利用すると自動出力部分を上書きすることができるようになります。
今回は、1.13.4から同梱されるメールビルダープラグイン(ID:common_mailbuilder)をベースとして説明していきます。
メールビルダーの構造は上のようになっています。
soyshop.config.phpとsoyshop.info.phpは省略します。
まずは自動で出力される注文詳細の文面というのは、
----------------------------------------- 注文番号:22-0708-7046 注文日時:2014-01-31 (Fri) 10:42:38 ----------------------------------------- 商品名 商品コード 数量 価格 ------------------------------------------------------ 大豆セット soy-1 1 点 1,980 円 小計 1,980 円 合計 1,980 円 お届け先 ----------------------------------------- お名前 まめくらまめぞう 様 フリガナ マメクラマメゾウ 郵便番号 6060000 住所 京都府京都市左京区 SOYタウン 電話番号 012-3456-7890 ご注文者 ----------------------------------------- お名前 まめくらまめぞう 様 フリガナ マメクラマメゾウ メールアドレス info@mamekura.oma.me 電話番号 012-3456-7890
次はsoyshop.order.mailbuilder.phpの拡張ポイントを確認すると
/soyshop/webapp/src/logic/plugin/extentions/soyshop.order.mailbuilder.php
class SOYShopOrderMailBuilder implements SOY2PluginAction,SOYShop_MailBuilder{ function buildOrderMailBodyForUser(SOYShop_Order $order, SOYShop_User $user){ } function buildOrderMailBodyForAdmin(SOYShop_Order $order, SOYShop_User $user){ } function printColumn($str, $pos = "right", $width = 10){ //カラムを調整する } }
buildOrderMailBodyForUserとbuildOrderMailBodyForAdminの関数が用意されています。
これらの関数はプラグインがインストールされている場合はプラグインの方が優先して呼ばれ、
プラグインがインストールされていない場合はSOY Shopの標準で用意されているメールビルダーの方が呼ばれます。
(/soyshop/webapp.src/logic/mail/MailBuilder.class.phpのgetInstance)
ForUserの方がお客様宛てのメール、
ForAdminの方が管理者宛てのメールになります。
各関数では、文字列を返すとそのままメールの文面となります。
たとえば、
function buildOrderMailBodyForUser(SOYShop_Order $order, SOYShop_User $user){ return "おまめ美味しいよ"; }
にすると、メール文面は
まめぞう 様 お豆のお店をいつもご利用頂きまことにありがとうございます。 注文内容を確認いたしました。 おまめ美味しいよ 支払方法 : 銀行振り込み 配送方法 : クール ----------------------------------------- おまめのお店 http://www.soycms.net お豆商事株式会社 info@omame.oma.ne 住所: 606-0000 京都府京都市左京区下鴨おまめタウン TEL : 012-3456-7890 FAX : 012-0987-6543
というように、管理画面で決めたヘッタ、プラグインから出力した文字列、各種プラグインから出力された文字列と管理画面で決めたフッタという文面になります。
SOYShop_OrderとSOYShop_Userのオブジェクトを持っているので、
それらを組み合わせて文面を作ります。