我正在编写一个Observer来管理订单的商品,我需要根据一些自定义属性为每个订单发送一封电子邮件。
item对象是Mage_Sales_Model_Order_Item并且我一直在搜索getData('my_code'),getCustomAttribute,getAttributeText等方法但没有成功。
我需要获取类别,大小,颜色和一些自定义属性...... 这是我的小代码
class Example_OrderMod_Model_Observer{
public function doSomething($observer){
$order = $observer->getEvent()->getOrder();
$id_ordine = $order->getRealOrderId();
$cliente = $observer->getEvent()->getOrder()->getCustomerName();
foreach ($order->getAllItems() as $item) {
//$item is an instance of Mage_Sales_Model_Order_Item
$quantita = $item->getQtyOrdered();
$codice_giglio = $item->getSku();
//echo $item->getData('size');
var_dump($item->getAttributeText('size'));
var_dump($item->getProductOptionByCode('size'));
var_dump($item->getProductOptionByCode('famiglia'));
}
// die();
}
}
任何想法?
非常感谢答案 0 :(得分:6)
您可能希望加载产品对象,然后从该对象获取数据。这将允许您使用您正在寻找的所有方法:
$product = Mage::getModel('catalog/product')->load($item->getProductId());
$size = $product->getAttributeText('size');
答案 1 :(得分:4)
如果$ item是Mage_Sales_Model_Order_Item的实例,您只需使用:
$product = $item->getProduct();
答案 2 :(得分:3)
显示自定义属性的解决方案
function getAttr($product_id, $attributeName) {
$product = Mage::getModel('catalog/product')->load($product_id);
$attributes = $product->getAttributes();
$attributeValue = null;
if(array_key_exists($attributeName , $attributes)) {
$attributesobj = $attributes["{$attributeName}"];
$attributeValue = $attributesobj->getFrontend()->getValue($product);
}
return $attributeValue;
}
答案 3 :(得分:2)
当我尝试上述方法时,它在我的观察者类中没有以某种方式工作。实际上产品型号无法加载上述代码块。我发现这个代码并且它有效。它在观察者中加载产品模型。
$product = Mage::getModel('catalog/product');
$productId = $product->getIdBySku($item->getSku());
$product->load($productId);