Aggiungi una nuova opzione all'attributo del prodotto esistente
-
12-12-2019 - |
Domanda
Sto cercando di utilizzare la funzione addAttributeOption
per aggiungere una nuova opzione a un attributo.Non voglio cambiare l'ordine opzionale corrente o i valori predefiniti, ma vuoi semplicemente aggiungere una nuova opzione alla fine dell'elenco.
Prima di tutto ho provato a ottenere tutte le opzioni sull'attributo e semplicemente aggiungere la nuova come segue.
$attributeModel->getSource()->getAllOptions();
.
Ma quindi si lamenta della mancanza di valore predefinito.Idealmente non voglio dover riformattare l'array restituito da getAllOptions
in quanto restituisce solo value
e label
.
Soluzione
OK, quindi si scopre che stavo sciocco.La funzione addAttributeOption
consente di aggiungere e aggiornare le opzioni.
Per aggiungere una nuova opzione è sufficiente bisogno di un array con il seguente formato.
$option['attribute_id'] = $attributeId;
$option['value'][] = $storeValues;
.
Dove $storeValues
è semplicemente un array in cui la chiave è l'ID del negozio e il valore è il valore che desideri per quel negozio.
Quindi chiamando $installer->addAttributeOption($option);
verrà aggiunta la tua nuova opzione.
Per aggiornare un'opzione è sufficiente modificare l'array di opzione per avere l'ID opzionale come chiave.
$option['attribute_id'] = $attributeId;
$option['value'][$optionId] = $newStoreValues;
. Altri suggerimenti
Questo funziona perfetto per me
$arg_attribute = 'manufacturer';
$arg_value = 'new option to be added';
$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $arg_attribute);
$attr_id = $attr->getAttributeId();
$option['attribute_id'] = $attr_id;
$option['value']['any_option_name'][0] = $arg_value;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
.