我寫了一個Extension,它爲Magento 1.7保存了一些自定義的裝運值屬性。所有的工作都很好,當保存產品時應該儘可能地更新。不過,我還需要一個cronjob每晚更新它們以防我需要通過董事會更改運輸成本。Magento中的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";
}
我認爲麻煩在於它通過8000多種產品,所以需要相當長的時間來運行,所以要等到它全部完成後,相當長的時間內,商品顯示爲缺貨,並且不允許任何商品要購買 –