Magento 1.7 page.xml多次使用块元素

时间:2013-02-20 18:21:54

标签: magento

出于布局原因,我需要有两个不同的header.phtml(header.phtml / header1.phtml)。但是,如果我现在复制page.xml中的标题块,则只有最新块的定义似乎有效(两者都可以独立工作,但是当两个块都在page.xml中时,两者中的最新块都会导致更改)

<block type="page/html_header" name="header" as="header">
    <block type="page/template_links" name="top.links" as="topLinks"/>
    <block type="page/html_wrapper" name="top.bar" as="topBar" translate="label">
        <label>Breadcrumbs</label>
        <action method="setElementClass"><value>top-bar</value></action>
    </block>
</block>

<block type="page/html_header1" name="header1" as="header1">
    <block type="page/template_links" name="top.links" as="topLinks"/>
    <block type="page/html_wrapper" name="top.bar" as="topBar" translate="label">
        <label>Breadcrumbs</label>
        <action method="setElementClass"><value>top-bar</value></action>
    </block>
</block>

有人可以告诉我,我的错误在哪里吗?

2 个答案:

答案 0 :(得分:1)

您的问题出在html_header1

的阻止类型中

试试这个:

<block type="page/html_header" name="header1" as="header1" template="page/html/header1.phtml">
    <block type="page/template_links" name="top.links" as="topLinks"/>
        <block type="page/html_wrapper" name="top.bar" as="topBar" translate="label">
        <label>Breadcrumbs</label>
        <action method="setElementClass"><value>top-bar</value></action>
    </block>
</block>

然后将您的页面/ html / header.phtml复制到page / html / header1.phtml并进行您需要进行的更改。

答案 1 :(得分:0)

你做得太多了。

如果只需切换初始块实例的模板,以下部分就足够了:

<action method="setTemplate" block="header"><tpl>page/html/header1.phtml</tpl></action>

我说“部分足够”,因为这个指令显然需要在某些情况下执行。环境(例如特定视图或视图类型)映射到不同的布局更新句柄。例如,如果要为登录的客户使用不同的标头模板,则完整的布局XML将如下所示:

<?xml version="1.0"?>
<layout>
    <customer_logged_in>
         <action method="setTemplate" block="header"><tpl>page/html/header1.phtml</tpl></action>
    </customer_logged_in>
</layout>

根据指定的模板路径,您应该创建文件 app / design / frontend / base / default / page / html / header1.phtml ,或者至少在自定义主题下创建此文件

此外,您应该在自定义主题的布局文件夹中创建local.xml文件。