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

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.


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>

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.