मैं Mage_Page मॉड्यूल में पेज लेआउट कैसे जोड़ सकता हूं?


11

मैंने Magento के उन्नयन के बाद पता लगाया कि कोर Mage_Pageका config.xmlमैन्युअल रूप से संपादन किया गया था, और अब मैं XML को एक तरह से बदलना चाह रहा हूं जो कोर को अधिलेखित नहीं करता है।

यहाँ कोर XML का एक उदाहरण दिया गया है:

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

मैं एक और लेआउट जोड़ना चाह रहा हूं, जैसे one_columnया empty। ओवरराइटिंग config.xmlसे app/code/local/Mage/Page/etc/config.xmlकाम नहीं लगता है, मुझे इसे बिना कोर को टच किए कैसे करना चाहिए?

जवाबों:


5

Mage_Page पर निर्भरता के साथ एक मॉड्यूल बनाएं और अपने स्वयं के कॉन्फ़िगरेशन में नया लेआउट जोड़ें:

एप्लिकेशन / etc / मॉड्यूल / 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>

एप्लिकेशन / कोड / स्थानीय / मेरी / लेआउट / 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>

एप्लिकेशन / डिजाइन / दृश्यपटल / आधार / डिफ़ॉल्ट / लेआउट / 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>

मॉड्यूल के लिए कस्टम लेआउट अपडेट फ़ाइल में संबंधित लेआउट अपडेट हैंडल प्रदान करने के लिए अच्छा है। रेफरी में मूल लेआउट विन्यास Mage_Pageमॉड्यूल (लिंक) और इसी अद्यतन संभाल घोषणाओं (लिंक)
benmarks

@ किए गए निशान! :)
रिक कुइपर्स

1

आपके पास जो भी ऐप / etc / local.xml है, उसे जोड़ने का विकल्प है, बस ग्लोबल / पेज / लेआउट नोड बनाएं और जो भी आप चाहते हैं उसे वहां जोड़ें। यह सबसे सुरुचिपूर्ण समाधान नहीं है, लेकिन यह ठीक काम करता है यदि आप लेआउट टेम्पलेट जोड़ने के उद्देश्य के लिए समर्पित मॉड्यूल नहीं बनाना चाहते हैं। यदि आप इस लेआउट कॉन्फ़िगरेशन को अधिक दुकानों में वितरित करने की योजना बनाते हैं, तो इसके लिए एक स्थानीय / सामुदायिक मॉड्यूल करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.