2013-05-02 2 views
1

Как я могу установить значение данного атрибута для одного и того же значения для всех продуктов (эффективно)?Обновить все атрибуты продукта Программно

Эффективно я имею в виду в одной транзакции, не имея необходимости перебирать всю коллекцию продуктов.

В прошлом я использовал Mage_Catalog_Model_Product_Action для оптовых обновлений на продукты, и он работает довольно быстро

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

Но это требует указать, какой продукт Идентификаторы вы обновляете, создавая огромный WHERE entity_id IN(...) пункт в Инструкция MySQL. Есть ли способ сделать это во всем?

+0

Это обновляет продукты к тому же значению атрибута; предположим, что вам придется обновлять все продукты до разных/уникальных значений - как это будет работать? –

ответ

-3

Amasty "Mass Product Actions" позволит вам редактировать атрибуты продукта различными способами. Это то, что мы используем, и это будет спасателем жизни, когда мы получим правильную настройку уровня продуктов Configurable Products.

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

+2

Вы пропустили слово «программно» – aki

2

У меня была такая же проблема раньше, когда я добавил 11096 продукт (загружаемые продукты) в моем магазине, то клиент сказал мне, чтобы добавить новые атрибуты в продукте, поэтому я создать 1 атрибут (тип является Да/Нет) и набор атрибутов. Теперь моя проблема заключается в том, как можно iIedit всего продукта и установить атрибут yes или нет. Если я не устанавливаю значение, значение равно 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); 

Это была работа для меня.Я надеюсь, что она будет работать для вас

Смежные вопросы