Adicionando layouts personalizados para uso do CMS e da categoria com problemas no módulo personalizado


14

Tenho uma categoria em minha loja que requer um layout totalmente diferente dos layouts padrão do Magento. Então, criei uma nova cópia do 1column.phtml, renomeei e fiz uma pequena alteração para testar.

Agora, o problema é que o layout personalizado não está aparecendo. Criei um módulo (que está funcionando como é visto em Admin> Config> Visão geral avançada).

Meus arquivos e conteúdo são os seguintes:

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 / front-end / teste / padrão / 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>

Não consigo ver nada do que estraguei, está sendo lido como um módulo, mas o layout personalizado não está sendo exibido :(

Respostas:


21

Para que ele apareça no menu suspenso de layout, você precisa criar um módulo personalizado (você também pode adicionar algo em um arquivo principal, mas não faça isso). Vamos nomear a extensão Easylife_Layout. Para isso, você precisa criar os seguintes arquivos: app/etc/modules/Easylife_Layout.xml- o arquivo de declaração

<?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 - o arquivo de configuração

<?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 - o arquivo de layout

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

O último é necessário, caso você queira referenciar seu layout personalizado nos arquivos de layout. Algo como:

<update hande="lookbook" />

Limpe o cache e ... é isso. Vamos saber se funciona para você.


logging dentro e fora fez o truque para mim depois disso
cyptus

6

Existem duas possibilidades:

  1. Você adiciona um layout personalizado à sua categoria e faz o seguinte:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. Você o implementa como um layout de página e o adiciona ao config.xmlin, global/page/layouts/mas não sei como fazê-lo exatamente.

Se você precisar apenas uma vez, poderá ficar com a primeira solução. Mas tenha cuidado. Há <action method="setIsHandle"><applied>1</applied></action>na page.xmlÀs vezes, essa configuração impede a mudança do modelo.

Para fazer a primeira solução: Selecione sua categoria, acesse Custom Designe coloque tudo dentro do <layout />nó na área de Custom Layout Updatetexto, por exemplo:

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

Onde eu precisaria colocar a referência de layout para o primeiro? Eu tentei um código muito semelhante no layout.xml, mas não tinha idéia de qual nível colocá-lo, tenho referências lá para todas as páginas de categoria como padrão usando <catalog_category_view>, então assumi que precisava de algo semelhante para adicionar outra opção
Chris Morris

editou a resposta
Fabian Blechschmidt 5/03/2013
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.