属性のスコープを変更する


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,
));

これにより、グローバルスコープになります。それを「website」に変更したいと思います。そのため、他のウェブサイトに簡単に翻訳できます。

この属性はMagentoの属性リストには表示されないため、データベースを変更する必要があります。どのキーを変更する必要がありますか?

回答:


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_global2、テーブルcatalog_eav_attribute内の属性と同じIDを持つレコードのテーブルからに変更する必要がありeav_attributeます。


次のもの'catalog_category'と置き換えることができますMage_Catalog_Model_Category::ENTITY
Dan

@ダン。できればできるのにしたくないです。:D 今真剣に...それも動作します。おかげで
マリウス

上記のスニペットは私にとってはうまくいきませんでした。代わりに私がしなければならなかったことだった:$installer->updateAttribute('Mage_Catalog_Model_Category::ENTITY', 'menutopdescription1', 'is_global', '0');
ルイB.

2
@LouisBataillard回答を編集しました(承認待ち)。'global'は、属性の作成中に使用され、_prepareValues()メソッドを介して渡されます。そして「is_global」に変更されました。開発者がなぜこれを行うのかはわかりません(同じものを参照する方法を変更するのが混乱するのがわかります)。「is_global」は実際の属性の「属性」です。そして、これは属性の更新中に参照したいキーです。
Darren Felton

スコープをDB内のGloble instaed Webサイトに変更する必要がある場合はどうなりますか?
Ketan Borada、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.