magento -- 使用local.xml来修改布局

在过去的3年,我们致力于Magneto,并按“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标记结构

 

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

 

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

 

示例:

1、移除或添加javascript 

<!-- 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

<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)

<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)

<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://inchoo.net/ecommerce/magento/using-local-xml-for-overriding-or-updating-xml-structure/

 

你可能感兴趣的:(xml,layout,action,reference,themes,Magento)