Eliminar atributo de categoría

8

Inserté 2 atributos de categoría usando un módulo con el archivo mysql4-install-0.1.0.phpen una carpeta sql:

$installer = $this;

$installer->startSetup();

$installer->addAttribute('catalog_category', 'short_description', array(
    'type'          => 'text',
    'label'         => 'Short Description',
    'input'         => 'textarea',
    'group'         => 'General',
    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'       => true,
    'required'      => false
));
$installer->addAttribute('catalog_category', 'static_block', array(
    'type'          => 'text',
    'label'         => 'Brand',
    'input'         => 'text',
    'group'         => 'General',
    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'       => true,
    'required'      => false
));

$this->endSetup();

¿Cómo puedo eliminarlos ahora? Intenté insertar esto en el archivo sql, como se sugiere en otras respuestas:

$installer = $this;
$installer->startSetup();
$installer->removeAttribute('catalog_category', 'short_description');
$installer->removeAttribute('catalog_category', 'static_block');
$installer->endSetup();

Pero nada pasa. ¿Debo crear otro módulo?

Claudiu Creanga
fuente

Respuestas:

14

Necesita crear un script de actualización diferente.
Si el script de instalación tiene la versión, 0.1.0cree el archivo upgrade-0.1.0-0.1.1.phpcon este contenido:

$installer = $this;
$installer->removeAttribute('catalog_category', 'short_description');
$installer->removeAttribute('catalog_category', 'static_block');

Luego vaya a config.xmly cambie la versionetiqueta de 0.1.0a 0.1.1.

Borre el caché y actualice cualquier página.

Como nodo lateral ... no use $installer->startSetup();en scripts de instalación / actualización que eliminen datos. Al llamarlo, se desactivan las comprobaciones de clave externa y puede terminar con datos de zombies en su base de datos.

Marius
fuente
Esto funcionó a la perfección en una versión 1.9. Pero también tengo que hacerlo en una versión 1.5 de magento y no elimina el campo del backend. Caché eliminado, por supuesto. ¿Podría ser una configuración que está bloqueando esto? o algo específico para 1.5?
Claudiu Creanga