在修改单个项目后,重新编制索引的正确方式是什么?
示例上下文:
我们公司依靠名为Stone Edge的第三方库存管理平台.我们还在多个店面上销售商品,包括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();
但是,完成这个之后,一个问题变得很明显.这些项目本身被重新编入索引,但是如果它们是分组产品的成员,则组合产品未更新.
首先,感谢每个产品的reindex代码.正在寻找
至于更新父母,我会在更新简单产品时收集一个数组中的产品的父代号.
$masterIds [] = Mage :: getModel(‘catalog / product_type_configurable’)
– > getParentIdsByChild($product-> getId())
而当你完成了简单的产品后,只需要重新编译它们,并将它们设置为重新编号,并且 – > setForceReindexrequired(true)
原文地址:https://www.jb51.cc/php/131889.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。