大家好!今天的教程将帮助Magento 2商家自己将新的总计块添加到订单电子邮件中。向客户发送经过验证的电子邮件以确认他们在您商店中的购买时,这是必要的。当您向购物者告知购买总订单时,您的公司将更加可靠。
但是,Magento 2不支持将新的总计块添加到确认电子邮件或发票电子邮件中的可用功能。因此,让我们按照这篇文章中的指导将总块设置为订单电子邮件,然后再发送给您的客户。
将新总计添加到电子邮件
步骤1:生成文件:sales_email_order_items.xml
- 创建文件:
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
发送电子邮件时的。
步骤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');
}
}
}
- 保存文件。