¿Cómo puedo agregar un diseño de página al módulo Mage_Page?

11

Descubrí después de la actualización de Magento que el núcleo Mage_Page's config.xmlse han editado manualmente, y ahora estoy buscando para cambiar el código XML de una manera que no lo hace de núcleo de sobreescritura.

Aquí hay un ejemplo del núcleo XML:

<config>
    <modules>
        <Mage_Page>
            <version>1.6.0.0</version>
        </Mage_Page>
    </modules>
    <global>
        <models>
            <page>
                <class>Mage_Page_Model</class>
            </page>
        </models>
        <blocks>
            <page>
                <class>Mage_Page_Block</class>
            </page>
        </blocks>
        <page>
            <layouts>
                <empty module="page" translate="label">
                    <label>Empty</label>
                    <template>page/empty.phtml</template>
                    <layout_handle>page_empty</layout_handle>
                </empty>
                <one_column module="page" translate="label">
                    <label>1 column</label>
                    <template>page/1column.phtml</template>
                    <layout_handle>page_one_column</layout_handle>
                    <is_default>1</is_default>

Estoy buscando agregar otro diseño, como one_columno empty. Sobrescribir config.xmlcon app/code/local/Mage/Page/etc/config.xmlno parecía funcionar, ¿cómo debo hacerlo sin tocar el núcleo?

Dan LaManna
fuente

Respuestas:

5

Cree un módulo con una dependencia en Mage_Page y agregue el nuevo diseño en su propia configuración:

app / etc / modules / My_Layout.xml

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

app / code / local / My / Layout / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <My_Layout>
            <version>1.0.0</version>
        </My_Layout>
    </modules>
    <global>
        <page>
            <layouts>
                <my_layout module="page" translate="label">
                    <label>My Layout</label>
                    <template>page/mylayout.phtml</template>
                    <layout_handle>my_layout</layout_handle>
                </my_layout>
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <my_layout module="My_Layout">
                    <file>my_layout.xml</file>
                </my_layout>
            </updates>
        </layout>
    </frontend>
</config>

app / design / frontend / base / default / layout / my_layout.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <my_layout translate="label">
        <label>All My Layout Pages</label>
        <reference name="root">
            <action method="setTemplate"><template>page/mylayout.phtml</template></action>
            <!-- Mark root page block that template is applied -->
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </my_layout>
</layout>
Rick Kuipers
fuente
También es bueno proporcionar el controlador de actualización de diseño relacionado en un archivo de actualización de diseño personalizado para el módulo. Ref. La configuración de diseño original en el Mage_Pagemódulo (enlace) y las correspondientes declaraciones de manejador de actualización (enlace)
puntos de referencia
@benmarks hecho! :)
Rick Kuipers
1

Existe la opción de agregar lo que necesita a la aplicación / etc / local.xml, simplemente cree el nodo global / página / diseños y agregue lo que quiera allí. No es la solución más elegante, pero funciona bien si no desea crear un módulo dedicado con el fin de agregar una plantilla de diseño. Si planea distribuir esta configuración de diseño a más tiendas, haga un módulo local / comunitario para ello.

Petar Dzhambazov
fuente