Wie kann ich dem Mage_Page-Modul ein Seitenlayout hinzufügen?

11

Ich entdeckte nach dem Upgrade Magento , dass die Kern Mage_Page‚s config.xmlmanuell bearbeitet worden, und jetzt suche ich die XML in einer Art und Weise zu ändern , die nicht überschreiben Kern der Fall ist.

Hier ist ein Beispiel für das Kern-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>

Ich möchte ein anderes Layout hinzufügen, wie one_columnoder empty. Das Überschreiben config.xmlmit app/code/local/Mage/Page/etc/config.xmlschien nicht zu funktionieren. Wie sollte ich vorgehen, ohne den Kern zu berühren?

Dan LaManna
quelle

Antworten:

5

Erstellen Sie ein Modul mit einer Abhängigkeit von Mage_Page und fügen Sie das neue Layout in Ihrer eigenen Konfiguration hinzu:

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
quelle
Es ist auch gut, das zugehörige Layout-Update-Handle in einer benutzerdefinierten Layout-Update-Datei für das Modul bereitzustellen. Verweisen Sie auf die ursprünglicheMage_Page
Layoutkonfiguration
@benmarks fertig! :)
Rick Kuipers
1

Es besteht die Möglichkeit, der Datei / etc / local.xml das hinzuzufügen, was Sie benötigen. Erstellen Sie einfach den globalen Knoten / page / layouts und fügen Sie dort hinzu, was Sie möchten. Es ist keine besonders elegante Lösung, funktioniert jedoch einwandfrei, wenn Sie kein dediziertes Modul zum Hinzufügen einer Layoutvorlage erstellen möchten. Wenn Sie diese Layoutkonfiguration an mehrere Shops verteilen möchten, erstellen Sie ein lokales / Community-Modul dafür.

Petar Dzhambazov
quelle