Magento 2でメールに新しい合計を追加する方法

mail magento new form

今日のチュートリアルでは、Magento 2 のマーチャントが注文メールに新しい合計ブロックを追加する方法を説明します。これは、あなたのストアでの購入を確認するために、顧客に確認メールを送信する際に必要です。また、購入者に購入注文の合計を通知することで、あなたの会社はより信頼性の高いものになるでしょう。

しかし、Magento 2では、確認メールや請求書メールに新しい合計ブロックを追加する機能がサポートされていません。そこで、この記事のガイダンスに従って、注文メールに合計ブロックを設定してから、顧客に送信しましょう。

メールに新規集計を追加

ステップ1: sales_email_order_items.xmlというファイルを生成します

etc/frontendフォルダにsales_email_order_items.xmlというファイルを作成します:

<?xml version="1.0" encoding="UTF-8"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
   <body>
       <referenceBlock name="order_totals">
           <block class="Mageplaza\HelloWorld\Block\Order\Totals" name="new.order.totals" />
       </referenceBlock>
   </body>
</page>

<?xml version="1.0" encoding="UTF-8"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
   <body>
       <referenceBlock name="order_totals">
           <block class="Mageplaza\HelloWorld\Block\Order\Totals" name="new.order.totals" />
       </referenceBlock>
   </body>
</page>

これで、メール送信時にブロックnew.order.totalsがorder_totalsに挿入されました。

ステップ2:ブロックnew.order.totalsの作成

  • new.order.totalsブロックを作成し、新しい合計金額の情報を表示します。
  • ファイル:Mageplaza®HelloWorld®Block®Order®Totals.phpを作成します。
  • initTotals()関数の中に、メールに表示する金額を計算するロジックを挿入します。
<?php
namespace Mageplaza\HelloWorld\Block\Order;
class Totals extends \Magento\Framework\View\Element\AbstractBlock
{
   public function initTotals()
   {
       $orderTotalsBlock = $this->getParentBlock();
       $order = $orderTotalsBlock->getOrder();
       if ($order->getNewTotalAmount() > 0) {
           $orderTotalsBlock->addTotal(new \Magento\Framework\DataObject([
               'code'       => 'new_total',
               'label'      => __('New Total'),
               'value'      => $order->getNewTotalAmount(),
               'base_value' => $order->getNewTotalBaseAmount(),
           ]), 'subtotal');
       }
   }
}
  • ファイルを保存します

以上

デモを申し込む

弊社の専門家は最適なソリューションをサポートさせて頂きます。

►►►サービスについて