微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用local.xml在Magento 1.5中设置默认布局?

所以我已经完成了一些我想要使用的布局,并且我认为在local.xml文件中设置它会为每个页面修复此问题.像这样
<default>
<reference name="root">
    <action method="setTemplate">
      <template>page/mytheme.phtml</template>
    </action>
</reference>
</default>

然而,这没有做任何事情.相反,如果我去

...<customer_account_forgotpassword>
  <reference name="root">
    <action method="setTemplate"><template>page/mytheme.phtml</template></action>
  </reference>
</customer_account_forgotpassword>  

<customer_account_confirmation>
  <reference name="root">
    <action method="setTemplate"><template>page/mytheme.phtml</template></action>
  </reference>
</customer_account_confirmation>...

对于每个特定的地方,它都会在这些特定的页面上被更改.我在想错还是这是唯一的方法呢?

您(可能)遇到的问题是稍后会出现问题并再次为根块设置模板,从而覆盖您的更改.

更新版本的Magento(1.4somethingish)介绍了一种防止这种情况发生的方法.如果你查看page.xml,你会看到这样的句柄

<page_one_column translate="label">
    <label>All One-Column Layout Pages</label>
    <reference name="root">
        <action method="setTemplate"><template>page/1column.phtml</template></action>
        <!-- Mark root page block that template is applied -->
        <action method="setIsHandle"><applied>1</applied></action>
    </reference>
</page_one_column>

如果page_one_column句柄应用于您的请求,或者您手动应用它

<update handle="page_one_column" />

Magento将更改模板并在块上调用setIsHandle方法.

<action method="setIsHandle"><applied>1</applied></action>

Magento中的代码将查找IsHandle属性,如果是真的,将忽略对setTemplate的进一步调用. (这有点过分简化了事情,但或多或​​少都是真的)

尝试类似的东西

<default>
    <reference name="root">
        <action method="setTemplate">
          <template>page/mytheme.phtml</template>
        </action>
        <action method="setIsHandle">
            <applied>1</applied>
        </action>       
    </reference>
</default>

看看是否有帮助.

请记住,这是一个灰色地带,不清楚第三方开发商是否应该采取行动.此外,更改所有页面的模板可能会对期望位于特定模板中的部分网站产生不希望的影响.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。