注文時の送信メールのプラグイン設定画面以外でのカスタマイズ方法について 投稿する

投稿者:Jun  投稿日時:2021-11-10 01:16:30
こんにちは。

注文時に自動で送信されるメールの内容をカスタマイズするにあたり、
「メールビルダープラグイン」のプラグインの設定画面以外の
PHPファイルを直接修正するなどの方法はありますでしょうか。

実現したいことととしては、
メールの文面内の注文商品明細の項目類、
「商品名 商品コード 数量 価格」
の部分を修正したいと思います。

具体的には、
現在は「商品名 商品コード 数量 価格」
の項目名4つが横並びで、
その下の行に実際の項目内容4つが横並びになる書式ですが、
商品名や商品コードなどが長いと、
それぞれ隣に表示される項目内容が右にズレて、
項目名と項目内容の2行の上下位置がかなりズレます。

その為、他の項目と同じように、
商品名:1111
商品コード:2222
数量:3
価格:5,000円
というように1行ずつに分けたいと思います。

他には、
「商品明細」の項目類の下に、
「商品オプション」を表示したり、
「配送方法」「お届け日」「配達時間」の3つの項目は、
お届け先の項目類の下に表示したいと思います。

これらは「メールビルダープラグイン」のプラグインの設定画面では
カスタマイズが出来ませんでしたが、
どこかのPHPファイルなどを自分で修正すれば、
反映されますでしょうか。

大変お忙しいかと思いますが、よろしくお願いいたします。
投稿者:齋藤毅  投稿日時:2021-11-10 05:33:10
PHPを直接修正されるのであれば、SOY Shopのプラグインやモジュールの複製方法 - saitodev.coの記事を参考にして、メールビルダープラグイン(common_mailbuilder)を複製します。

複製後にsoyshop.order.mailbuilder.phpのファイルの119行目付近に商品情報が横並びに指定している箇所がありますので、その箇所を縦並びに変更します。

変更例は
$str	= $this->printColumn($orderItem->getItemName(),"left",$itemColumnSize);
$str .= $this->printColumn($item->getCode(),"left");
$str .= $this->printColumn(number_format($orderItem->getItemCount())." 点");
$str .= $this->printColumn(number_format($orderItem->getItemPrice())." 円");

$str	= $orderItem->getItemName() . "\n";
$str .= $item->getCode() . "\n";
$str .= number_format($orderItem->getItemCount())." 点\n";
$str .= number_format($orderItem->getItemPrice())." 円";
に変更します。

上記コードは試していませんので、微調整は必要になるかと思います。
投稿者:Jun  投稿日時:2021-11-11 16:26:51
ありがとうございます。

試してみました。
思い通り、折り返し表示になりました。

PHPのプログラミングは私は出来ないのですが、
PHPファイルに単純に項目名を記載すれば良いと思っておりましたが、
やってみたところエラーになりました。

すみません、下記の方法が分かりませんでしたので、
どのように記載すれば良いか教えていただけますでしょうか。

商品名:
商品コード:
数量:
価格:

という感じで、挿入される商品名や価格の前に項目前につけたいと思います。

str
で検索して文字を左に追加する方法は見つけたのですが、
現状のコードとの組み合わせの方法が分からず手は付けておりません。

大変お忙しいかと思いますが、よろしくお願いいたします。
投稿者:齋藤毅  投稿日時:2021-11-11 19:07:07
$str	= "商品名:" . $orderItem->getItemName() . "\n";
$str .= "商品コード:" . $item->getCode() . "\n";
$str .= "数量:" . number_format($orderItem->getItemCount())." 点\n";
$str .= "価格:" . number_format($orderItem->getItemPrice())." 円";
上記のような感じでしょうか。

PHPでは文字列の結合は . (ドット)でつなぎます。
投稿者:Jun  投稿日時:2021-11-12 02:54:17
ありがとうございます。
おかげさまでお客様へ送信するメールが見やすくなりました。

PHPでは文字列の結合は . (ドット)でつなぎます。
ありがとうございます。
区切り線など簡単なものを追加できるようになりました。

注文時に送信するメールについてあと2点だけ、要望があります。

現在商品オプションを設定しております。
具体的には商品の価格は変更せずに、「大」「小」を選択できるようにしております。

現在は「商品オプション」として独立してメールの下の方に掲載されていますが、
購入した商品に対するオプションですので、
商品名や価格などと同じ個所に表示をしたいと思います。

その際に下記のように「商品名」の次に記載するにはどのようにしたらよいでしょうか。

商品名:
サイズ: ※この位置に商品オプションの項目を入れたいです。
色:     ※商品オプションの項目が複数あるタイプは順次入る
商品コード:
数量:
価格:

※商品オプションの設定をしていない商品については、
商品オプションの項目自体を非表示にしたいです。

複数の商品を購入した場合は、
オプションはそれぞれの商品に対するものなので下記のように、
各商品とセットでそれぞれ表示したいです。

商品名:
サイズ: ※ここに商品オプションの項目を入れたいです。
色:     ※商品オプションの項目が複数あるタイプは順次入る
商品コード:
数量:
価格:
商品名:
サイズ: ※ここに商品オプションの項目を入れたいです。
色:     ※商品オプションの項目が複数あるタイプは順次入る
商品コード:
数量:
価格:

教えていただいた「soyshop.order.mailbuilder.php」の119行目付近に商品情報の箇所の
商品名の次に商品オプションを挿入するコードを記述すれば良いのかもしれませんが、
記述方法が分かりませんでした。
記述方法を教えていただけますでしょうか。

もう1点は、
配送方法:ヤマト宅急便
お届け日:2021年11月18日
配達時間:18時~20時
の表記もメールの一番下の方に表示されるので、
これも「お届け先」の表記の所に入れたいと思います。

これについては、もし「メールビルダー」の設定画面内で、
#TEST#
のように記載すれば任意の箇所に入れられるのであれば、
このコードといいますか、#TEST#の部分を文字列を教えてください。

商品を発送する際にスタッフが、
商品のオプション内容や時間指定などの配送指示を見落とすリスクが無くなり、
とても使いやすいシステムになりますので、是非この2点の方法を教えていただけますでしょうか。

大変お忙しいかと思いますが、よろしくお願いいたします。
投稿者:齋藤毅  投稿日時:2021-11-12 04:43:19
メールビルダーに商品オプションの値と配送情報の値を挿入の件ですが、どちらもメールビルダー外のプラグインの値になりますので、他プラグインからの値の入手の手続きが必要となり、特殊なカスタマイズを要します。

専用のプラグイン開発、もしくは今行っているプラグインの複製を元にしたカスタマイズサポートのどちらかで費用が発生します。
費用感は下記のページに記載がありますので、指示コストの削減と見合うかご検討下さい。
https://saitodev.co/work/
投稿者:Jun  投稿日時:2021-11-14 03:13:15
ありがとうございます。

他プラグインからの値の入手の手続きが必要となり、特殊なカスタマイズを要します。 
作業内容の難易度が分からず、ご無理を言って大変失礼いたしました。
現状のもので運用しようと思いますが、ミスの発生頻度等によっては検討したいと思います。

先ほど「メールビルダー」の設定画面の右側に、
各種項目に対応しているタグといいますか、クリックして挿入できるものを見つけました。
この中に配送関連に関するものがありました。
これはこの機能を作っていただいたという事でしょうか。
(※以前からあって私がこの部分に気づかなかっただけなのかもしれません)

試してみたところ、配送関連の情報は意図した位置に記載することができ、
行いたかったことが実現できました。

それに伴って、今度は配送関連の情報が挿入位置と、一番下との2ヶ所に表示されております。
この一番下の表示を「表示しない」という方法は、
特定のPHPファイルから挿入するためのコードを削除するだけなど、
そのような方法で実現できるのであれば教えていただけますでしょうか。

もし、これについても難易度や工数の多い作業が必要な場合は、
現状のままで運用いたしますので大丈夫です。

よろしくお願いいたします。
投稿者:齋藤毅  投稿日時:2021-11-14 04:12:43
先ほど「メールビルダー」の設定画面の右側に、
各種項目に対応しているタグといいますか、クリックして挿入できるものを見つけました。
この中に配送関連に関するものがありました。
これはこの機能を作っていただいたという事でしょうか。
上記の機能は以前からありまして、今回のやりとりで新規に設けたものではありません。

この一番下の表示を「表示しない」という方法は、
特定のPHPファイルから挿入するためのコードを削除するだけなど、
そのような方法で実現できるのであれば教えていただけますでしょうか。
上記の件は対応可能でありますが、どのプラグインを使用しているか?によって修正する内容は変わります。
どの配送モジュールをご利用中でしょうか?
投稿者:Jun  投稿日時:2021-11-14 16:31:01
ありがとうございます。

上記の機能は以前からありまして、今回のやりとりで新規に設けたものではありません。 
そうだったんですね。とても便利な機能を見落としておりました。

どのプラグインを使用しているか?によって修正する内容は変わります。
どの配送モジュールをご利用中でしょうか?
「標準配送モジュール」を使用しています。

よろしくお願いいたします。
ログインして投稿する