当多个Magento扩展包含Jquery库时该怎么办

时间:2013-05-03 19:33:21

标签: javascript jquery magento

我阅读了如何通过

正确地将jquery包含到magento的指南
  1. 包括图书馆
  2. 不包含冲突脚本
  3. 转到$ jquery调用并将其更改为Jquery
  4. 一次扩展非常容易。但是,就我而言,我安装了3个不同的扩展,并且所有扩展都希望包含Jquery。当然,我不想复制这个库并调用它3次。首先,我想我可以在<head>标记的第一行手动包含jquery库,并删除3个扩展中的所有jquery包含。但它没有成功,通常只有其中一个有效。如果我允许所有3个扩展包含jquery,那么它们都可以工作。如何只在包含一次libray时才能使商店中的所有jquery扩展工作?

    有人建议我应该在<head>的顶部包含所有依赖jquery的脚本,是吗?但是,问题是我不知道如何使用操作addJsaddItem在Magento中安排脚本。没有<block>之前或之后的参数?

1 个答案:

答案 0 :(得分:3)

如果您想强制使用addJs方法附带的Javascript加载顺序,最简单的方法是使用<params>标记提供名称,例如:

<action method="addJs"> <!-- Loads second -->
    <script>vendor/jquery-1.6.2.min.js</script>
    <params><![CDATA[name="jquery2"]]></params>
</action>

<action method="addJs"> <!-- Loads first -->
    <script>vendor/jquery-1.8.2.min.js</script>
    <params><![CDATA[name="jquery1"]]></params>
</action>

Magento将根据提供的名称按字母顺序升序加载Javascript文件。

但是,在你的情况下,找出为什么扩展和各种jQuery文件彼此不能很好地结合可能会更有成效。

  • 每个扩展都依赖于特定版本的jQuery吗?
  • 他们是否使用不同的noconflict方法(即一个使用直接调用jQuery.noConflict()而另一个使用var $j = jQuery.noConflict()之类的内容)?
  • 他们都使用相同的全局变量名吗?