【问题标题】:Magento Proper Way To Reindex Single Item and associated Group productMagento 重新索引单个项目和相关组产品的正确方法
【发布时间】:2012-12-12 19:06:44
【问题描述】:

对单个项目进行修改后重新索引的正确方法是什么。

示例上下文:

我们公司依赖名为 Stone Edge 的第三方库存管理平台。我们还在多个店面销售商品,包括 Magento、亚马逊、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();

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

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

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

【问题讨论】:

  • 这只会重新索引库存数量,对吗?导入产品数据后是否可以使用类似的代码更新catalog_product_flatcatalogsearch_fulltext 索引? IE。它可以插入新行和/或修改现有行吗?
  • 我仍在寻找 Buttle 关于将其应用于其他索引(尤其是 catalog_product_flat)的问题的答案。有人吗?

标签: php magento model


【解决方案1】:

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

php shell/indexer.php --reindex catalog_product_price

祝你好运!

【讨论】:

    【解决方案2】:

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

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

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

    当您完成简单的产品后,只需查看母版并使用->setForceReindexRequired(true) 将它们设置为重新索引

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多