我有一个自定义扩展,它通过布局 XML 包含 jQuery,如下所示:
<reference name="head">
<action method="addJs"><script>jquery/jquery-1.8.1.min.js</script></action>
</reference>
其他使用 jQuery 的扩展需要在我的模块之后加载,以便 jQuery 保持在顶部。
默认情况下,Magento 按字母顺序加载所有内容。有什么方法可以指定扩展的排序顺序吗?
一种方法是在我的主题中覆盖 page.xml
并手动将 jQuery 包含到头部,或者我可以将每个自定义模块设置为取决于我想要放在顶部的模块,例如:
<depends>
<Package_JQueryLib />
</depends>
还有其他建议吗?
编辑
我想我也可以覆盖 Mage_Page_Block_Html_Head
并修改 addItem()
方法以包括排序或将文件添加到头部。
最佳答案
<depends />
node 是一种有效的方法 - 它旨在提供对冲突模块 xpath 值的控制,但它也可用于影响子节点出现的顺序。
另一个选项,重写 page/html_head
类,是一段时间以来一直需要的东西,我想,实际上是由其他人完成的。
另一种尝试方法是使用 <update>
自定义模块布局 XML 中的指令,作为 <update />
中的指令在其他指令之前处理。这意味着 jQuery 将在所有其他文件之前加载。
<?xml version="1.0" encoding="UTF-8"?>
<layout>
<default>
<update handle="add_jquery_first" />
</default>
<add_jquery_first>
<action method="addJs" block="head">
<file>jquery/jquery-1.8.1.min.js</file>
</action>
<!-- or
<reference name="head">
<action method="addJs">
<file>jquery/jquery-1.8.1.min.js</file>
</action>
</reference>
-->
</add_jquery_first>
</layout>
关于xml - Magento 模块布局 xml 加载顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610949/