24

変更が加えられた後、単一のアイテムのインデックスを再作成する適切な方法は何ですか。

コンテキストの例:

当社は、StoneEdgeと呼ばれるサードパーティの在庫管理プラットフォームに依存しています。また、Magento、Amazon、Ebay、Buy.comなどの複数のストアフロントで商品を販売しています。

Stone Edgeは、10分ごとにサイトからすべての注文をダウンロードしてから、在庫調整をMagentoストアに送り返します。これは、前回の更新以降に在庫が変更された在庫内の各アイテムのキーと値のペアの配列を使用して、ウェブサーバーに保存されているphpスクリプトに簡単なhttpリクエストを送信することで行われます。

これらのそれぞれで保存機能が完了した後、更新時と次のサイト全体の再インデックスの間に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();

しかし、これを完了すると、問題が明らかになりました。アイテム自体のインデックスが再作成されましたが、グループ化された製品のメンバーである場合、グループ化された製品は更新されませんでした。

私が取り組む必要がある明らかな問題があります。この問題への最善のアプローチは何ですか?

たまたま答えが出たら投稿します。

4

2 に答える 2

0

まず、製品ごとのインデックス変更コードに感謝します。それを探していました。

親の更新に関しては、単純な製品を更新するときに、製品の親IDを配列に収集します。

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

シンプルな製品を使い終わったら、マスターを調べて、インデックスを再作成するように設定します。->setForceReindexRequired(true)

于 2013-02-19T07:03:37.347 に答える