Ajout de dispositions personnalisées pour l'utilisation du CMS et des catégories avec des problèmes de module personnalisé

14

J'ai une catégorie dans mon magasin qui nécessite une mise en page totalement différente des mises en page standard de Magento. J'ai donc créé une nouvelle copie du fichier 1column.phtml, je l'ai renommé et j'ai apporté une petite modification à tester.

Maintenant, le problème est que la mise en page personnalisée n'apparaît pas. J'ai créé un module (qui fonctionne comme on le voit dans Admin> Config> Vue d'ensemble avancée).

Mes fichiers et contenus sont les suivants:

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>

Je ne vois rien de ce que j'ai foiré, il est lu comme un module mais la disposition personnalisée n'est pas affichée :(

Chris Morris
la source

Réponses:

21

Afin de le faire apparaître dans la liste déroulante de mise en page, vous devez créer un module personnalisé (vous pouvez également ajouter quelque chose dans un fichier core mais ne le faites pas). Appelons l'extension Easylife_Layout. Pour cela, vous devez créer les fichiers suivants: app/etc/modules/Easylife_Layout.xml- le fichier de déclaration

<?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 - le fichier de configuration

<?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 - le fichier de mise en page

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

La dernière est nécessaire au cas où vous souhaitez pouvoir référencer votre mise en page personnalisée dans des fichiers de mise en page. Quelque chose comme:

<update hande="lookbook" />

Vider le cache et ... c'est tout. Dites-moi si cela marche pour vous.

Marius
la source
la connexion et la
déconnexion ont
6

Il y a deux possibilités:

  1. Vous ajoutez une mise en page personnalisée à votre catégorie et procédez comme suit:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. Vous l'implémentez comme une mise en page et l'ajoutez au config.xmlin global/page/layouts/mais je ne sais pas comment le faire exactement.

Si vous n'en avez besoin qu'une seule fois, vous pouvez rester avec la première solution. Mais fais attention. Il y a <action method="setIsHandle"><applied>1</applied></action>dans page.xmlParfois ce paramètre empêche la modification du modèle.

Pour faire la première solution: Sélectionnez votre catégorie, accédez à Custom Designet mettez tout à l'intérieur du <layout />nœud dans la zone de Custom Layout Updatetexte, par exemple:

<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
la source
Où devrais-je coller la référence de mise en page pour la première? J'ai essayé un code très similaire dans layout.xml mais je ne savais pas quel niveau le placer, j'ai des références là pour toutes les pages de catégorie par défaut en utilisant <catalog_category_view> donc j'ai supposé que j'avais besoin de quelque chose de similaire pour ajouter une autre option
Chris Morris
a édité la réponse
Fabian Blechschmidt