rin*_*rce 5 xml layout module magento magento-layout-xml
我有一个自定义扩展,包括jQuery到布局XML,如下所示:
<reference name="head">
<action method="addJs"><script>jquery/jquery-1.8.1.min.js</script></action>
</reference>
Run Code Online (Sandbox Code Playgroud)
使用jQuery的其他扩展需要在我的模块之后加载,以便jQuery保持在最顶层.
默认情况下,Magento按字母顺序加载所有内容.有没有办法为扩展指定排序顺序?
一种方法是page.xml
在我的主题中覆盖并手动将jQuery包含在头部中,或者我可以将每个自定义模块设置为依赖于我想要的模块,例如:
<depends>
<Package_JQueryLib />
</depends>
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?
编辑
我在想我也可以覆盖Mage_Page_Block_Html_Head
和修改addItem()
方法,以包括排序或预先添加文件到头部.
ben*_*rks 15
该<depends />
节点是一个有效的方法-它的目的是在发生碰撞模块的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>
Run Code Online (Sandbox Code Playgroud)