1

如何(有效地)将给定属性的值设置为所有产品的相同值?

我所说的高效是指在一次交易中,不必遍历整个产品集合。

过去我用于Mage_Catalog_Model_Product_Action产品的批量更新,它运行得非常快

Mage::getSingleton('catalog/product_action')
    ->updateAttributes($productIds, array('some_attribute' => 'some_value'), 0)

但它要求您指定要更新的产品 ID,从而WHERE entity_id IN(...)在 MySQL 语句中创建一个巨大的子句。有没有办法为所有事情做到这一点?

4

2 回答 2

2

我之前遇到过同样的问题,当我在商店中添加 11096 产品(可下载产品)时,客户告诉我在产品中添加新属性,所以我创建了 1 个属性(类型为是/否)并设置为属性集。现在我的问题是如何编辑所有产品并将该属性设置为是或否。如果我不设置,那么 value 是 null 所以我写了几行代码。

请检查此代码可能对您有所帮助。

$ProductId = Mage::getResourceModel('catalog/product_collection') -
addAttributeToFilter('type_id', Mage_Downloadable_Model_Product_Type::TYPE_DOWNLOADABLE) -
getAllIds(); //Now create an array of attribute_code => values

$attributeData = array("my_attribute_code" =>"my_attribute_value");

//Set the store to affect. I used admin to change all default values

$storeId = 0;

//Now Update the attribute for the given products.

Mage::getSingleton('catalog/product_action') ->updateAttributes($ProductId, $attributeData, $storeId);

这对我有用。我希望它对你有用

于 2013-07-26T05:27:38.133 回答
-3

Amasty“批量产品操作”将允许您以多种方式编辑产品属性。这就是我们使用的,一旦我们让可配置产品定价层正常工作,它将成为救命稻草。

http://amasty.com/mass-product-actions.html

于 2013-06-04T14:51:36.397 回答