2012-12-12 1 views
12

単一の項目を変更した後で再インデックスする適切な方法は何ですか?Magento正しい方法単一項目とそれに関連するグループ製品

例コンテキスト:

当社はストーンエッジと呼ばれるサードパーティの在庫管理プラットフォームに依存しています。

10分ごとに1回、Stone Edgeはサイトからすべての注文をダウンロードし、在庫調整をMagentoストアに送り返します。これは、私たちのWebサーバーに保存されているPHPスクリプトに単純なhttpリクエストを送信し、最後の更新以降に在庫が変更された在庫の各項目のキー値の配列の配列を送信することによって行われます。

これらのそれぞれで保存機能が完了した後、アイテムは、更新時刻と次のサイトワイド再インデックスの間に在庫が反映されないように再インデックスされます。

私はどのように再インデックス項目に対して約Magentoのフォーラムの議論に位置まし

:あなたがした後、しかし

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

のようなものを見ることが

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

前の命令セットへこれを完了すると、問題が明らかになりました。項目自体は再索引付けされましたが、グループ化された製品のメンバーであれば、グループ製品は更新されませんでした。

私が取り組むべき明白な問題があります。この問題に対する最良のアプローチは何ですか?

1つおうとすると回答が返ってきます。

+0

と同様にインデックスを再作成するためにそれらを設定しますか?同様のコードを使用して、製品データをインポートした後、 'catalog_product_flat'および' catalogsearch_fulltext'インデックスを更新できますか?私。新しい行を挿入したり、既存の行を変更することはできますか? –

+0

これを他のインデックス、特にcatalog_product_flatに適用することに関するButtleの質問に対する答えを探しています。誰でも? – spadeworkers

答えて

0

まず、製品ごとの再インデックスコードのおかげで、それを探していた。

親を更新する場合は、単純な製品を更新する際に配列の親IDを収集します。

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

そして、あなたは簡単な製品に終わった、ちょうどこれは右、唯一の在庫量のインデックスを再作成うマスターの上に行くと->setForceReindexRequired(true)

関連する問題