Menambahkan tata letak khusus untuk penggunaan CMS dan Kategori dengan masalah modul khusus

14

Saya memiliki kategori di toko saya yang memerlukan tata letak yang sama sekali berbeda dengan tata letak Magento standar. Jadi saya membuat salinan baru 1column.phtml dan menamainya dan membuat satu perubahan kecil untuk menguji.

Sekarang masalahnya adalah tata letak khusus tidak muncul. Saya membuat modul (yang berfungsi seperti yang terlihat di Admin> Config> Tinjauan umum).

File dan konten saya adalah sebagai berikut:

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

Saya tidak bisa melihat apa pun yang saya buat kacau, sedang dibaca sebagai modul tetapi tata letak kustom tidak muncul :(

Chris Morris
sumber

Jawaban:

21

Untuk membuatnya muncul di dropdown tata letak, Anda perlu membuat modul khusus (Anda juga dapat menambahkan sesuatu di file inti tapi tolong jangan lakukan itu). Beri nama ekstensi Easylife_Layout. Untuk ini, Anda perlu membuat file berikut: app/etc/modules/Easylife_Layout.xml- file deklarasi

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

<?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 - file tata letak

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

Yang terakhir diperlukan jika Anda ingin dapat merujuk tata letak kustom Anda dalam file tata letak. Sesuatu seperti:

<update hande="lookbook" />

Bersihkan cache dan ... itu saja. Tolong tahu apakah itu bekerja untuk Anda.

Marius
sumber
masuk dan keluar melakukan trik untuk saya setelah ini
cyptus
6

Ada dua kemungkinan:

  1. Anda menambahkan tata letak khusus ke kategori Anda dan melakukan ini:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. Anda menerapkannya sebagai tata letak halaman dan menambahkannya ke config.xmldalam global/page/layouts/tetapi saya tidak tahu, bagaimana melakukannya dengan tepat.

Jika Anda hanya membutuhkannya sekali saja, Anda bisa tetap menggunakan solusi pertama. Tetapi berhati-hatilah. Ada <action method="setIsHandle"><applied>1</applied></action>di page.xmlKadang - kadang pengaturan ini mencegah perubahan template.

Untuk melakukan solusi pertama: Pilih kategori Anda, harus Custom Designdan meletakkan segala sesuatu di dalam <layout />node ke dalam Custom Layout Updatetextarea, misalnya:

<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
sumber
Di mana saya harus menempel referensi tata letak untuk yang pertama? Saya mencoba kode yang sangat mirip di layout.xml tetapi tidak tahu level apa untuk meletakkannya, saya punya referensi di sana untuk semua halaman kategori sebagai standar menggunakan <catalog_category_view> jadi saya berasumsi saya memerlukan sesuatu yang mirip untuk menambahkan opsi lain
Chris Morris
diedit jawabannya
Fabian Blechschmidt