我正在为商店创建一些新的电子邮件模板。
我有95%的模板工作我唯一的问题是在显示订单项目的表中我似乎无法找到总计被拉入的文件,链接到显示下面问题的图像。
当然,我希望能够为这个区域添加一些内联代码,因为它用于发送电子邮件,还可以更改左侧的标签。我已设法将总计区域跟踪到以下文件
模板/销售/订单/ totals.phtml
我不知道这会调用什么文件。
答案 0 :(得分:3)
如果你查看
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,它会检查总数是否为其定义了一个块。这将是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;
}
我希望这有帮助。