Magento - 如何在逐页的基础上包含javascript文件

时间:2010-10-14 21:44:12

标签: javascript xml layout module magento

在magento中,我知道如何在页面布局文件中包含js文件。但是,如果我在自定义模块的某些页面上包含特定的javascript文件呢? 例如,我正在编写一个可以使用产品视图和列表页面的自定义模块。我希望有一些布局更新,我可以使用我的模块,只包括我的javascript文件在产品视图和列表页面。

2 个答案:

答案 0 :(得分:18)

您需要在模块配置文件中添加布局更新部分。根据你所说的你在布局文件中需要这样的东西:

<?xml version="1.0"?>

<layout version="0.1.0">
    <catalog_product_view>
         <reference name="head">
                <action method="addJs"><script>yourscript.js</script></action>
            </reference>
    </catalog_product_view>

    <catalog_category_view>
           <reference name="head">
                <action method="addJs"><script>yourscript.js</script></action>
            </reference>
    </catalog_category_view>

</layout>

然后在您的模块配置文件中,您将需要以下内容:

<frontend>
    <layout>
        <updates>
           <yourmodule>
               <file>yourlayout.xml</file>
            </yourmodule>
         </updates>
     </layout>
 </frontend>

这假设yourscript.js位于js文件夹的根目录中。显然,你不想把它放在这里,所以做Jonathan所建议和使用的:

 <action method="addItem"><type>skin_js</type><name>path/file.js</name></action>

并将你的js放在你的主题皮肤文件夹中。

祝你好运!

答案 1 :(得分:5)

您需要做的是找到要包含JS的页面的布局句柄,并将它们添加到自定义模块的布局XML中。例如,要在产品视图中包含JS,您可以将以下节点添加到布局中:

<catalog_product_view>
  <reference name="head">
    <action method="addJs"><script>path/file.js</script></action>  **OR**
    <action method="addItem"><type>skin_js</type><name>path/file.js</name></action>
  </reference>

根据JS文件的位置选择任一选项。查看默认的catalog.xml或review.xml以获取示例。

要计算布局句柄(例如catalog_product_view),您可以在他的博客中使用Alan Storm的优秀(和免费)LayoutViewer模块。

HTH, JD