2012-12-12 7 views
12

Was ist der richtige Weg, um ein einzelnes Element nach Änderungen an ihm neu zu indizieren.Magento Proper Weg zum Reindex Einzel Artikel und zugehörige Gruppe Produkt

Beispiel Kontext:

Unser Unternehmen setzt auf einen Dritten Inventar-Management-Plattform namens Stone Edge. Wir verkaufen auch Artikel auf mehreren Storefronts, darunter Magento, Amazon, Ebay und Buy.com.

Einmal alle 10 Minuten wird Stone Edge alle Bestellungen von den Websites herunterladen und dann die Inventaranpassungen an unseren Magento Store zurücksenden. Dies geschieht durch Senden einer einfachen HTTP-Anfrage an ein PHP-Skript, das auf unserem Webserver gespeichert ist, mit einem Array von Schlüsselwertpaaren für jedes der Elemente im Inventar, die seit der letzten Aktualisierung eine Inventaränderung hatten.

Nachdem die Speicherfunktion für jedes dieser Objekte abgeschlossen ist, wird das Objekt erneut indiziert, damit zwischen dem Zeitpunkt der Aktualisierung und dem nächsten seitenweiten Neuindex kein 0-Inventar angezeigt wird.

ich auf der Magento-Foren Diskussion über sie habe, wie das Element neu indizieren:

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

Vor diesem Satz von Anweisungen, die Sie so etwas wie

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

Allerdings sehen würden, nach Als dies abgeschlossen war, wurde ein Problem sichtbar. Die Elemente selbst wurden neu indexiert, aber wenn sie ein Mitglied eines gruppierten Produkts waren, wurde das Gruppenprodukt nicht aktualisiert.

Es gibt ein offensichtliches Problem, das ich angehen muss. Was ist der beste Ansatz für dieses Problem?

Ich werde eine Antwort posten, wenn ich zufällig mit einer komme.

+0

reindexed Bestandsmengen Dies würde nur indizieren, nicht wahr? Könnte ein ähnlicher Code verwendet werden, um die Kataloge "catalog_product_flat" und "catalogsearch_fulltext" nach dem Importieren von Produktdaten zu aktualisieren? I.e. Könnte es neue Zeilen einfügen und/oder vorhandene ändern? –

+0

Ich bin immer noch auf der Suche nach einer Antwort auf Buttle Frage über die Anwendung dieser auf andere Indizes, insbesondere catalog_product_flat. Jemand? – spadeworkers

Antwort

0

Zunächst einmal, danke für den Reindex-Code pro Produkt. War auf der Suche nach dem.

Wie für die Aktualisierung der Eltern, würde ich die Eltern-IDs von Produkten in einem Array sammeln, wenn die einfachen Produkte aktualisiert werden.

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

Und wenn man mit den einfachen Produkte fertig sind, gehen Sie einfach über den Meister und setzte sie bis zu werden, als auch mit ->setForceReindexRequired(true)

Verwandte Themen