Mage_Page 모듈에 페이지 레이아웃을 추가하려면 어떻게해야합니까?


11

나는 핵심 것을 업그레이드 젠토 후 발견 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에 의존하는 모듈을 만들고 자신의 구성에 새 레이아웃을 추가하십시오.

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>

또한 모듈의 사용자 정의 레이아웃 업데이트 파일에 관련 레이아웃 업데이트 핸들을 제공하는 것이 좋습니다. 모듈 (링크)해당 업데이트 핸들 선언 (링크) 의 원래 레이아웃 구성을Mage_Page 참조 하십시오
benmarks

@ 벤 마크 완료! :)
Rick Kuipers

1

app / etc / local.xml에 필요한 것을 추가하고, global / page / layouts 노드를 만들고 원하는 것을 추가하는 옵션이 있습니다. 가장 우아한 솔루션은 아니지만 레이아웃 템플릿을 추가하기 위해 전용 모듈을 만들지 않으려는 경우에는 잘 작동합니다. 이 레이아웃 구성을 더 많은 상점에 분배하려면 로컬 / 커뮤니티 모듈을 수행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.