martes, 20 de diciembre de 2011

Magento: Como sobre cargar un bloque

Ejemplo:
Para sobre cargar este bloque:
    Mage_Adminhtml_Block_Sales_Order_Grid
  
Antes de comenzar
Empresa: significa el nombre de espacio dentro de la carpeta de
./app/code/local

Declarar un modulo nuevo si no lo tienes, para declarar el mdolulo debemos crear un archivo llamado Empresa_Adminhtml.xml en :
./app
    /etc
        /modules
            /Empresa_Adminhtml.xml
          
El contenido del archivo debe ser:
<?xml version="1.0"?>
<config>
    <modules>
        <Empresa_Adminhtml>
            <active>true</active>
            <codePool>local</codePool>
        </Empresa_Adminhtml>
    </modules>
</config>

Luego debemos configurar el modulo, para ello creamos un archivo de configuración que debe quedar en:

./app
    /code
        /local
            /Empresa
                /Adminhtml
                    /etc
                        /config.xml
                  
El contenido minímo que debe tener tu archivo config.xml es:
<?xml version="1.0" encoding="utf-8"?>
<config>
    <modules>
        <Empresa_Adminhtml>
            <version>0.1.0</version>
        </Empresa_Adminhtml>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <sales_order_grid>Empresa_Adminhtml_Block_Sales_Order_Grid</sales_order_grid>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
</config>
    
Ahora si creamos la clase que sobre cargara a la calse original, el archivo debe quedar en:

./app
    /code
        /local
            /Empresa
                /Adminhtml
                    /Block
                        /Sales
                            /Order
                                /Grid.php
                          
El archivo debe tener como minimo este contenido, noten que nuestra clase extiende del bloque que estamos sobrecargando, lo cual sirve para tener que implementar solo los cambios especificos en el bloque.

<?php
class Empresa_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
    /**
     * @todo
     */
}

No hay comentarios:

Publicar un comentario