我想知道是否有方法更新一个或多个产品的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