Изменить область атрибута

8

Расширение создало дополнительную вкладку в меню моей категории. С этим кодом:

$setup->addAttribute('catalog_category', 'menutopdescription1', array(
    'group'         => 'General',
    'input'         => 'textarea',
    'type'          => 'text',
    'label'         => 'Topmenu description',
    'backend'       => '',
    'visible'       => 1,
    'required'      => 0,
    'is_wysiwyg_enabled' => 1,
    'visible_on_front' => 1,
    'note'=>'Category description for top menu dropdown',
    'is_html_allowed_on_front' => 1,
    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));

Это приводит к глобальному охвату. Теперь я хотел бы изменить его на «сайт». Так что я могу легко перевести его для других моих сайтов.

Этот атрибут не отображается в списке атрибутов Magento, поэтому я должен внести изменения в базу данных. Какой ключ мне нужно изменить?

Ronny
источник

Ответы:

16

Создайте скрипт обновления с этим кодом:

$setup->updateAttribute('catalog_category', 'menutopdescription1', 'is_global', Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE);

$ setup является экземпляром Mage_Catalog_Model_Resource_Setup или Mage_Eav_Model_Entity_Setup.

Если вы хотите изменить БД напрямую (я не рекомендую это), вам нужно изменить поле is_globalна 2из таблицы catalog_eav_attributeдля записи с идентификатором, таким же, как ваш атрибут в eav_attributeтаблице.

Мариус
источник
Вы можете заменить 'catalog_category'наMage_Catalog_Model_Category::ENTITY
Дан
@Dan. Я бы, если бы мог, но не хочу. : D. теперь серьезно ... это будет работать также. спасибо
Мариус
Фрагмент выше не работал для меня. Вместо этого я должен был:$installer->updateAttribute('Mage_Catalog_Model_Category::ENTITY', 'menutopdescription1', 'is_global', '0');
Луи Б.
2
@LouisBataillard Я отредактировал ответ (жду одобрения). 'global' используется при создании атрибута, который передается через метод _prepareValues ​​(). И изменен на «is_global». Почему разработчики делают это, я не знаю (меня смущает изменение того, как мы ссылаемся на одно и то же). «is_global» - это «атрибут» фактического атрибута. И это ключ, на который мы хотим ссылаться при обновлении атрибутов.
Даррен Фелтон
Что делать, если мне нужно сменить область действия на сайт Globle instaed в БД?
Кетан Борада