MAGENTO: программная переоценка цены

Я обновляю цены в пурпурно программно. Как я могу переопределить цены после этого обновления. Теперь я использовал команду SSH:

php indexer.php --reindex catalog_product_price

Ответ 1

Следующие индексы переиндексируют каждый индекс.

for ($i = 1; $i <= 9; $i++) {
    $process = Mage::getModel('index/process')->load($i);
    $process->reindexAll();
}

Вы также можете использовать модель коллекции Magento для загрузки каждого индекса, а не жесткого кодирования идентификатора в цикле for.

/* @var $indexCollection Mage_Index_Model_Resource_Process_Collection */
$indexCollection = Mage::getModel('index/process')->getCollection();
foreach ($indexCollection as $index) {
    /* @var $index Mage_Index_Model_Process */
    $index->reindexAll();
}

Но если вы хотите переиндексировать только цену, то id равен 2

$process = Mage::getModel('index/process')->load(2);
$process->reindexAll();

Вы также можете вызвать функцию getProcessByCode следующим образом:

$process = Mage::getModel('index/indexer')->getProcessByCode('catalog_product_price');
$process->reindexAll();

Ответ 2

Используя следующую команду SSH, вы можете переиндексировать все индексы.

php shell/indexer.php reindexall

Но если вы хотите переиндексировать только catalog_product_price, вы можете использовать код ниже.

php shell/indexer.php --reindex catalog_product_price

Ответ 3

php -f indexer.php help

Вы можете использовать эту команду для всех команд, связанных с reindex через SSH.

php indexer.php -- reindex [process_code]

  e.g: php indexer.php --reindex catalog_product_price

Это через SSH, если вам нравятся коды кода, тогда вам нужно пройти код ниже:

 $indexer = Mage::getModel('index/indexer')->getProcessByCode('catalog_product_price')
 $indexer->reindexEverything();

или выполните следующее:

  for ($i = 0; $i <= 8; $i++) {  
       $process = Mage::getModel('index/process')->load($i);  
      $process->reindexAll();  
  } 

Для получения дополнительной информации

Ответ 4

Если у вас есть плоские таблицы и удивляйтесь, почему (как я это делал сегодня), программно обновленные цены не отображаются на лицевой стороне независимо от того, сколько раз вы переиндексируете, скорее всего, вам нужно повторно проиндексировать квартиру продукта ПОСЛЕ пересчета цен

php shell/indexer.php -reindex catalog_product_price
php shell/indexer.php -reindex catalog_product_flat

Если вы делаете обычный:

php shell/indexer.php reindexall

Обратите внимание на порядок переиндексации:

Category Flat Data index was rebuilt successfully in 00:00:00
Product Flat Data index was rebuilt successfully in 00:00:00
Stock Status index was rebuilt successfully in 00:00:00
Catalog product price index was rebuilt successfully in 00:00:00
...

Плоский продукт индексируется ДО цен, поэтому обновления цен не обновлялись в плоских таблицах (например, catalog_product_flat_2). Посмотрите на плоские таблицы, чтобы убедиться, что ваши программно обновленные цены установлены.