gpt4 book ai didi

Magento 更新产品属性而不触发重新索引

转载 作者:行者123 更新时间:2023-12-02 10:52:26 25 4
gpt4 key购买 nike

是否可以在不触发重新索引的情况下更新产品属性?

众所周知,load()/setData()/save()场景会触发重新索引。

我研究了“Mage_Catalog_Model_Product_Action”中的“updateAttributes”方法,但我认为它也会触发产品重新索引。

/**
* Update attribute values for entity list per store
*
* @param array $productIds
* @param array $attrData
* @param int $storeId
* @return Mage_Catalog_Model_Product_Action
*/
public function updateAttributes($productIds, $attrData, $storeId)
{
$this->_getResource()->updateAttributes($productIds, $attrData, $storeId);
$this->setData(array(
'product_ids' => array_unique($productIds),
'attributes_data' => $attrData,
'store_id' => $storeId
));

// register mass action indexer event
Mage::getSingleton('index/indexer')->processEntityAction(
$this, Mage_Catalog_Model_Product::ENTITY, Mage_Index_Model_Event::TYPE_MASS_ACTION
);
return $this;
}

“//注册批量操作索引器事件”下的代码似乎触发了索引器操作。

最佳答案

我找到了在不触发重新索引的情况下更新产品属性的方法。

主要思想如下:如果您对产品的模型执行更新操作,则会触发重新索引,但如果您对资源执行这些操作,则在不重新索引的情况下完成该特定操作。

例如:

/**
* This method updates product attributes then triggers reindex
*/
Mage_Catalog_Model_Product_Action->updateAttributes($productIds, $attrData, $storeId);

/**
* This method updates product attributes but doesn't trigger reindex
*/
Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Action->updateAttributes($productIds, $attrData, $storeId);

哪里:

  • $productIds - 包含产品 Id 的数组
  • $attrData - 一个数组,其中键作为属性名称,值作为属性值
  • $storeId - 产品分配的商店的商店 ID(如果您的产品被分配到不同商店的多个类别);

如果该属性是全局的,则可以使用Mage_Core_Model_App::ADMIN_STORE_ID

干杯!

关于Magento 更新产品属性而不触发重新索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10246962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com