将自定义属性变量添加到订单确认电子邮件模板

时间:2012-02-13 09:18:56

标签: magento

我为自己的产品创建了多个自定义属性。 我需要将一些内容添加到客户下订单时收到的电子邮件中。 目前我发现我可以在后端编辑邮件模板和'app / design / frontend / base / default / template / email / order / items.phtml'。

如何访问电子邮件模板中的对象变量以及项目自定义属性的正确语法是什么?

1 个答案:

答案 0 :(得分:11)

有几种可能性(这是Magento)。

您提到的模板 app / design / frontend / base / default / template / email / order / items.phtml 是订单中所有商品的包装。各个项目由单独的模板呈现。大部分时间是 app / design / frontend / base / default / template / email / order / items / order / default.phtml ,但其他产品类型可以使用不同的产品类型,例如捆绑产品的订购商品使用 ... template / bundle / email / order / items / order / default.phtml

在模板内部,您不使用Mage_Catalog_Model_Product模型实例,而是使用Mage_Sales_Model_Order_Item个实例。这些项目具有与产品属性不同的属性 如果您希望自定义产品属性始终sales/order_item个实例上可用,则需要将它们添加到实体中。
在结帐过程中,还要在sales/quote_item实体上设置它们,然后使用配置中的相应字段集将它们复制到订单商品中(请参阅 Mage / Sales / etc / config中的global/fieldsets .xml 的例子。

如果产品仍然存在于目录中,则可以加载它们,包括使用的所有属性

$product = Mage::getModel('catalog/product')->load($orderItem->getProductId();

或者,一次性获取所有订单商品的所有产品型号(效率稍高):

$products = Mage::getResourceModel('catalog/product_collection')
    ->addIdFilter($orderItems->getColumnValues('product_id'))
    ->addAttributeToSelect(array('list', 'of', 'your', 'custom', 'attributes'));

当然,与向订单商品实体添加相同属性的第一种解决方案相比,这将意味着额外的查询 另请注意,一旦产品被删除,它将不再以这种方式加载。