Создание новых вариантов для атрибутов Magento


у меня возникли проблемы при попытке создать новые параметры на вкладке "настройка Параметров". При создании атрибута, я уже знаю, как сохранить данные правильно в базе данных. Я, заменив Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Optionsи с моим модуль для создания настраиваемых полей.

Мой модуль:

Config.xml

<config>
        <blocks>
            <adminhtml>
                <rewrite>
                     <catalog_product_attribute_edit_tabs>Ceicom_Swatches_Block_Adminhtml_Tabs</catalog_product_attribute_edit_tabs>
                     <catalog_product_attribute_edit_tab_options>Ceicom_Swatches_Block_Adminhtml_Options</catalog_product_attribute_edit_tab_options>
                 </rewrite>
             </adminhtml>
        </blocks>
</config>

Ceicom/Swatches/Block/Adminhtml/Options.php

class Ceicom_Swatches_Block_Adminhtml_Options extends Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options
{
    public function __construct()
    {
        parent::__construct();
        $this->setTemplate('ceicom/attribute/options.phtml');
    }
}

В файле phtml положил полях:

inserir a descrição da imagem aqui

В то, что все указывает на то, для этого необходимо добавить новые столбцы в таблицу eav_attribute_option. Например, campo_1, campo_2.

, Чтобы сохранить дополнительные поля, мне нужно переписать Mage_Eav_Model_Resource_Entity_Attribute::_saveOption().

, намек, как сделать это без изменения ядра, так же, как я сделал выше, используя rewrite, и как сделать загрузку базы данных для входа в изменить атрибут?

Author: Jonatan Ribeiro dos Santos, 2014-01-31

1 answers

Можно переписать eav/entity_attribute с помощью другой модели.

Для этого добавьте в config.xml -

<global>
    ...
    <models>
        ...
        <eav_resource>
            <rewrite>
                <entity_attribute>Seumodulo_Model_Eav_Resource_Entity_Attribute</entity_attribute>
            </rewrite>
        </eav_resource>
        ...
    </models>
    ...
</global>

Создайте файл

/app/code/local/Seumodulo/Eav/Model/Resource/Entity/Attribute.php

И используйте подпись класса, так

class Seumodulo_Eav_Model_Resource_Entity_Attribute extends Mage_Core_Model_Resource_Db_Abstract {
    ...
}

Убедитесь, что вы очистили кэша конфигурации и убедитесь, что модуль появляется в System->Configuration->Advanced->Disable Modules Output

Теста так, чтобы увидеть, если он работал

echo get_class(Mage::getResourceModel('eav/entity_attribute'));

Для сохранения вы можете sobreescrever методы, которые позволяют акций до и после сохранения. Они

Mage_Catalog_Model_Resource_Attribute::_beforeSave()
Mage_Catalog_Model_Resource_Attribute::_afterSave()

Вместо

Mage_Eav_Model_Resource_Entity_Attribute::_saveOption()

Таким образом, вы не должны беспокоиться о оригинальный код.

Примеры по ссылкам

--

Согласно evolucão устранения проблемы в комментариях, я пришел к выводу, что метод, который должен быть sobreescrito это catalog_entity_attribute_save_before

 1
Author: marcusagm, 2014-02-10 12:53:18