Как программно задать атрибут множественного выбора продукта по меткам


Если у вас есть атрибут множественного выбора и вы хотите установить выбор для продукта.

$selectedOptions = "red,green,blue";
$product->..... // # what to do?

Как я могу это сделать?

Author: Alex, 2013-04-30

3 answers

Многозначные атрибуты могут быть заданы в виде списка, разделенного запятыми (или также массива), содержащего идентификаторы значений атрибутов.

Итак, сначала мы должны преобразовать фактические значения во внутренние идентификаторы Magento.

$attrCode = 'color_base';
$sourceModel = Mage::getModel('catalog/product')->getResource()
    ->getAttribute($attrCode)->getSource();
$valuesText = explode(',', 'red,green,blue');
$valuesIds = array_map(array($sourceModel, 'getOptionId'), $valuesText);
$product->setData($attrCode, $valuesIds);
$product->save();
 24
Author: Alex, 2013-04-30 14:12:29

Измените последнюю строку приведенного выше кода

$product->save();

С

$product->getResource()->saveAttribute($product, $attrCode);

Это работает

 2
Author: Lovely Arora, 2016-08-22 07:43:56
$attrCode = 'color_base';
$sourceModel = Mage::getModel('catalog/product')->getResource()
   ->getAttribute($attrCode)->getSource();
$valuesText = explode(',', 'red,green,blue');
$valuesIds = array_map(array($sourceModel, 'getOptionId'), $valuesText);
$OptionIds = implode(',', $valuesIds); 
$product->setColorBase($attrCode, $OptionIds);
$product->getResource()->saveAttribute($product, 'color_base');  
 0
Author: ahmed hussain, 2020-03-11 04:09:27