Php 添加jQuery,并在头部顶部添加一个块
我在magento中有一个扩展,它在头中添加了一个用于加载jQuery的块:Php 添加jQuery,并在头部顶部添加一个块,php,javascript,jquery,html,magento,Php,Javascript,Jquery,Html,Magento,我在magento中有一个扩展,它在头中添加了一个用于加载jQuery的块: <reference name="head"> <block type="page/html" template="csdev/embedjquery/embed_jquery.phtml" output="toHtml" name="csdev_embedjquery" /> <
<reference name="head">
<block type="page/html"
template="csdev/embedjquery/embed_jquery.phtml"
output="toHtml"
name="csdev_embedjquery" />
</reference>
但那太晚了:(
是否有一种解决方案,例如“使用output='toHtml'将此块添加到引用(head)的顶部”
我试过:
before="-"
但它似乎不起作用,因为我写道:
output="toHtml"
我的Magento版本是1.7。您的问题是将其添加为phtml文件,而不是JS文件。请尝试将其添加到page.xml中的默认->根->头(第37至61行):
jquery/jquery.js
然后在/js中创建一个名为jquery的文件夹,并将jquery.js上传到该文件中。在jquery.js文件的末尾,附加noConflict方法调用。这应该可以解决您的问题。您的问题是,您将其添加为phtml文件,而不是js文件。请尝试将其添加到page.xml中,在default->->root->head中(第37至61行附近):
jquery/jquery.js
然后在/js中创建一个名为jquery的文件夹,并将jquery.js上传到该文件中。在jquery.js文件的末尾,附加noConflict方法调用。这应该可以解决您的问题。您可以通过使用
/app/design/frontend/default/yourtheme/layout/local.xml
文件中的以下代码片段来实现这一点。如果我们在我们不需要编辑任何核心文件
<layout version="0.1.0">
<default>
<reference name="root">
<block type="core/text" name="external.cdn.jquery" before="-">
<action method="setText">
<text><![CDATA[<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]></text>
</action>
</block>
</reference>
</default>
</layout>
jQuery.noConflict();]>
如您所见,我们正在从外部CDN加载jQuery。这将加载到所有页面上。但如果您想将其限制到任何特定页面,请使用页面句柄而不是
标记-例如:对于主页
,您可以使用/app/design/frontend/default/yourth>中的以下代码片段来实现这一点eme/layout/local.xml
文件。如果使用此布局覆盖,则不需要编辑任何核心文件
<layout version="0.1.0">
<default>
<reference name="root">
<block type="core/text" name="external.cdn.jquery" before="-">
<action method="setText">
<text><![CDATA[<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]></text>
</action>
</block>
</reference>
</default>
</layout>
jQuery.noConflict();]>
如您所见,我们正在从外部CDN加载jQuery。这将加载到所有页面上。但如果您想将其限制到任何特定页面,请使用页面句柄而不是
标记-例如:对于主页
,感谢您的回复!但随后我将更改一个magento系统文件。也不会执行此操作来自“jQuery.noConflict()”方法。因此它将与原型冲突。谢谢回复!但随后我将更改一个magento系统文件。此外,“jQuery.noConflict()”方法将不会执行。因此它将与原型冲突。嘿,似乎这就是我要寻找的!:)我将尝试它,然后告诉你它是否有效!:)嗯,那不行。Magento不会给出块文本,根phtml中需要有一个超过$this->getChildHtml(“…”)的输出:(如果不更改phtml文件,可能没有解决方案。没有理由认为它不起作用,因为我在我的许多网站上都使用了这段代码。如果您错过了这段代码,当然有一些好文章是有原因的。在您发布的网站上,只会编辑“local.xml”。此外,对“header”的引用也会有所更改将在核心javascripts之后写入。但我需要它位于标题的“顶部”。然后我还需要写入“output='toHtml',否则块将不会显示。嘿,似乎这就是我要找的!:)我会尝试一下,然后告诉你它是否有效!:)嗯,那不起作用。Magento不会给出块文本,根phtml中需要有一个超过$this->getChildHtml(“…”)的输出:(如果不更改phtml文件,可能没有解决方案。没有理由认为它不起作用,因为我在我的许多网站上都使用了这段代码。如果您错过了这段代码,当然有一些好文章是有原因的。在您发布的网站上,只会编辑“local.xml”。此外,对“header”的引用也会有所更改将在核心javascripts之后写入。但我需要它位于标题的“顶部”。然后我还需要写入“output='toHtml',否则块将不会显示。
<action method="addJs"><script>jquery/jquery.js</script></action>
<layout version="0.1.0">
<default>
<reference name="root">
<block type="core/text" name="external.cdn.jquery" before="-">
<action method="setText">
<text><![CDATA[<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]></text>
</action>
</block>
</reference>
</default>
</layout>