How can I hook on scripts and CSS into <head>?

跟風遠走 提交于 2019-11-30 09:57:26

The stock head template is

template/page/html/head.phtml

Copying that file in your own theme would be the simplest way to get some javascript in the head.

Better though (from a developer point of view), this template includes the following line

<?php echo $this->getChildHtml() ?>

The about link prints out all the child blocks of a block. So, adding a child block to the head block would also work.

<layouts>
    <default> <!-- does this to all pages — use specific layout handles to target a page -->
        <reference name="head"> <!-- get a reference to the existing head block -->
            <block type="core/text" name="simple_example_javascript_block"> <!-- append a simple text block, probably better to use a new template block -->
                <action method="setText"> <!-- set our new block's text -->
                    <text><![CDATA[
                    <script type="text/javascript">
                        alert("foo");
                    </script>
                    //]]></text>
                </action>
            </block>
        </reference>
    </default>
</layouts>

The above XML uses a simple core/text block to add javascript to every Magento page. Works from local.xml, should work elsewhere. I'm sure better ways to do this should spring to mind (template block, for example)

Alan Storm's solution works but you might want to include your script or html data in a template file to keep it separate from the XML.

<?xml version="1.0"?>
<layouts>
    <default>
        <reference name="before_head_end">
            <block type="page/html_head" output="toHtml" name="some_name" template="some_name/head.phtml" />
        </reference>
    </default>
</layouts>

Ok this is an embarrassing hack BUT as Alan Storm pointed out this will not work in adminhtml so, in the spirit of trying to keep my code/files to a minimum, I've hacked up magento and this is working for me lol

$layout = Mage::app()->getLayout();
$headBlock = $layout->getBlock('head');

$headBlock->addLinkRel('blank', '" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">jQuery.noConflict();</script>
<link rel="blank" href="');
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!