2010-10-14 94 views
3

在magento中,我知道如何在页面布局文件中包含js文件。尽管如此,我是否仅使用自定义模块在特定页面上包含特定的JavaScript文件。 例如,我正在编写一个自定义模块,它将与产品视图和列表页面一起工作。因此,我希望有一些布局更新,我可以使用我的模块,将包括我的JavaScript文件只在产品视图和列表页面。Magento - 如何在页面的基础上包含JavaScript文件

+0

你能提供你希望他们包含哪些页面的例子吗? – 2010-10-14 21:46:28

+0

嗨,谢谢,是我想包括他们的两个页面是/ catalog/category/view和catalog/product/view页面。 – Jon 2010-10-14 21:48:16

回答

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

+0

这就是我一直在做的,但它不工作。 magento会加载它在当前主题中找到的所有layout.xml文件并处理它们吗?例如,假设我只是将一个布局文件转储到名为mymodule.xml的基本/默认主题中,并包含上面的引用,那么magento会如何处理? – Jon 2010-10-14 21:59:10

+1

如果您想快速浏览主题布局中的某些内容,然后调用文件local.xml,Magento将始终检查最后一个。我发现它对于利用非默认主题中的继承特别有用。 – clockworkgeek 2010-10-14 23:27:53

+0

为您完成了这项工作?请随时接受答案,如果它... – 2010-10-27 23:54:22

17

,您将需要一个布局更新单元添加到您的模块配置文件。根据你说的话,你需要这样的事情在你的布局文件:

<?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> 
在你的模块配置文件

然后,你需要这样的:

这假定yourscript.js坐在js文件夹的根目录下。很显然,你不想把它放在这里,所以做什么乔纳森建议及用途:

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

,并把你的JS在你的主题皮肤文件夹。

祝你好运!

+0

我需要一个路由器才能正常工作吗?一个简单的扩展做这件事似乎并没有在这里工作。我尝试删除默认主题文件夹中的layout.xml文件,并在当前的主题文件夹和magento中不会去寻找它。 javascript文件位于javascript根文件夹中,而不是主题文件夹。 – 2012-05-14 19:47:49

+0

明白了。 JS的错误路径。谢谢! – 2012-05-15 15:13:52

相关问题