Aggiunta di layout personalizzati per CMS e uso categoria con problemi di modulo personalizzato


14

Ho una categoria nel mio negozio che richiede un layout totalmente diverso dai layout standard di Magento. Così ho creato una nuova copia di 1column.phtml e l'ho rinominata e ho fatto una piccola modifica per testare.

Ora il problema è che il layout personalizzato non viene visualizzato. Ho creato un modulo (che funziona come mostrato in Admin> Config> Panoramica avanzata).

I miei file e contenuti sono i seguenti:

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

Non riesco a vedere nulla che ho rovinato, viene letto come un modulo ma il layout personalizzato non viene visualizzato :(

Risposte:


21

Per farlo apparire nel menu a discesa del layout devi creare un modulo personalizzato (puoi anche aggiungere qualcosa in un file core ma per favore non farlo). Chiamiamo l'estensione Easylife_Layout. Per questo è necessario creare i seguenti file: app/etc/modules/Easylife_Layout.xml- il file di dichiarazione

<?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 - il file di configurazione

<?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 - il file di 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>

L'ultimo è necessario nel caso in cui si desideri poter fare riferimento al proprio layout personalizzato nei file di layout. Qualcosa di simile a:

<update hande="lookbook" />

Svuota la cache e ... tutto qui. Lo so se funziona per te.


il login e il
logout

6

Vi sono due possibilità:

  1. Aggiungi un layout personalizzato alla tua categoria e fai questo:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. Lo implementi come un layout di pagina e lo aggiungi a config.xmlin global/page/layouts/ma non so come farlo esattamente.

Se ne hai bisogno solo una volta, puoi rimanere con la prima soluzione. Ma fa attenzione. Ci sono <action method="setIsHandle"><applied>1</applied></action>in page.xmlTalvolta questa impostazione impedisce la modifica del modello.

Per fare la prima soluzione: seleziona la tua categoria, arriva Custom Designe metti tutto all'interno del <layout />nodo nell'area di testo Custom Layout Update, ad esempio:

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

Dove dovrei incollare il riferimento del layout per il primo? Ho provato un codice molto simile in layout.xml ma non avevo idea del livello per posizionarlo, ho riferimenti lì per tutte le pagine della categoria come impostazione predefinita usando <catalog_category_view> quindi ho pensato che avessi bisogno di qualcosa di simile per aggiungere un'altra opzione
Chris Morris

ha curato la risposta
Fabian Blechschmidt il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.