2010-10-14 71 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

相關問題