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

问题描述:

我已经为我的产品创建了几个自定义属性。 我有一些需要添加到客户收到订单时收到的电子邮件。 目前我发现我可以编辑后台和'app/design/frontend/base/default/template/email/order/items.phtml'中的邮件模板。将自定义属性变量添加到订单确认电子邮件模板

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

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

模板您提到的应用/设计/前端/基础/默认/模板/电子邮件/订单/ items.phtml是订单中所有项目的包装。各个项目由不同的模板呈现。大部分时间是app/design/frontend/base/default/template/email/order/items/order/default.phtml,但其他产品类型可以使用不同的类型。订单项目捆绑产品使用...模板/捆绑/电子邮件/订单/项目/订单/ default.phtml

在模板内部,您不使用Mage_Catalog_Model_Product模型实例,但使用Mage_Sales_Model_Order_Item实例。这些项目有不同的属性,然后是产品属性
如果您希望您的定制产品属性总是sales/order_item实例上可用,则需要将它们添加到实体中。
在结帐过程中,也将它们设置在sales/quote_item实体和它们在将它们复制到使用适当的字段集的结构中的订单项目(参见global/fieldsets法/销售/等/ config.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')); 

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