我已經爲我的產品創建了幾個自定義屬性。 我有一些需要添加到客戶收到訂單時收到的電子郵件。 目前我發現我可以編輯後臺和'app/design/frontend/base/default/template/email/order/items.phtml'中的郵件模板。將自定義屬性變量添加到訂單確認電子郵件模板
如何訪問電子郵件模板中的對象變量以及項目自定義屬性的正確語法是什麼?
我已經爲我的產品創建了幾個自定義屬性。 我有一些需要添加到客戶收到訂單時收到的電子郵件。 目前我發現我可以編輯後臺和'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'));
當然,與將相同的屬性給定單項實體的第一個解決方案,這將意味着額外的查詢。
另請注意,一旦產品被刪除,它將不會再以這種方式加載。