2011-06-29 30 views
3

我需要优化我的布局xml和摆脱重复的帮助。 在我的模块的一些页面中,我包含了js文件,并且在所有这些文件中都包含了css。 这里是我的模块布局XML的内容:将JS和CSS包含在magento布局中的选定页面

<layout version="0.1.0"> 
<catalog_product_view> 
    <reference name="head"> 
     <!-- jQuery(compatibility mode) and jQuery UI --> 
     <action method="addJs"><script>jquery/jquery-1.6.1.js</script></action> 
     <action method="addJs"><script>jquery/jquery-ui-1.8.13.js</script></action> 
     <action method="addCss"><script>css/ui_themes.1.8.13/smoothness/jquery-ui.css</script></action> 
     <!-- Other Libraries --> 
     <action method="addJs"><script>myreviews/quickpager.jquery.js</script></action> 
     <!-- Custom Libraries --> 
     <action method="addJs"><script>myreviews/functions.js</script></action> 
     <action method="addJs"><script>myreviews/popup.js</script></action> 
     <action method="addCss"><script>css/myreviews.css</script></action> 
    </reference> 
    <reference name="content"> 
     <block type="myreviews/view" name="myreviews.view" template="myreviews/view.phtml" /> 
    </reference> 
</catalog_product_view> 
<myreviews_form_additional> 
    <reference name="head"> 
     <!-- jQuery(compatibility mode) and jQuery UI --> 
     <action method="addJs"><script>jquery/jquery-1.6.1.js</script></action> 
     <action method="addJs"><script>jquery/jquery-ui-1.8.13.js</script></action> 
     <!-- Custom Libraries --> 
     <action method="addCss"><script>css/myreviews.css</script></action> 
    </reference> 
    <reference name="content"> 
     <block type="myreviews/form" name="myreviews.form_additional" template="myreviews/form_additional.phtml" /> 
    </reference> 
</myreviews_form_additional> 
<myreviews_form_confirm> 
    <reference name="head"> 
     <action method="addCss"><script>css/myreviews.css</script></action> 
    </reference> 
    <reference name="content"> 
     <block type="myreviews/form" name="myreviews.form_confirm" template="myreviews/form_confirm.phtml" /> 
    </reference> 
</myreviews_form_confirm> 

一切正常,但有没有办法不重复的头参考同一块块? 也许有一种方法来编写所有js和css包含是单独的句柄,并使其在我的页面上执行?

谢谢。

回答

6

是的,手柄是要走的路。举个例子:

定义这个地方在布局文件:

... 
<myreviews_form_base translate="label"> 
    <label>Base layout handle for MyReviews</label> 
    <reference name="head"> 
     <action method="addJs"><script>jquery/jquery-1.6.1.js</script></action> 
     <action method="addJs"><script>jquery/jquery-ui-1.8.13.js</script></action> 
     <action method="addCss"><script>css/myreviews.css</script></action> 
    </reference> 
</myreviews_form_base> 

然后你就可以在适当的地方使用该句柄:

... 
<catalog_product_view> 
    <update handle="myreviews_form_base"/> 
    ...other stuff... 
</catalog_product_view> 

这将适用于所有包含在myreviews_form_base手柄的操作到catalog_product_view句柄。

+0

工作就像一个魅力!谢谢。 – grisevg