2012-12-12 20 views
12

在對其進行了修改後,重新對單個項目進行重新索引的正確方法是什麼?Magento正確的方式重建單個項目和相關組產品

實例背景:

公司依託叫石邊第三方庫存管理平臺。我們還在包括Magento,亞馬遜,Ebay和Buy.com在內的多個店面銷售物品

每10分鐘一次Stone Edge將從網站下載所有訂單,然後將庫存調整發送回我們的Magento商店。這是通過發送一個簡單的http請求到存儲在我們的web服務器上的php腳本中的,並且對於自上次更新後庫存已發生更改的庫存中的每個項目,都有一組鍵值對。

在完成每項保存功能後,該項目將被重新編制索引,以免在更新時間和下一個站點範圍重新索引之間反映0清單。

我已經位於關於如何重新索引項Magento的論壇討論:

$item->setForceReindexRequired(true); 
Mage::getSingleton('index/indexer')->processEntityAction($item,Mage_CatalogInventory_Model_Stock_Item::ENTITY,Mage_Index_Model_Event::TYPE_SAVE); 

在此之前的指令集,你會看到類似

$item = Mage::getModel('cataloginventory/stock_item')->loadByProduct($entityid); 
$item->addQty($change); 
$item->save(); 

然而,後完成這個,一個問題變得明顯。這些項目本身被重新編制索引,但如果它們是分組產品的成員,那麼該組產品不會更新。

有一個明顯的問題,我需要解決。解決這個問題的最佳方法是什麼?

我會發佈一個答案,如果我碰巧拿出一個。

+0

這將重新編制只股票的數量,對不對?導入產品數據後,是否可以使用類似的代碼更新'catalog_product_flat'和'catalogsearch_fulltext'索引?即它可以插入新的行和/或修改現有的行嗎? –

+0

我仍在尋找Buttle關於將其應用於其他索引的問題的答案,特別是catalog_product_flat。任何人? – spadeworkers

回答

0

首先,感謝每個產品的reindex代碼。正在尋找。

至於更新父母,我會在更新簡單產品時收集產品的父母標識。

$masterIds[] = Mage::getModel('catalog/product_type_configurable') ->getParentIdsByChild($product->getId())

而且當你用簡單的產品做,只是去了主人,設置它們進行重新索引,以及與->setForceReindexRequired(true)

相關問題