Как программно установить многоцелевой атрибут продукта на этикетках
-
16-10-2019 - |
Вопрос
Если иметь атрибут с несколькими выборами и захотите установить выбор на продукт.
$selectedOptions = "red,green,blue";
$product->..... // # what to do?
Как я могу это сделать?
Решение
Атрибуты Multielect могут быть установлены в виде списка, разделенного запятыми (или также массива), содержащего идентификаторы значения атрибута.
Итак, сначала мы должны преобразовать фактические значения во внутренние идентификаторы 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();
Другие советы
Измените последнюю строку приведенного выше кода
$product->save();
с
$product->getResource()->saveAttribute($product, $attrCode);
Оно работает
Не связан с magento.stackexchange