Hinzufügen von benutzerdefinierten Layouts für CMS und Kategorie bei Problemen mit benutzerdefinierten Modulen

14

Ich habe eine Kategorie in meinem Shop, die ein völlig anderes Layout als die Standard-Magento-Layouts erfordert. Also habe ich eine neue Kopie der 1column.phtml erstellt und umbenannt und eine kleine Änderung zum Testen vorgenommen.

Das Problem ist nun, dass das benutzerdefinierte Layout nicht angezeigt wird. Ich habe ein Modul erstellt (das so funktioniert, wie es in der Übersicht Admin> Config> Advanced angezeigt wird).

Meine Dateien und Inhalte sind wie folgt:

app / etc / modules / Test_Page.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <active>true</active>
            <codePool>community</codePool>
            <version>0.1.0</version>
            <depends>
                <Mage_Page />
            </depends>
        </Test_Page>
    </modules>
</config>

app / code / local / Test / Page / etc / config.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <version>0.1.0</version>
        </Test_Page>
    </modules>
    <global>
        <page>
            <layouts>
                <homepage module="page" translate="label">
                    <label>Homepage</label>
                    <template>page/home.phtml</template>
                    <layout_handle>homepage</layout_handle>
                </homepage>

                <!-- add more layouts here -->
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <Test_Page>
                    <file>test_page.xml</file>
                </Test_Page>
            </updates>
        </layout>
    </frontend>
</config>

app / design / frontend / test / default / layout / test_page.xml

    <?xml version="1.0"?> 
<layout>
    <homepage translate="label">
        <label>Home Page</label>
        <reference name="root">
            <action method="setTemplate"><template>page/home.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </homepage> 
</layout>

Ich kann nichts sehen, was ich vermasselt habe. Es wird als Modul gelesen, aber das benutzerdefinierte Layout wird nicht angezeigt :(

Chris Morris
quelle

Antworten:

21

Um es in der Layout-Dropdown-Liste anzuzeigen, müssen Sie ein benutzerdefiniertes Modul erstellen (Sie können auch etwas in eine Kerndatei einfügen, tun dies jedoch nicht). Nennen wir die Erweiterung Easylife_Layout. Dazu müssen Sie folgende Dateien anlegen: app/etc/modules/Easylife_Layout.xml- die Deklarationsdatei

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

app/code/local/Easylife/Layout/etc/config.xml - die Konfigurationsdatei

<?xml version="1.0"?> 
<config>
    <modules>
        <Easylife_Layout>
            <version>0.0.1</version>
        </Easylife_Layout>
    </modules>
    <global>
        <page>
            <layouts> 
                <lookbook module="page" translate="label">
                    <label>Lookbook</label>
                    <template>page/1column-lookbook.phtml</template>
                    <layout_handle>lookbook</layout_handle>
                </lookbook> 
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <easylife_layout>
                    <file>easylife_layout.xml</file>
                </easylife_layout>
            </updates>
        </layout>
    </frontend>
</config>

app/design/frontend/{interface}/{theme}/layout/easylife_layout.xml - die Layoutdatei

<?xml version="1.0"?> 
<layout>
    <lookbook translate="label">
        <label>Lookbook</label>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </lookbook> 
</layout>

Der letzte ist erforderlich, wenn Sie in der Lage sein möchten, Ihr benutzerdefiniertes Layout in Layoutdateien zu referenzieren. Etwas wie:

<update hande="lookbook" />

Cache leeren und ... fertig. Ich weiß, ob es bei Ihnen funktioniert.

Marius
quelle
An-
6

Es gibt zwei Möglichkeiten:

  1. Sie fügen Ihrer Kategorie ein benutzerdefiniertes Layout hinzu und gehen folgendermaßen vor:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. Sie setzen es als Seitenlayout und fügen Sie die config.xmlin , global/page/layouts/aber ich weiß nicht, wie es genau zu tun.

Wenn Sie es nur einmal benötigen, können Sie bei der ersten Lösung bleiben. Aber sei vorsichtig. Es gibt <action method="setIsHandle"><applied>1</applied></action>in der page.xmlManchmal ist diese Einstellung , um die Änderung der Vorlage verhindert.

So führen Sie die erste Lösung durch: Wählen Sie Ihre Kategorie aus, gehen Sie zu Custom Designund fügen Sie alles innerhalb des <layout />Knotens in das Custom Layout UpdateTextfeld ein, z. B .:

<reference name="root">
    <action method="setBackgroundGraphic">
        <background>two-pieces</background>
    </action>
    <action method="setTemplate">
    <template>page/2columns-right-highStep.phtml</template>
    </action>
    <action method="setIsHandle">
        <applied>1</applied>
    </action>
</reference>
Fabian Blechschmidt
quelle
Wo müsste ich die Layoutreferenz für die erste kleben? Ich habe sehr ähnlichen Code in layout.xml ausprobiert, hatte aber keine Ahnung, auf welcher Ebene er platziert werden soll. Ich verwende <catalog_category_view> als Standard für alle Kategorieseiten. Daher habe ich angenommen, ich benötige etwas Ähnliches, um eine weitere Option hinzuzufügen.
Chris Morris
hat die Antwort bearbeitet
Fabian Blechschmidt