Magento 重新索引单个项目和相关组产品的正确方法

2022-08-30 17:55:02

对单个项目进行修改后,重新编制其索引的正确方法是什么?

示例上下文:

我们公司依赖于名为Stone Edge的第三方库存管理平台。我们还在多个店面上销售商品,包括Magento,Amazon,Ebay和 Buy.com

每10分钟一次 Stone Edge将从站点下载所有订单,然后将库存调整发送回我们的Magento商店。这是通过向存储在我们Web服务器上的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();

但是,在完成此操作后,问题变得明显。项目本身已重新编制索引,但如果它们是分组产品的成员,则不会更新组产品。

有一个明显的问题需要我来解决。解决这个问题的最佳方法是什么?

如果我碰巧想出一个答案,我会发布一个答案。


答案 1

请注意,与分组产品相关的生产集合将尝试加入价格指数。因此,您需要运行价格指数,然后您将看到结果。要仅运行价格指数,您可以运行,到达magento根文件夹,然后:

php shell/indexer.php --reindex catalog_product_price

祝你好运!


答案 2

首先,感谢每个产品的重新索引代码。一直在寻找。

至于更新父级,我会在更新简单产品时收集数组中产品的父ID。

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

当您完成简单的产品后,只需查看主数据并将其设置为重新索引即可->setForceReindexRequired(true)


推荐