Cambia l'ambito di un attributo


8

Un'estensione ha creato una scheda aggiuntiva nel menu della mia categoria. Con questo codice:

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

Ciò si traduce in un ambito globale. Ora vorrei cambiarlo in "sito Web". Quindi posso facilmente tradurlo per i miei altri siti Web.

Questo attributo non è visibile nell'elenco degli attributi di Magento, quindi devo apportare le modifiche al database. Quale chiave devo cambiare?

Risposte:


16

Crea uno script di aggiornamento con questo codice:

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

$ setup è un'istanza di Mage_Catalog_Model_Resource_Setup o Mage_Eav_Model_Entity_Setup.

Se si desidera modificare direttamente il db (io non lo consiglio), è necessario modificare il campo is_globala 2dalla tabella catalog_eav_attributeper il record con l'id lo stesso come attributo ha nella eav_attributetabella.


È possibile sostituire 'catalog_category'conMage_Catalog_Model_Category::ENTITY
Dan

@ Dan. Vorrei Se potessi ma non voglio. : D. ora sul serio ... funzionerà anche questo. grazie
Marius

Lo snippet sopra non ha funzionato per me. Invece quello che dovevo fare era:$installer->updateAttribute('Mage_Catalog_Model_Category::ENTITY', 'menutopdescription1', 'is_global', '0');
Louis B.

2
@LouisBataillard Ho modificato la risposta (in attesa di approvazione). 'global' viene utilizzato durante la creazione dell'attributo, che viene passato attraverso un metodo _prepareValues ​​(). E modificato in 'is_global'. Perché gli sviluppatori lo facciano non lo so (trovo confuso cambiare il modo in cui facciamo riferimento alla stessa cosa). 'is_global' è l '"attributo" dell'attributo effettivo. E questa è la chiave a cui vogliamo fare riferimento durante gli aggiornamenti degli attributi.
Darren Felton,

Cosa succede se devo modificare l'ambito del sito Web instabile Globle in DB?
Ketan Borada,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.