2012-07-26 47 views
1

我在我的Magento安裝中使用自定義模塊,它使用佈局XML文件將一些JavaScript文件添加到每個頁面的頭部分。Magento模塊佈局xml訂單

這工作正常,但是這些JavaScript文件需要添加到我已經在page.xml中聲明的那些文件之後,但是看起來XML文件是按字母順序處理的,而不是分層處理!

我已經瀏覽了頁面/ html_head塊,並且似乎沒有本地方式來設置/更改項目包含的順序。不從我的模塊的XML文件中刪除JavaScript文件,並將它們放在page.xml中,有沒有人有任何想法如何我可以確保page.xml javascript被首先添加?

+0

如果您有自己的自定義模塊,則可以覆蓋此塊。例如,添加可選的參數「sort」。接下來將其他塊的變量添加到排序參數列表中,並最終覆蓋方法'addItem'和'getCssJsHtml'。 – diNord 2012-07-26 11:19:20

+0

@diNord - 這確實有用,但是有一種更簡單的佈局方式。 – benmarks 2012-07-26 12:01:18

回答

4

佈局XML文件僅作爲模塊加載順序的效果按字母順序處理,該順序受​​3210的字母順序的限制。

雖然頭塊的缺失排序功能不幸,但有一種解決方法。您可以使模塊依賴於模塊激活文件中的Mage_Page

其他選項是:添加一個core/template塊到head塊,並使用與主題安全鏈接模板您的JS文件或添加core/text塊,並呼籲setText()有明確聯繫到您的JS文件(安全性較低,一般使用對於CDN託管的腳本)。在page/html/head.phtml中有一個空的getChildHtml()調用,它將呈現head的任何子塊。

+0

我想這就是我要做的 - 將核心/模板塊添加到頭部,幷包含指向有問題的JS文件的鏈接。 JS文件安裝在/ js文件夾(而不是皮膚),所以這應該沒問題。我不打算髮布模塊,特別是這個網站的定製版本:) – HughieW 2012-07-26 14:03:14

+0

請注意,如果客戶端使用本地JS請求合併或Fooman_Speedster的合併和縮小,如果您使用這些文件將不會合並模板技術。 – benmarks 2012-07-26 16:33:22