Como definir programaticamente o atributo de seleção múltipla de um produto por rótulos

16

Se tiver um atributo de seleção múltipla e desejar definir a seleção em um produto.

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

Como eu posso fazer isso?

Alex
fonte

Respostas:

24

Os atributos de seleção múltipla podem ser definidos como uma lista separada por vírgula (ou também uma matriz) contendo os IDs de valor do atributo.

Então, primeiro temos que converter os valores reais nos IDs internos do 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();
Alex
fonte
isso não está funcionando, a página é manter a carga com este código
Mp de la Vega
2

Modifique a última linha do código acima

$product->save();

com

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

Funciona

Lovely Arora
fonte