向Magento页面添加一些jquery脚本

向Magento页面添加一些jquery脚本,jquery,xml,magento,e-commerce,Jquery,Xml,Magento,E Commerce,这让我发疯。在Magento 1.4.2中,我不知道如何将一些jquery脚本附加到特定页面的标题部分。我通过编辑page.xml向所有页面添加了最新的jquery库,并添加了无冲突的内容 我知道我需要为相关页面的自定义布局更新区域添加一些代码。但是没有任何效果,我尝试了很多代码,当我稍后检查源代码时,没有一个出现在页面的标题中 我在mangeto官方论坛上发布了同样的问题,但八天后没有回复。该论坛对于获得建议来说是可怕的,大多数问题都没有答案:(。你知道我如何通过自定义布局更新来添加到头部吗

这让我发疯。在Magento 1.4.2中,我不知道如何将一些jquery脚本附加到特定页面的标题部分。我通过编辑page.xml向所有页面添加了最新的jquery库,并添加了无冲突的内容

我知道我需要为相关页面的自定义布局更新区域添加一些代码。但是没有任何效果,我尝试了很多代码,当我稍后检查源代码时,没有一个出现在页面的标题中

我在mangeto官方论坛上发布了同样的问题,但八天后没有回复。该论坛对于获得建议来说是可怕的,大多数问题都没有答案:(。你知道我如何通过自定义布局更新来添加到头部吗

$(document).ready(function(){
    $("a").click(function(event){
        alert("Thanks for visiting!");
    });
});

我试着将其包含在脚本标记中,在reference=head标记中。没有任何效果。我把头发拔出来,用谷歌搜索了我能想到的每个单词短语,但没有任何例子说明如何在Magento中将scrip添加到页面头部。请帮帮忙。

如果您添加了jQuery库并打开了
noConflict
模式,那么您应该尝试访问t使用
jQuery
变量而不是
$
变量创建jQuery对象。像这样尝试,看看它是否有效:

jQuery(document).ready(function(){
    jQuery("a").click(function(event){
        alert("Thanks for visiting!");
    });
});

如果这不起作用,您应该在运行脚本之前仔细检查html输出,看看是否包含了jQuery库。这一点非常重要,因为JavaScript在页面上从上到下依次进行处理。

以下是三种不同的方法。我很难将其中一种称为“正确”比另一个好

第一种方法:听起来好像您使用了
page.xml
将基本jQuery库添加到页面中。如果您知道如何这样做,您可以添加如下内容

<action method="addJs"><script>path/to/my/file.js</script></action>
<!-- existing line --> <block type="page/html_head" name="head" as="head"> 
    <!-- new sub-block you're adding --> <block type="core/template" name="stackoverflow" as="stackoverflow" template="page/stackoverflow.phtml"/>
    ...
在主题中找到
page/html/head.phtml
,并将代码直接添加到
page.html

第三种方法:如果您查看上面提到的股票
页面.html
,您将看到这一行

<?php echo $this->getChildHtml() ?>
到page.xml,然后添加
stackoverflow.phtml
文件。添加到head块的任何块都将自动呈现。(此自动呈现不适用于所有布局块,仅适用于调用
getChildHtml
而不使用参数的块)

您的phtml文件不需要位于
页面/
,您可以将其放置在主题的模板文件夹结构中的任何位置。
stackoverflow.phtml
文件将包含您希望添加到头部的javascript

<script type="text/javascript">
    alert("Test");
</script>

警报(“测试”);

扩展Alan的优秀摘要。如果您只想将文件添加到一个特定页面,可以在Layout Update XML字段中使用以下代码段:

<reference name="head">
    <action method="addJs"><script>path/to/my/file.js</script></action>
</reference>

或者,如果您希望它驻留在您的皮肤文件夹中,请使用

<reference name="head">
    <action method="addItem"><type>skin_js</type><name>js/file.js</name><params/></action>
</reference>

根据您使用的包和主题更改base和default

您也可以在任何其他布局/?.xml文件中使用上述代码段,只需将其放置在您要寻址的布局句柄中即可。例如,要将其放置在cms.xml中的所有cms页面中,您将找到

<cms_page>
 ....
</cms_page>

....
并将其更改为

<cms_page>
    ...
    <reference name="head">
        <action method="addJs"><script>path/to/my/file.js</script></action>
    </reference>
</cms_page>

...


您好,谢谢您的回复,但我想您误解了我的问题。我遇到的问题是我无法将代码插入页面的页眉,代码本身没有任何问题。我确实正确地添加了jquery库。一旦我成功地将脚本添加到页眉,我将尝试您的建议:)@baobei Ah-ha!让我们看看。环顾四周后,我发现您可以这样做:
$headBlock=$this->getLayout()->getBlock('head')$headBlock->addJs('somefolder/yay.js')。试试看它是否适合你。顺便说一句,如果您在
document.ready
上运行这些东西,您也可以在页面末尾插入代码(这实际上大大提高了页面加载速度)。它需要是xml代码,当我通过后端的xml更新设计框添加它时。所讨论的页面是单个CMS页面还是像所有产品或所有类别一样的页面类型?同意,尽管我会说“local.xml”。当您说“布局更新XML”时,不清楚您指的是什么系统。您是指添加的任何超出默认值的XML文件,还是您所说的管理员中有特定位置?OP将其称为“相关页面的自定义布局更新区域”,我理解为编辑CMS页面时在设计选项卡上可用的“布局更新XML”字段。在其他领域,如编辑产品或类别,该字段称为“自定义布局更新”。谢谢将链接改为local.xml。谢谢回复,我对更正不太感兴趣,而对可能添加布局更新的不同位置更感兴趣。
<cms_page>
    ...
    <reference name="head">
        <action method="addJs"><script>path/to/my/file.js</script></action>
    </reference>
</cms_page>