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

Chris Morris
fonte

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

Marius
fonte
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>
Fabian Blechschmidt
fonte
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