Вопрос по php – Как программно обновить параметры атрибута в Magento?

1

Я хочу обновить / добавить параметры раскрывающегося атрибута в Magento через код (программно). Я нашел, как добавить параметры атрибута, но как я могу обновить значения параметров.
Пример:
Предположим, что атрибут является «производителем». Я добавил три варианта: man1, man2, man3. Теперь через мой пользовательский код я хочу изменить метку man1 на man11 и man2 на man22. Как я могу этого достичь? Благодарю.

Ваш Ответ

2   ответа
0

вы захотите попробовать расширить AttributeController, расположенный в app \ code \ core \ Mage \ Adminhtml \ controllers \ Catalog \ Product \ AttributeController.php и переопределитьsaveAction() метод, чтобы удовлетворить ваши потребности.

Error: User Rate Limit Exceeded Arvind Bhardwaj
2

Смотрите подробности здесь.

//Get the eav attribute model
$attr_model = Mage::getModel('catalog/resource_eav_attribute');

//Load the particular attribute by id
//Here 73 is the id of 'manufacturer' attribute
$attr_model->load(73);

//Create an array to store the attribute data
$data = array();

//Create options array
$values = array(
    //15 is the option_id of the option in 'eav_attribute_option_value' table
    15 => array(
            0 => 'Apple'    //0 is current store id, Apple is the new label for the option
        ),
    16 => array(
            0 => 'HTC'
        ),
    17 => array(
            0 => 'Microsoft'
        ),
);

//Add the option values to the data
$data['option']['value'] = $values;

//Add data to our attribute model
$attr_model->addData($data);

//Save the updated model
try {
    $attr_model->save();
    $session = Mage::getSingleton('adminhtml/session');
    $session->addSuccess(
        Mage::helper('catalog')->__('The product attribute has been saved.'));

    /**
     * Clear translation cache because attribute labels are stored in translation
     */
    Mage::app()->cleanCache(array(Mage_Core_Model_Translate::CACHE_TAG));
    $session->setAttributeData(false);
    return;
} catch (Exception $e) {
    $session->addError($e->getMessage());
    $session->setAttributeData($data);
    return;
}

Похожие вопросы