Làm cách nào tôi có thể thêm bố cục trang vào mô-đun Mage_Page?


11

Tôi phát hiện ra sau khi nâng cấp Magento rằng lõi Mage_Page's config.xmlđã được chỉnh sửa bằng tay, và bây giờ tôi đang tìm cách để thay đổi XML trong một cách mà không làm nòng cốt ghi đè.

Đây là một ví dụ về XML cốt lõi:

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

Tôi đang tìm cách để thêm một bố cục khác, như one_columnhoặc empty. Ghi đè config.xmlvới app/code/local/Mage/Page/etc/config.xmldường như không hoạt động, làm thế nào tôi nên làm điều đó mà không chạm vào cốt lõi?

Câu trả lời:


5

Tạo một mô-đun với sự phụ thuộc vào Mage_Page và thêm bố cục mới trong cấu hình của riêng bạn:

ứng dụng / etc / mô-đun / 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>

ứng dụng / mã / cục bộ / My / Bố cục / 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>

ứng dụng / thiết kế / frontend / cơ sở / mặc định / 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>

Cũng tốt để cung cấp xử lý cập nhật bố cục liên quan trong tệp cập nhật bố cục tùy chỉnh cho mô-đun. Tham chiếu cấu hình bố cục ban đầu trong Mage_Pagemô-đun (liên kết)khai báo xử lý cập nhật tương ứng (liên kết)
đánh dấu

@ đánh dấu xong! :)
Rick Kuipers

1

Có tùy chọn để thêm những gì bạn cần vào app / etc / local.xml, chỉ cần tạo nút global / page / layout và thêm những gì bạn muốn ở đó. Đây không phải là giải pháp thanh lịch nhất, nhưng nó hoạt động tốt nếu bạn không muốn tạo mô-đun chuyên dụng cho mục đích thêm mẫu bố cục. Nếu bạn có kế hoạch phân phối cấu hình bố cục này cho nhiều cửa hàng hơn, thì hãy thực hiện mô-đun cục bộ / cộng đồng cho nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.