通过脚本更改库存后,哪些索引需要重新索引才能使产品正确显示?


8

我写了一个cron,每天晚上更新我的产品库存。通过脚本更改库存后,哪些索引需要重新索引才能使产品正确显示?是否需要刷新缓存?试图查明上周产品为什么缺少“添加到购物车”的确切问题。重新索引上周解决了该问题,但需要知道我的股票脚本是否导致需要重新索引。

Answers:


14

如果更新产品的库存选项,则可以通过编程方式为“库存状态”表重新编制索引:

    try {
        $indexer = Mage::getModel('index/indexer')->getProcessByCode('cataloginventory_stock');
        $indexer->reindexEverything();
    } catch (Exception $e) {
        //Some error handling
    }

要获取索引器模型,请使用Mage::getModel('index/indexer')->getProcessByCode('some_indexer_code_given_below')。Magento提供了几个索引器。如果您通过编程方式更新产品,则可以使用以下索引器,仅我提供indexer_code,并且应更改给定的代码段(请参见index_process表):

  • catalog_product_attribute-产品属性(如果您更新了用于分层导航的属性)
  • catalog_product_price-产品价格(如果您更新价格)
  • catalog_url-重写目录URL(如果更新了Product或Catalag url)
  • catalog_product_flat-产品平面数据(如果您的商店使用平面表,并且更新了在任何地方使用前端逻辑的产品属性)
  • catalog_category_flat-类别平面数据(如果更新了类别属性)
  • catalog_category_product-类别产品(如果您从目录中添加或删除了产品)
  • catalogsearch_fulltext-目录搜索索引(如果更新了产品的可搜索属性)
  • cataloginventory_stock-库存状态(如果您更新了产品的库存选项)
  • tag_summary-标签汇总数据(如果您更新了产品标签)

而且,您可以(在产品/类别的任何更新后刷新现金)在您的逻辑中以编程方式清洁magento缓存:

Mage::app()->getCacheInstance()->flush();
Mage::app()->cleanCache();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.