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.