I have created quite big import script which is importing products from CSV to magento. I have one remaining issue to resolve.
I use dropdowns for attributes. Unfortunately I can't set values for those attributes for a single product. What I did:
- created attribute set [php],
- added dropdown attribute with values to this set [php],
- added new product in proper attribute set and tried to set value for attribute I have created.
I tried few methods, here is the one looking good for me:
private function setOrAddOptionAttribute($product, $arg_attribute, $arg_value) {
$attribute_model = Mage::getModel('eav/entity_attribute');
$attribute_options_model = Mage::getModel('eav/entity_attribute_source_table');
$attribute_code = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
$attribute = $attribute_model->load($attribute_code);
$attribute_options_model->setAttribute($attribute);
$options = $attribute_options_model->getAllOptions(false);
// determine if this option exists
$value_exists = false;
foreach($options as $option) {
if ($option['label'] == $arg_value) {
$value_exists = true;
break;
}
}
// if this option does not exist, add it.
if (!$value_exists) {
$attribute->setData('option', array(
'value' => array(
'option' => array($arg_value,$arg_value)
)
));
$attribute->save();
}
$product->setData($arg_attribute, $arg_value);
$product->save();
}
Unfortunately it don't work. Any ideas? I'm using Magento 1.7.0.2