Agregar atributos a una categoría de Magento
Muchas veces es necesario ampliar la información que aporta las categerias de magento, por ejemplo con otra descripción u otra imagen.
He visto 2 soluciones:
- Onsertando un nuevo registro de forma manual directamente en la tablas (eav_attibute, etc…). No es muy recomendable ya que además según el atributo y para que necesitas escribir en varias tablas
- Haciendo un pequeño componente que usaremos una vez y luego borraremos. El proceso es parecido a el sistema de actulización de atributos que explican en la wiki de Magento. Aquí explicaré como hacerlo y al final dejaré el zip por si se quiere descargar
El módulo lo llamaremos AddAttributeCategory y constará de 3 ficheros. El primero situado en app\code\local\DD\AddAttributeCategory\etc\config.xml que configura el módulo
<config> <modules> <DD_AddAttributeCategory> <version>0.1.0</version> </DD_AddAttributeCategory> </modules> <global> <resources> <AddAttributeCategory_setup> <setup> <module>DD_AddAttributeCategory</module> <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class> </setup> <connection> <use>core_setup</use> </connection> </AddAttributeCategory_setup> </resources> </global> </config> |
El siguiente fichero será el cual realiza la acción de añadir el atributo. Está dentro del fichero de instalación situado en app\code\local\DD\AddAttributeCategory\sql\addattributecatalog_setup\mysql4-install-0.1.0.php
<?php $installer = $this; $installer->startSetup(); $installer->addAttribute('catalog_category', 'imagen_destacados', array( 'type' => 'varchar', 'backend' => 'catalog/category_attribute_backend_image', 'frontend' => '', 'label' => 'Imagen Destacados', 'input' => 'image', 'class' => '', 'source' => '', 'global' => 0, 'visible' => 1, 'required' => 0, 'user_defined' => 0, 'default' => '', 'searchable' => 0, 'filterable' => 0, 'comparable' => 0, 'visible_on_front' => 0, 'unique' => 0, 'position' => 1, )); $installer->endSetup();?> |
Finalmente activamos en nuevo módulo en magento mediante el fichero app\etc\modules\DD_AddAttributeCategory.xml
<config> <modules> <DD_AddAttributeCategory> <active>true</active> <codePool>local</codePool> </DD_AddAttributeCategory> </modules> </config> |
Ya solo queda entrar en el backend y ver que, efectivamente se muestra este nuevo atributo.
Es recomendable una vez ejecutado borrar el módulo ya que en algunos casos vuelve a intentar crear el atributo y produce un error. No olvidar desactivas la cache antes de realizar nada.
Comentar que se pueden añadir atributos nuevos, usando los modelos de Magento o se pueden crear unos propios (p.e combos con valores). Para eso añadiremos el fichero \code\local\DD\AddAttributeCategory\Model\Entity\Attribute\Source\addattributecatalog.php
class DD_AddAttributeCategory_Model_Entity_Attribute_Source_Test extends Mage_Eav_Model_Entity_Attribute_Source_Table { public function getAllOptions() { return array( array( 'value' => 'none', 'label' => Mage::helper('adminhtml')->__('Nada') ), array( 'value' => 'prueba1', 'label' => Mage::helper('adminhtml')->__('Prueba 1') ), array( 'value' => 'prueba2', 'label' => Mage::helper('adminhtml')->__('Prueba 2') ) ); } }
y finalmente ampliaremos el fichero de configuracion de nuestro modulo app\code\local\DD\AddAttributeCategory\etc\config.xml con
<config> <modules> <DD_AddAttributeCategory> <version>0.1.0</version> </DD_AddAttributeCategory> </modules> <global> <resources> <AddAttributeCategory_setup> <setup> <module>DD_AddAttributeCategory</module> <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class> </setup> <connection> <use>core_setup</use> </connection> </AddAttributeCategory_setup> </resources> <models> <addattributecategory> <class>DD_AddAttributeCategory_Model</class> </addattributecategory> </models> </global> </config> |
Puedes descargarlo pulsando e DD_AddAttributeCategory. El código incluye solo las parte de ejemplo que añade una imagen adicional.
Deja un comentario