我编写了一个扩展程序,在保存 Magento 1.7 时更新了一些自定义运输价值属性。一切正常,保存产品时,一切都按原样更新。但是,我还需要一个 cronjob 每晚更新它们,以防我需要通过董事会更改运输成本。
一切正常,并且正在正确更新属性值,但是在前端所有可配置产品都显示为Out of Stock
,简单产品很好。
如果我去管理员,只需单击主产品并保存它,而不做任何它显示In Stock
在前端的任何操作。此外,如果我去索引并重新索引Product Attributes
它再次显示为前端的库存。然后我假设我的 cronjob 需要在保存每个产品时更新索引器。
环顾四周,我使用了以下代码,但是它似乎没有更新产品,并想知道是否有人可以提供帮助。我已经尝试了不同的变化Mage_Catalog_Model_Product
,TYPE_SAVE
但找不到我应该使用的!
$updateProduct = Mage::getModel('catalog/product')->load($_product->getId());
$updateProduct->setShippingLabel($shippData['delivery_type']);
$updateProduct->setShippingPrice($shippData['price']);
$updateProduct->setShippingNote($shippData['notes']);
try {
$updateProduct->save();
$updateProduct->setForceReindexRequired(true);
Mage::getSingleton('index/indexer')->processEntityAction(
$updateProduct,
Mage_Catalog_Model_Product::ENTITY,
Mage_Index_Model_Event::TYPE_SAVE
);
echo $updateProduct->getId()." Successfully Updated \n";
} catch(Exception $e){
echo $e->getMessage().$updateProduct->getId()."\n";
}
更新 17/5/2013 20:28
一直在玩代码,这个修改似乎有效,如果它完全没用而且是一种愚蠢的做法,请告诉我
$updateProduct = Mage::getModel('catalog/product')->load($_product->getId());
$updateProduct->setShippingLabel($shippData['delivery_type']);
$updateProduct->setShippingPrice($shippData['price']);
$updateProduct->setShippingNote($shippData['notes']);
try {
$updateProduct->save();
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product->getId());
$stockItem->setForceReindexRequired(true);
Mage::getSingleton('index/indexer')->processEntityAction(
$stockItem,
Mage_CatalogInventory_Model_Stock_Item::ENTITY,
Mage_Index_Model_Event::TYPE_SAVE
);
echo $updateProduct->getId()." Successfully Updated \n";
} catch(Exception $e){
echo $e->getMessage().$updateProduct->getId()."\n";
}