15

If have a multiselect attribute and want to set the selection on a product.

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

How can I do that?

22

Multiselect attributes can be set as a comma separated list (or also an array) containing the attribute value ids.

So first we have to convert the actual values to Magento's internal ids.

$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();
  • this is not working, the page is keep on loading with this code – Mp de la Vega Nov 25 '13 at 6:34
2

Modify last line of the above code

$product->save();

with

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

It works

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.