Php 添加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" /> <

我在magento中有一个扩展,它在头中添加了一个用于加载jQuery的块:

<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>