Sulla rete ci sono molti tutorial sul come aggiungere un attributo alla categoria di Magento. Quasi tutti (dal mio punto di vista) soffrono di una pecca: necessità di creare un modulo aggiuntivo per un operazione che deve essere eseguita solamente una volta.
Infatti, basta modificare leggermente lo script per far si che lo si può eseguire direttamente creando la categoria desiderata.
Ecco il codice per creare un nuovo campo “orig_id” come attributo delle categorie:
Create un file “cat.php” nella root del vostro sito, e mettete dentro seguente codice
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php define('MAGENTO', realpath(dirname(__FILE__))); require_once MAGENTO . '/app/Mage.php'; Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); //configuration: $newAttributeName = "In Evidenza"; $newAttributeCode = "inevidenza"; $setup = new Mage_Eav_Model_Entity_Setup('core_setup'); $setup->startSetup(); $entityTypeId = $setup->getEntityTypeId('catalog_category'); $attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId); $attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId); $setup->addAttribute('catalog_category', $newAttributeCode, array( 'input' => 'text', 'type' => 'text', 'label' => $newAttributeName, 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 'visible' => true, 'required' => false, 'user_defined' => false, 'default' => 0 )); $setup->addAttributeToGroup( $entityTypeId, $attributeSetId, $attributeGroupId, $newAttributeCode, '10'//posizione ); $oAttribute = Mage::getSingleton('eav/config')->getAttribute('catalog_category', $newAttributeCode); $oAttribute->save(); echo "Fine"; |
A questo punto eseguite lo script, svuotate la cache e andate a vedere le categorie. Nel tab Generale dovrebbe comparire il nuovo campo.
Per aggiungere un campo di tipo boolean (Yes, No), sostituire il codice relativo all’attributo con
1 2 3 4 5 6 7 8 9 10 11 |
$setup->addAttribute('catalog_category', $newAttributeCode, array( 'input' => 'select', 'type' => 'int', 'source' => 'eav/entity_attribute_source_boolean', 'label' => $newAttributeName, 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 'visible' => true, 'required' => false, 'user_defined' => false, 'default' => 0 )); |
Se invece volete rimuovere un attributo da un entita di magento potete modificare lo script in questo modo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php define('MAGENTO', realpath(dirname(__FILE__))); require_once MAGENTO . '/app/Mage.php'; Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); //configuration: $newAttributeName = "In Evidenza"; $newAttributeCode = "inevidenza"; $setup = new Mage_Eav_Model_Entity_Setup('core_setup'); $setup->startSetup(); $entityTypeId = $setup->getEntityTypeId('catalog_category'); $setup->removeAttribute($entityTypeId,$newAttributeCode); echo "Fine"; |
ma dove si mette questo codice in che file di magento. Dovete essere più chiari quando spiegate le cose vizio da programmatori…
Mea culpa. Il codice deve essere inserito in un file .php nella root di installazione, dopo di che eseguito.
Ho modificato il post