aja*_*olf 17 php model magento
在对单个项目进行修改后重新索引单个项目的正确方法是什么.
示例上下文:
我们公司依赖名为Stone Edge的第三方库存管理平台.我们还在多个店面销售商品,包括Magento,Amazon,Ebay和Buy.com
每隔10分钟,Stone Edge将从网站下载所有订单,然后将库存调整发送回我们的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);
Run Code Online (Sandbox Code Playgroud)
在这套说明之前你会看到类似的东西
$item = Mage::getModel('cataloginventory/stock_item')->loadByProduct($entityid);
$item->addQty($change);
$item->save();
Run Code Online (Sandbox Code Playgroud)
然而,在完成此之后,问题变得明显.项目本身已重新编制索引,但如果它们是分组产品的成员,则组产品未更新.
我需要解决一个明显的问题.解决这个问题的最佳方法是什么?
如果我偶然提出答案,我会发一个答案.
小智 0
首先,感谢您提供每个产品的重新索引代码。正在寻找那个。
至于更新父级,我会在更新简单产品时将产品的父级 ID 收集到一个数组中。
$masterIds[] = Mage::getModel('catalog/product_type_configurable')
->getParentIdsByChild( $product->getId() )
当您完成简单的产品后,只需检查母版并将它们设置为重新索引即可->setForceReindexRequired(true)