xml - Magento 模块布局 xml 加载顺序

标签 xml magento layout module magento-layout-xml

我有一个自定义扩展,它通过布局 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/

相关文章:

xml - 如何转换基本 XML 架构以适应不同用途?

mysql - Magento 异常错误 : SQLSTATE[42S22]: Column not found

Magento 获取类别的可过滤属性,无论事件过滤器如何

php - Magento 跳过结帐页面上的送货方式

javascript - JS获取指定类型的XML节点

python - 属性未使用 lxml python 添加到 xml 文档

c# - 反序列化 xmlarray 的 xml 属性

安卓工作室 : Error parsing XML & URI is not registered

Java Swing JPanel 大小不起作用

android - 定位确定/取消按钮,使它们模仿对话框中的布局