我为我的产品创建了几个自定义属性.我需要将一些内容添加到客户下订单时收到的电子邮件中.目前我发现我可以在后端和'app/design/frontend/base/default/template/email/order/items.phtml'中编辑邮件模板.
如何访问电子邮件模板中的对象变量以及项自定义属性的正确语法是什么?
Vin*_*nai 11
有几种可能性(这是Magento).
您提到的模板app/design/frontend/base/default/template/email/order/items.phtml是订单中所有商品的包装.各个项目由单独的模板呈现.大多数时候是app/design/frontend/base/default/template/email/order/items/order/default.phtml,但其他产品类型可以使用不同的产品类型,例如捆绑产品的订单商品使用...模板/bundle/email/order/items/order/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();
Run Code Online (Sandbox Code Playgroud)
或者,一次性获取所有订单商品的所有产品型号(效率稍高):
$products = Mage::getResourceModel('catalog/product_collection')
->addIdFilter($orderItems->getColumnValues('product_id'))
->addAttributeToSelect(array('list', 'of', 'your', 'custom', 'attributes'));
Run Code Online (Sandbox Code Playgroud)
当然,与将相同属性添加到订单商品实体的第一种解决方案相比,这将意味着额外的查询.
另请注意,一旦产品被删除,它将不再以这种方式加载.
归档时间: |
|
查看次数: |
9397 次 |
最近记录: |