本文介绍了如何在邮件中添加总价。当你给购买产品的客户发送确认邮件的时候,有订单总价,会让你的公司更值得信任。
然而 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');
}
}
}
然后保存文件即可