1

我正在为商店创建一些新的电子邮件模板。

我有 95% 的模板工作我唯一的问题是,在显示订单项目的表格中,我似乎无法找到提取总计的文件,链接到显示以下问题的图像。

在此处输入图像描述

自然,我希望能够在该区域添加一些内联代码,因为它是用于电子邮件的,并且还可以更改左侧的标签。我已经设法将总计区域跟踪到以下文件

模板/销售/订单/totals.phtml

我不知道这会调用什么文件。

4

1 回答 1

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,它检查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;
}

我希望这会有所帮助。

于 2012-07-30T19:20:42.933 回答