添加CMS和类别使用的自定义布局以及自定义模块的问题


14

我的商店中有一个类别,需要的布局与标准Magento布局完全不同。因此,我创建了一个新的1column.phtml副本并将其重命名,并进行了一个小的更改以进行测试。

现在的问题是自定义布局没有显示。我创建了一个模块(它在“管理”>“配置”>“高级”概述中可以看到)。

我的文件和内容如下:

app / etc / modules / Test_Page.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <active>true</active>
            <codePool>community</codePool>
            <version>0.1.0</version>
            <depends>
                <Mage_Page />
            </depends>
        </Test_Page>
    </modules>
</config>

app / code / local / Test / Page / etc / config.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <version>0.1.0</version>
        </Test_Page>
    </modules>
    <global>
        <page>
            <layouts>
                <homepage module="page" translate="label">
                    <label>Homepage</label>
                    <template>page/home.phtml</template>
                    <layout_handle>homepage</layout_handle>
                </homepage>

                <!-- add more layouts here -->
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <Test_Page>
                    <file>test_page.xml</file>
                </Test_Page>
            </updates>
        </layout>
    </frontend>
</config>

app / design / frontend / test / default / layout / test_page.xml

    <?xml version="1.0"?> 
<layout>
    <homepage translate="label">
        <label>Home Page</label>
        <reference name="root">
            <action method="setTemplate"><template>page/home.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </homepage> 
</layout>

我看不到我搞砸的任何东西,它正在作为模块读取,但是自定义布局没有显示出来:(

Answers:


21

为了使其显示在布局下拉列表中,您需要创建一个自定义模块(您也可以在核心文件中添加一些内容,但是请不要这样做)。让我们将扩展名为Easylife_Layout。为此,您需要创建以下文件: app/etc/modules/Easylife_Layout.xml-声明文件

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

app/code/local/Easylife/Layout/etc/config.xml -配置文件

<?xml version="1.0"?> 
<config>
    <modules>
        <Easylife_Layout>
            <version>0.0.1</version>
        </Easylife_Layout>
    </modules>
    <global>
        <page>
            <layouts> 
                <lookbook module="page" translate="label">
                    <label>Lookbook</label>
                    <template>page/1column-lookbook.phtml</template>
                    <layout_handle>lookbook</layout_handle>
                </lookbook> 
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <easylife_layout>
                    <file>easylife_layout.xml</file>
                </easylife_layout>
            </updates>
        </layout>
    </frontend>
</config>

app/design/frontend/{interface}/{theme}/layout/easylife_layout.xml -布局文件

<?xml version="1.0"?> 
<layout>
    <lookbook translate="label">
        <label>Lookbook</label>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </lookbook> 
</layout>

如果您希望能够在布局文件中引用自定义布局,则必须使用最后一个。就像是:

<update hande="lookbook" />

清除缓存,就这样。请让我知道这对你有没有用。


在此之后登录和注销为我完成了窍门
塞浦路斯

6

有两种可能性:

  1. 您将自定义布局添加到类别,然后执行以下操作:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. 您可以将其实现为页面布局并将其添加到中config.xmlglobal/page/layouts/但是我不知道如何精确地实现它。

如果只需要一次,则可以使用第一个解决方案。不过要小心。有<action method="setIsHandle"><applied>1</applied></action>page.xml有时该设置可以防止模板的变化。

要执行第一个解决方案:选择类别,Custom Design然后将<layout />节点内的所有内容放入Custom Layout Update文本区域,例如:

<reference name="root">
    <action method="setBackgroundGraphic">
        <background>two-pieces</background>
    </action>
    <action method="setTemplate">
    <template>page/2columns-right-highStep.phtml</template>
    </action>
    <action method="setIsHandle">
        <applied>1</applied>
    </action>
</reference>

我必须在哪里粘贴第一个的布局参考?我在layout.xml中尝试了非常相似的代码,但不知道将其放置在什么级别,我使用<catalog_category_view>作为默认目录在所有类别页面上进行了引用,因此我认为我需要类似的东西来添加另一个选项
Chris Morris

编辑答案
Fabian Blechschmidt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.