将外部javascript文件添加到magento标头

将外部javascript文件添加到magento标头,magento,php,Magento,Php,我正在尝试向magento cms添加一些外部javascript文件,但不知何故,它们似乎不起作用,尽管它们在头部显示正常 我正在向head.phtml添加以下代码行 <!--pankaj js edition--> <script src="<?php echo $this->getJsUrl(); ?>jQuery_1205141001.js" type="text/javascript"></script> <script s

我正在尝试向magento cms添加一些外部javascript文件,但不知何故,它们似乎不起作用,尽管它们在头部显示正常

我正在向head.phtml添加以下代码行

<!--pankaj js edition-->

<script src="<?php echo $this->getJsUrl(); ?>jQuery_1205141001.js" type="text/javascript"></script>
<script src="<?php echo $this->getJsUrl(); ?>Common_1205141001.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>


这可能有两个问题

1) 您正试图在jquery_1205141001.js中执行jquery,该jquery包含在第一行中,稍后将包含jquery库
2) 您的jquery与原型冲突。为此,您需要在执行任何jquery代码之前和包含jquery库之后将其添加到phtml中

<script type="text/javascript">
var $j = jQuery.noConflict();
</script>
而不是

$(document.documentElement).keyup(function (event) {

  if (event.keyCode == 37) {

    $('#prev1').click();
  } else if (event.keyCode == 39) {
    $('#next1').click();
  }
});

这可能有两个问题

1) 您正试图在jquery_1205141001.js中执行jquery,该jquery包含在第一行中,稍后将包含jquery库
2) 您的jquery与原型冲突。为此,您需要在执行任何jquery代码之前和包含jquery库之后将其添加到phtml中

<script type="text/javascript">
var $j = jQuery.noConflict();
</script>
而不是

$(document.documentElement).keyup(function (event) {

  if (event.keyCode == 37) {

    $('#prev1').click();
  } else if (event.keyCode == 39) {
    $('#next1').click();
  }
});

与其直接编辑head.phtml文件来添加JS引用,不如将其放入themes local.xml中,如下所示:

<reference name="head">
    <block type="core/text" name="google.cdn.jquery" after="-">
        <action method="setText">
            <text><![CDATA[<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
            <script type="text/javascript">jQuery.noConflict();</script>]]>
            </text>
        </action>
    </block>
    <action method="addItem"><type>skin_js</type><script>js/jQuery_1205141001.js</script></action>
</reference>

jQuery.noConflict();]>
skin_jsjs/jQuery_1205141001.js

还可以使用Firebug检查Javascript错误。如果存在导致某些js功能失败的javascript错误,firebug会告诉您这一点。

与其直接编辑head.phtml文件来添加js引用,不如将其放入themes local.xml中,如下所示:

<reference name="head">
    <block type="core/text" name="google.cdn.jquery" after="-">
        <action method="setText">
            <text><![CDATA[<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
            <script type="text/javascript">jQuery.noConflict();</script>]]>
            </text>
        </action>
    </block>
    <action method="addItem"><type>skin_js</type><script>js/jQuery_1205141001.js</script></action>
</reference>
<reference name="head">
      <action method="addJs"><script>[MODULE]/your.js</script></action>

    </reference>

jQuery.noConflict();]>
skin_jsjs/jQuery_1205141001.js
还可以使用Firebug检查Javascript错误。如果存在导致某些js功能失败的javascript错误,firebug会告诉您这一点。


<reference name="head">
      <action method="addJs"><script>[MODULE]/your.js</script></action>

    </reference>
[MODULE]/your.js
在magento根目录的js文件夹中创建与您的模块名相同的文件夹,并将您的js文件复制到此文件夹中。


[MODULE]/your.js

在magento根目录的js文件夹中创建与您的模块名称相同的文件夹,并将您的js文件复制到此文件夹中。

可能需要在其他两个之前加载
jquery.min.js
,绝对正确可能需要在其他两个之前加载
jquery.min.js
,绝对正确再多想想,您可能需要在getCssJsHtml()之前修改themes head.phtml来调用getChildHtml(),以便在剩余的JS之前调用外部JS(Google托管的jQuery)。这不起作用。我昨天有那个问题。将其添加到local.xml最后加载js。因此,如果您通过任何更改在任何其他模块中使用jquery引用,都不会起作用。虽然如此,但请参见我上面关于交换getChildHtml()和getCssJsHtml()的评论。再考虑一下,您可能需要在getCssJsHtml()之前更改themes head.phtml以调用getChildHtml(),以便使用外部JS(Google托管的jquery)在剩下的JS之前调用。这不起作用。我昨天有那个问题。将其添加到local.xml最后加载js。因此,如果您通过任何更改在任何其他模块中使用jquery引用,则将不起作用。为True,但请参阅我上面关于交换getChildHtml()和getCssJsHtml()的评论。这是一个很好的解决方案。然而,我要进一步补充的是,将jquery添加到Magento是一个错误的决定。它已经使用了prototype,因此添加第二个javascript库会毫无理由地使代码膨胀。jQuery比prototype具有更多的可见性和社区支持。在独立的项目中,还没有见过很多人使用prototype。我希望Magento真的使用JQuery——希望他们将来会使用,因为JQuery似乎正在成为web标准。然而,我的观点仍然是:2个javascript库无缘无故地庞大,并且会导致冲突问题。您无法从Magento中删除原型,因此似乎最好的选择是使用它。很好的解决方案。然而,我要进一步补充的是,将jquery添加到Magento是一个错误的决定。它已经使用了prototype,因此添加第二个javascript库会毫无理由地使代码膨胀。jQuery比prototype具有更多的可见性和社区支持。在独立的项目中,还没有见过很多人使用prototype。我希望Magento真的使用JQuery——希望他们将来会使用,因为JQuery似乎正在成为web标准。然而,我的观点仍然是:2个javascript库无缘无故地庞大,并且会导致冲突问题。您无法从Magento中删除原型,因此最好的选择似乎是使用它。