730
技術社區[雲棲]
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。
對還沒有使用過這種方式的人來說,希望這能幫你在下一個項目中開個好頭,也非常歡迎針對這個來一起討論。
感謝您的閱讀!
原文地址:https://inchoo.net/ecommerce/magento/using-local-xml-for-overriding-or-updating-xml-structure/
最後更新:2017-04-02 06:51:27