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

Magento 将自定义属性变量添加到订单确认电子邮件模板,magento,Magento,我已经为我的产品创建了几个自定义属性。 我有一些需要添加到客户下单时收到的电子邮件中。 目前我发现我可以在后端编辑邮件模板和“app/design/frontend/base/default/template/email/order/items.phtml” 如何访问电子邮件模板中的对象变量,以及项目自定义属性的正确语法是什么?有几种可能性(这就是Magento) 您提到的模板app/design/frontend/base/default/template/email/order/items.

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


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

有几种可能性(这就是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\u目录\u模型\u产品
模型实例,而是使用
Mage\u销售\u模型\u订单\u项目
实例。这些项目的属性与产品属性不同。
如果要使自定义产品属性始终在
销售/订单项目
实例上可用,则需要将它们添加到实体中。
在签出过程中,还要在
sales/quote_item
实体上设置它们,并使用配置中的相应字段集将它们复制到订单项中(例如,请参阅Mage/sales/etc/config.xml中的
global/fieldset

如果产品仍然存在于目录中,则可以使用

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

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

$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'));