Hinzufügen von benutzerdefinierten Layouts für CMS und Kategorie verwenden mit benutzerdefiniertem Modulstörungen
-
16-10-2019 - |
Frage
Ich habe eine Kategorie in meinem Geschäft, die ein völlig anderes Layout für die Standard -Magento -Layouts erfordert. Also habe ich eine neue Kopie des 1Column.phtml erstellt und umbenannt und eine kleine Änderung vorgenommen, um sie zu testen.
Das Problem ist nun, dass das benutzerdefinierte Layout nicht angezeigt wird. Ich habe ein Modul erstellt (das funktioniert, wie es im Administrator> Konfiguration> erweiterte Übersicht 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/Standard/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 ergeben :(
Lösung
Um es in der Dropdown -Abteilung für Layout anzuzeigen, müssen Sie ein benutzerdefiniertes Modul erstellen (Sie können auch etwas in einer Kerndatei hinzufügen, aber bitte nicht tun). Nennen wir die Erweiterung EasyLife_Layout. Dazu müssen Sie die folgenden Dateien erstellen: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, falls Sie in der Lage sein möchten, Ihr benutzerdefiniertes Layout in Layout -Dateien zu verweisen. Etwas wie:
<update hande="lookbook" />
Löschen Sie den Cache und ... das war's. Le tme wissen, ob es für Sie funktioniert.
Andere Tipps
Es gibt zwei Möglichkeiten:
Sie fügen Ihrer Kategorie ein benutzerdefiniertes Layout hinzu und tun Folgendes:
<layout> <reference name="root"> <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action> </reference> </layout>
Sie implementieren es als Seitenlayout und fügen es dem hinzu
config.xml
inglobal/page/layouts/
Aber ich weiß nicht, wie es genau geht.
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 dem page.xml
Manchmal verhindert diese Einstellung die Änderung der Vorlage.
Um die erste Lösung durchzuführen: Wählen Sie Ihre Kategorie aus Custom Design
und stecken Sie alles in die <layout />
Knoten in die Custom Layout Update
textarea, zB:
<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>