以编程方式更新所有产品属性

时间:2013-05-02 21:43:35

标签: magento magento-1.12

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

有效率我的意思是在一次交易中,不必遍历整个产品系列。

过去我曾使用Mage_Catalog_Model_Product_Action批量更新产品,运行速度非常快

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

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

2 个答案:

答案 0 :(得分:2)

之前我遇到过同样的问题,当我在商店中添加11096产品(可下载的产品)时,客户端告诉我在产品中添加新属性,因此我创建了1个属性(类型为是/否)并设置为属性集。现在我的问题是如何iIedit所有产品并设置该属性是或否。如果我没有设置那么值为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);

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

答案 1 :(得分:-3)

Amasty“批量产品操作”将允许您以各种方式编辑产品属性。这就是我们使用的,一旦我们让可配置产品定价层正常运行,它将成为一个生命保护者。

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

相关问题