Обновление индекса Magento для одного или нескольких конкретных продуктов - PullRequest
3 голосов
/ 26 марта 2012

Я хочу знать, есть ли способ обновить индекс magento для одного или нескольких продуктов. Так, например, у меня есть 100 продуктов, которые я только что программно обновил в цене ... и теперь мне нужно пнуть индексатор, чтобы он переиндексировал цену для этих 100 продуктов. Так что просто для ясности ...

Я знаю, что можно просто обновить один индекс для ВСЕХ продуктов. Например, это обновит индекс цен на все продукты:

$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
);

Ответы [ 2 ]

1 голос
/ 08 октября 2013

Если у вас установлен индексный режим на ручной, он все равно отслеживает все изменения в index_event.Вы можете проиндексировать все ожидающие изменения с помощью $process->indexEvents();

1 голос
/ 26 марта 2012

Попробуйте

Mage::getSingleton('catalogindex/indexer')->plainReindex($productIds);
Mage::getSingleton('catalogindex/aggregation')->clearProductData($productIds);

Другая идея:

Mage::getResourceModel('catalog/product_indexer_price')->reindexProductIds($productIds);

Этот работает для меня:

$catalogSearchIndexer = Mage::getResourceSingleton('catalogsearch/fulltext');
$catalogSearchIndexer->rebuildIndex($storeId, $productIds);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...