我想知道是否有方法更新一個或多個產品的magento索引。因此,例如,我有100個產品,我只是以編程方式更新價格......現在我需要啓動索引器,以便重新爲這100種產品定價。所以只是爲了清晰...更新一個或多個特定產品的Magento索引
我知道這是可能只需刷新所有產品的索引。例如,這將刷新價格指數上的所有產品:
$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_price');
$process->reindexEverything();
而且我也知道這是可能刷新所有的只是一個產品的指標(或幾種產品,如果你這樣做在一個循環中):
Mage::getSingleton('index/indexer')->processEntityAction(
$product, Mage_Catalog_Model_Product::ENTITY,
Mage_Index_Model_Event::TYPE_SAVE
);
但是,這些選項都不適用於我。我需要能夠做這兩個的橫截面。我怎樣才能購買一種或多種產品,並刷新一個指標,如價格指數?
我正在使用Magento CE 1.6.2.0。
編輯:順便說一句,在Magento 1.3上,我能夠通過執行以下操作來完成此操作,但這似乎不再適用。
Mage::getModel('catalogindex/indexer')->plainReindex(
$listOfProductIds,
Mage_CatalogIndex_Model_Indexer::REINDEX_TYPE_PRICE
);
索引所有未完成的更改。嗨Zyava。你確定這對Magento 1.6有效嗎?這基本上與我們在Magento 1.3安裝上的代碼基本相同,但似乎不適用於1.6。我可能做錯了什麼,但是我想我會問你是否已經成功地將它用於1.6版本? – shaune 2012-03-26 20:10:04
它應該工作,因爲我在'app \ code \ core \ Mage \ CatalogIndex \ Model \ Observer.php'中找到了這個代碼,參見'processAfterSaveEvent()'方法。你確定你在腳本中選擇了管理員存儲('Mage :: app('admin')')? – Zyava 2012-03-27 06:11:48
謝謝做代碼搜索,但我絕對肯定它不起作用,至少不在magento ce 1.6.2.0上。它確實在1.3.3.0上工作。代碼的這一部分基本上被剝奪了(儘管沒有註釋這麼說) - 只要在代碼庫中搜索對該方法的引用,就會發現它並沒有被調用過。我認爲Mage_CatalogIndex模塊被Mage_Index模塊取代會發生什麼。 – shaune 2012-03-27 15:43:37