更改属性的范围


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的属性列表中不可见,因此我必须在数据库中进行更改。我必须更改哪个键?

Answers:


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的id为与您的属性已在记录eav_attribute表。


您可以替换'catalog_category'Mage_Catalog_Model_Category::ENTITY
丹,

@担。如果可以,但我不想。:D。现在认真地...这也将起作用。谢谢
Marius

上面的代码段对我不起作用。相反,我要做的是:$installer->updateAttribute('Mage_Catalog_Model_Category::ENTITY', 'menutopdescription1', 'is_global', '0');
路易·B

2
@LouisBataillard我已经编辑了答案(等待批准)。在属性创建期间使用“全局”,该属性通过_prepareValues()方法传递。并修改为“ is_global”。为什么开发人员不知道为什么这样做(我发现改变我们引用同一件事的方式会令人困惑)。“ is_global”是实际属性的“属性”。这是我们在属性更新期间要参考的关键。
达伦·费尔顿

如果必须将范围更改为DB中的Globle内置网站怎么办?
Ketan Borada
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.