magento使用local.xml来修改布局

这篇文章是写给那些还不知道这种用法的人,如果你已经在使用这种方式,恭喜你,如果还没有,你确实应该使用它。

思路很简单:只使用local.xml这一个文件,把它放到你所使用模板的layout目录下,重写或更新该模板的所有布局用XML。

优点:

1、只用一个文件来管理重写或更新
2、不需要再有任何其他的xml文件在你的模板里,因为它依赖于base目录下的xml文件
3、所有修改都很明显的只在local.xml一个文件里面,不需要去从很多xml文件里查看到底做了哪些修改

缺点:

1、我想不到缺点,除非让代码的修改变得更透明和明显不是你想要的

如何使用local.xml文件?所有你需要做的只是在你所使用模板的layout目录下新建它并写入你自己的xml代码。当Magento读取xml文件时会率先查找你在local.xml里面所做的修改,并应用它们,然后才会去读取base目录下的xml文件(如果在后台把它设为默认xml目录的话)。

如何设置它

1、在你所使用模板的layout目录下新建文件local.xml(app/frontend/default/your-theme/layout)

2、添加基本XML标记结构

1
2
<?xml version="1.0"?>
<layout version="0.1.0"></layout>

3、添加xml代码来重写布局结构。看下面的例子:

示例:

1、移除或添加javascript

1
2
3
4
5
6
<!-- Let’s remove sleight js for IE7-->
<reference name="head">
<action method="removeItem"><type>js</type><name>lib/ds-sleight.js</name><params /><if>lt IE 7</if></action>
</reference>
<!-- Instead, add belated.js from your theme’s /js folder -->
<action method="addItem"><type>skin_js</type><name>js/belated.js</name><params /><if>lt IE 7</if></action>

2、添加代码来只对分类页做修改。设置使用的模板布局文件并添加一些javascript

1
2
3
4
5
6
7
8
9
10
11
<catalog_product_view translate="label">
<reference name="root">
<action method="setTemplate">
<template>page/1column.phtml</template>
</action>
</reference>
<reference name="head">
<action method="addItem"><type>skin_js</type><name>js/stereotabs.js</name></action>
<action method="addItem"><type>skin_js</type><name>js/shadowbox/shadowbox.js</name></action>
</reference>
</catalog_product_view>

3、用“remove”来从布局里移除一些特殊的block(products compare, products viewed and related products)

1
2
3
4
5
6
7
<default>
<reference name="right">
<remove name="catalog.compare.sidebar" />
<remove name="left.reports.product.viewed" />
<remove name="catalog.product.related" />
</reference>
</default>

4、用“unsetChild”来从布局里移除一些特殊的block(products compare, products viewed and related products)

1
2
3
4
5
6
7
<default>
<reference name="left">
<!-- Removed the Newsletter from the left sidebar -->
<action method="unsetChild"><name>left.newsletter</name></action>
<action method="unsetChild"><name>tags_popular</name></action>
</reference>
</default>

当然还有其他许多用途,我只是使用了添加,删除和更新,来说明您的开发流程如何使用local.xml。

对还没有使用过这种方式的人来说,希望这能帮你在下一个项目中开个好头,也非常欢迎针对这个来一起讨论。

原文地址:http://blog.csdn.net/shuishui8310/article/details/5928469