2012-05-23 76 views
0

我想將一些外部JavaScript文件添加到magento cms,但不知何故,它們似乎無法工作,雖然它們在頭部顯示正常。將外部javascript文件添加到magento頭文件

我添加的代碼以下行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> 

它們顯示在頁面呈現頭部,但似乎並沒有做的工作,他們都應該做這件事。

上午,我做錯了什麼。因爲這些文件在簡單的html頁面中運行良好。我是否需要將文件添加到別的地方。抱歉打擾,但我是一個magento新手。

+1

也許'jquery.min.js'需要加載_before_其他兩個? –

+0

@JürgenThelen,絕對正確 –

回答

2

可能有2個問題與此

1)正試圖在包含在第一線,那裏的你包括jQuery庫後
2)你的jQuery jQuery_1205141001.js執行的jQuery與原型相沖突。爲此,您需要在您PHTML執行任何jQuery代碼之前添加這一點,包括jQuery庫後

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

,然後使用$ j.function而不是$。功能的jQuery 例如

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

    if (event.keyCode == 37) { 

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

,而不是

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

    if (event.keyCode == 37) { 

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

好的解決方案。然而,我會進一步補充說,將jquery添加到Magento是一個糟糕的決定。它已經使用原型,因此添加第二個JavaScript庫會使代碼變得沒有充分的理由。 –

+0

與原型相比,jQuery擁有更多的可見性和社區支持。還沒有看到人們在獨立項目中使用原型。 – sulabh

+1

我希望Magento確實使用了JQuery--希望他們將來可以像jQuery似乎成爲Web標準一樣。但是,我的觀點仍然是:2個JavaScript庫無論如何都是笨重的,並且會導致衝突問題。你不能從Magento中移除Prototype,所以它似乎是最好的選擇。 –

1

而不是直接編輯head.phtml文件,添加你的JS referecnces你應該把它放在你的主題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> 

同時檢查Firebug的Javascript錯誤。如果有JavaScript錯誤,導致一些JS功能失敗螢火蟲會告訴你這一點。

+0

只是想多一點,你可能需要實際上需要改變你的主題head.phtml來調用getChildHtml()BEFORE getCssJsHtml()以便外部JS(谷歌託管jQuery)在剩下的JS之前被調用。 – sulman

+0

這不起作用。我昨天遇到了這個問題。將它添加到local.xml最後加載js。所以如果你通過任何改變在任何其他模塊中都有jquery引用,將不起作用。 – Ovidiu

+0

是的,但請參閱我上面關於交換getChildHtml()和getCssJsHtml()的評論。 – sulman

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

    </reference> 

在magento root的js文件夾中創建與您的模塊名稱相同的文件夾,並將您的js文件複製到此文件夾中。