我正在为商店创建一些新的电子邮件模板。
我有 95% 的模板工作我唯一的问题是,在显示订单项目的表格中,我似乎无法找到提取总计的文件,链接到显示以下问题的图像。
自然,我希望能够在该区域添加一些内联代码,因为它是用于电子邮件的,并且还可以更改左侧的标签。我已经设法将总计区域跟踪到以下文件
模板/销售/订单/totals.phtml
我不知道这会调用什么文件。
如果你看
layout/sales.xml:268
您将看到布局句柄 sales_email_order_items。里面有一个块“order_totals”,它有那个模板。要向电子邮件中添加新总数,您只需将其添加为该电子邮件的子项即可。在第 275 行,您可以看到他们添加了一个名为“tax”的块。
在 totals.phtml 文件中,您可以看到它调用 $this->getTotals() 作为 foreach 的一部分。该方法定义在
Mage/Sales/Block/Order/Totals.php:281
这只是返回已经定义的总数。此数据由已定义的 config.xml 文件填充:
<global><sales><quote><totals>...
跳回到totals.phtml,它检查totals 是否有为它定义的块。这将是 config.xml 文件中的一个字段。如果您有一个要自定义的总计模型,您可以这样做。
否则,在呈现页面之前(在第 44 行调用 _beforeToHtml()),它会在子块上进行交互,如果它们响应方法“initTotals”,则调用该方法。该方法应该创建一个代表您的总数的对象并将其添加到父级。例如,这是我最近编写的总计块的代码(基于我无法公开发布的代码):
public function initTotals()
{
if ((float)$this->getParentBlock()->getSource()->getMytotalAmount() == 0) {
return $this;
}
$total = new Varien_Object(array(
'code' => $this->getNameInLayout(),
'block_name'=> $this->getNameInLayout(),
'area' => $this->getArea()
));
$after = $this->getAfterTotal();
if (!$after) {
$after = 'subtotal';
}
$this->getParentBlock()->addTotal($total, $after);
return $this;
}
我希望这会有所帮助。