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