Domanda

ho scoperto dopo l'aggiornamento Magento che Mage_Page del config.xml nucleo era stato modificato manualmente, e ora sto cercando di cambiare il codice XML in un modo che non lo fa nucleo sovrascrittura.

Ecco un esempio di XML nucleo:

<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>

Sto cercando di aggiungere un altro layout, come one_column o empty. La sovrascrittura config.xml con app/code/local/Mage/Page/etc/config.xml non sembra funzionare, come devo fare per farlo senza anima toccare?

È stato utile?

Soluzione

Creare un modulo con una dipendenza da Mage_Page e aggiungere il nuovo layout nella propria configurazione:

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 / mio / 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>

Altri suggerimenti

C'è la possibilità di aggiungere ciò che è necessario app / etc / local.xml, basta creare la pagina / / nodo globale layout e aggiungere ciò che mai si vuole lì. Non è più soluzione elegante, ma funziona bene se non si desidera creare il modulo dedicato per lo scopo di aggiungere un modello di layout. Se si prevede di distribuire questa configurazione del layout a più negozi, poi fare un modulo / comunità locale per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top