在邮件中添加总价

本文介绍了如何在邮件中添加总价。当你给购买产品的客户发送确认邮件的时候,有订单总价,会让你的公司更值得信任。

然而 Magento2 不支持添加新的总价到确认邮件或者发票邮件。所以可以根据本教程来给邮件添加总价。

第一步,新建文件 sales_email_order_items.xml

在 etc/frontend 这个文件夹下新建文件

<?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 。

第二步,创建块 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');
       }
   }
}

然后保存文件即可

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: