:::: MENU ::::

Sobreescribir un fichero config.xml en la rama local

4.00 avg. rating (77% score) - 5 votes

Un clásico de Magento es tener que realizar alguna modificación en los ficheros de configuración del Core (config.xml).

La forma correcta de hacerlo, si nos fijamos en otras acciones similares de reescritura de ficheros, puede parecer que sería copiar el fichero a la rama local de la instalación. Sin embargo, al igual que ocurre con la sobreescritura de controladores de Magento, en este caso, es mejor elegir otra opción:

En primer lugar tenemos que crear una extensión Magento propia, aunque será muy sencilla, y sólo contendrá la carpeta etc y el correspondiente fichero config.xml, así como el fichero de activación del módulo en la carpeta app/etc/modules/.

Imaginemos que queremos modificar el orden de los totales en la factura en PDF en Magento (sí, otro clásico):

En el fichero app/code/core/Mage/Sales/etc/config.xml vemos que existen las siguientes líneas:

<config>
    <modules>
        <Mage_Sales>
            <version>1.6.0.7</version>
        </Mage_Sales>
    </modules>
    <global>
...
        <pdf>
...
            <totals>
                <shipping translate="title">
                    <title>Shipping &amp; Handling</title>
                    <source_field>shipping_amount</source_field>
                    <font_size>7</font_size>
                    <display_zero>0</display_zero>
                    <sort_order>400</sort_order>
                </shipping>
...
            </totals>
        </pdf>
    </global>

Imaginemos que queremos modificar el valor sort_order a 350, para que los gastos de envío aparezcan antes de los impuestos.

En nuestro archivo app/local/NV/Mimodulo/etc/config.xml, tendremos que incluir todas las ramas del árbol xml hasta el valor que queramos modificar. Sería algo así:

<config>
    <modules>
        <NV_Mimodulo>
            <version>1.0.0</version>
        </NV_Mimodulo>
    </modules>
    <global>
        <pdf>
            <totals>
                <shipping translate="title">
                    <sort_order>400</sort_order>
                </shipping>
            </totals>
        </pdf>
    </global>

Con esto estamos sobreescribiendo en la configuración el mismo valor que el módulo Sales, pero ahora tenemos que asegurarnos que nuestro archivo se cargue posteriormente al de dicho módulo.

Para ello, en el fichero de activación de nuestro módulo, en app/etc/modules/NV_Mimodulo.xml, tendremos que incluir la dependencia correspondiente:

<?xml version="1.0"?>
<config>
    <modules>
        <NV_Mimodulo>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
              <Mage_Sales />
            </depends>
        </NV_Mimodulo>
    </modules>
</config>

Con estos cambios, habremos creado una extensión propia muy sencilla para Magento y sobreescrito una configuración del core de Magento.

De esta forma, conseguimos que el mantenimiento de Magento sea más sencillo, sobre todo durante las actualizaciones, ya que copiar ficheros de configuración completos puede crearnos alguna complicación.




One Comment

  • Responder Ana |

    Sin duda al final es mejor consultar con un profesional cuando quieres hacer cambios en tu web, pero para los que nos gusta «toquitear» nos va a resultar muy útil

Hey! Qué opinas sobre el artículo?