Bagaimana saya bisa menambahkan tata letak halaman ke modul Mage_Page?

11

Aku ditemukan setelah upgrade Magento bahwa inti Mage_Page's config.xmltelah diedit secara manual, dan sekarang saya sedang mencari untuk mengubah XML dengan cara yang tidak inti menimpa.

Berikut adalah contoh XML inti:

<config>
    <modules>
        <Mage_Page>
            <version>1.6.0.0</version>
        </Mage_Page>
    </modules>
    <global>
        <models>
            <page>
                <class>Mage_Page_Model</class>
            </page>
        </models>
        <blocks>
            <page>
                <class>Mage_Page_Block</class>
            </page>
        </blocks>
        <page>
            <layouts>
                <empty module="page" translate="label">
                    <label>Empty</label>
                    <template>page/empty.phtml</template>
                    <layout_handle>page_empty</layout_handle>
                </empty>
                <one_column module="page" translate="label">
                    <label>1 column</label>
                    <template>page/1column.phtml</template>
                    <layout_handle>page_one_column</layout_handle>
                    <is_default>1</is_default>

Saya ingin menambahkan tata letak lain, seperti one_columnatau empty. Timpa config.xmldengan app/code/local/Mage/Page/etc/config.xmlsepertinya tidak berhasil, bagaimana saya bisa melakukannya tanpa menyentuh inti?

Dan LaManna
sumber

Jawaban:

5

Buat modul dengan ketergantungan pada Mage_Page dan tambahkan tata letak baru di konfigurasi Anda sendiri:

app / etc / modules / My_Layout.xml

<?xml version="1.0"?>
<config>
    <modules>
        <My_Layout>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Page />
            </depends>
        </My_Layout>
    </modules>
</config>

app / code / local / My / Layout / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <My_Layout>
            <version>1.0.0</version>
        </My_Layout>
    </modules>
    <global>
        <page>
            <layouts>
                <my_layout module="page" translate="label">
                    <label>My Layout</label>
                    <template>page/mylayout.phtml</template>
                    <layout_handle>my_layout</layout_handle>
                </my_layout>
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <my_layout module="My_Layout">
                    <file>my_layout.xml</file>
                </my_layout>
            </updates>
        </layout>
    </frontend>
</config>

app / design / frontend / base / default / layout / my_layout.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <my_layout translate="label">
        <label>All My Layout Pages</label>
        <reference name="root">
            <action method="setTemplate"><template>page/mylayout.phtml</template></action>
            <!-- Mark root page block that template is applied -->
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </my_layout>
</layout>
Rick Kuipers
sumber
Juga bagus untuk menyediakan pegangan pembaruan tata letak terkait dalam file pembaruan tata letak khusus untuk modul. Ref konfigurasi tata letak asli dalam Mage_Pagemodul (tautan) dan deklarasi handle pembaruan yang terkait (tautan)
patokan
@benar sudah selesai! :)
Rick Kuipers
1

Ada opsi untuk menambahkan apa yang Anda butuhkan ke app / etc / local.xml, cukup buat simpul global / halaman / tata letak dan tambahkan apa pun yang Anda inginkan di sana. Ini bukan solusi yang paling elegan, tetapi berfungsi dengan baik jika Anda tidak ingin membuat modul khusus untuk tujuan menambahkan template layout. Jika Anda berencana untuk mendistribusikan konfigurasi tata letak ini ke lebih banyak toko, maka lakukan modul lokal / komunitas untuknya.

Petar Dzhambazov
sumber