2013-02-12 126 views
12

我以編程方式更新magento中的價格。如何在此更新後重新索引價格。現在我使用了SSH命令:MAGENTO:以編程方式編織價格

php indexer.php --reindex catalog_product_price 
+1

那個ssh命令有什麼問題? – 2013-02-12 08:19:34

回答

39

以下將重新索引每個索引。

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

您也可以使用Magento的收集模型加載每個索引,而不是硬編碼的ID在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(); 
+0

謝謝大衛 – dido 2013-02-12 08:42:40

+0

很高興我能爲你找到答案。 – dmanners 2013-02-12 08:59:26

+0

我不喜歡循環中的'9'。你有替代嗎? – MatheusJardimB 2013-12-28 02:06:51

2

通過使用以下SSH命令你可以重新索引所有索引。

php shell/indexer.php reindexall 

但是,如果您只想重新索引catalog_product_price,那麼您可以使用下面的代碼。

php shell/indexer.php --reindex catalog_product_price 
+2

這只是解釋他已經在做什麼。 OP想知道如何以編程方式進行。 – 2015-10-02 01:43:18

1
php -f indexer.php help 

您可以通過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(); 
    } 

For More Info

0

如果您有扁平桌上,並想知道爲什麼(如我今天所做的)程序更新的價格不顯示在fr上ONT不管到底有多少次你重新索引,則很可能需要重新索引產品平後,您重新索引的價格:如果你做一個正常的

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

php shell/indexer.php reindexall 

注意的順序reindexing:

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)。查看平坦表格以確保您的程序更新價格已設置。

+0

我也注意到n98的順序是正確的。 – 2016-02-22 19:48:38