Magento Go - jQuery仅适用于产品详细信息页面

时间:2012-02-28 17:21:53

标签: jquery magento

我在Magento Go网站上记录了一些自定义jQuery到页脚静态块:

(function($) {
alert("lol");
})(jQuery);

这仅适用于产品页面。在网站上的每个其他页面上我都有

jQuery is not defined
[Break On This Error]   

})(jQuery);
来自Firebug的

任何想法如何解决它?

2 个答案:

答案 0 :(得分:1)

您没有在所有页面上正确加载jQuery。这就是为什么你得到'jQuery is not defined'错误。

我对Magento Go并不熟悉 - 因此您需要找出产品页面包含脚本但其他页面不包含的原因。在非托管解决方案中,这将意味着编辑[layout] .xml文件。不确定这对你有帮助。

答案 1 :(得分:0)

我知道这是一个古老的问题,但看到它没有回答,我想我会给出我的解决方案。这很令人沮丧。

为了澄清这个问题,Magento Go有一个它使用的jQuery的基本版本。但是,它不会在每个页面上加载库。就我而言,它只在产品页面上加载。您可以添加自己的版本,并在noConflict()中运行它,方法是将代码添加到设计配置中的标题部分。但是,如果您只想在需要时加载jquery,只在Magento Go尚未加载它的页面上,以下是您的操作方法:

创建一个静态块,并输入以下代码:

  

最初发现的代码   http://forum.jquery.com/topic/loading-jquery-if-undefined并修改   为了我的需要

<script type="text/javascript">// <![CDATA[
/******** Load jQuery if not present *********/
if (typeof jQuery === "undefined") {
    var script_tag = document.createElement('script');
    script_tag.setAttribute("type","text/javascript");
    script_tag.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js")
    script_tag.onload = customJQ; 
    script_tag.onreadystatechange = function () { //Same thing but for IE
        if (this.readyState == 'complete' || this.readyState == 'loaded') customJQ();
    } //onreadystatechange.function
    document.getElementsByTagName("head")[0].appendChild(script_tag);
    } else {
        customJQ();
} //if.jQuery

function customJQ() {
    jQuery.noConflict();
    jQuery(document).ready(function($) {
        ... your query here ... 
    });
}
// ]]></script>

然后创建一个前端应用程序,在所有页面上加载此块,并将其放在“页面底部”块参考中。我把它放在底部是为了让Magento Go有机会加载脚本,这可能没有必要。

如果已加载jquery,它将只运行您的脚本。如果没有加载,则加载jquery并在加载完成后执行脚本。