Як я можу додати макет сторінки до модуля Mage_Page?


11

Я виявив , після модернізації Magento , що основні Mage_Page«s 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 та додайте новий макет у власну конфігурацію:

app / тощо / модулі / 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 / тощо / 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>

Також добре надати відповідну ручку оновлення макета у файлі оновлення користувальницького макета для модуля. Позначте початкову конфігурацію макета в Mage_Pageмодулі (посилання) та відповідні декларації обробки оновлення (посилання)
орієнтири

@benmarks зроблено! :)
Рік Куйперс

1

Є можливість додати те, що вам потрібно для app / etc / local.xml, просто створіть глобальний вузол / сторінку / макет і додайте туди все, що вам потрібно. Це не найвишуканіше рішення, але воно прекрасно працює, якщо ви не хочете створювати виділений модуль для додавання шаблону макета. Якщо ви плануєте поширити цю конфігурацію макета на більше магазинів, то зробіть для неї модуль локального / спільноти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.