如何将脚本和CSS挂钩?

时间:2012-07-25 23:41:27

标签: magento magento-layout-xml

我正在制作的模块是它生成一个javascript片段,所以我不能使用一个动作只是将它挂钩到HTML的部分,因为动作需要我有一个JS文件(纠正我如果我错了)我有什么方法可以将JavaScript代码段放入代码中?我正在考虑使用一个块,但我不确定该块后面应该添加什么,我必须考虑这将适用于所有主题。

3 个答案:

答案 0 :(得分:8)

库存头模板是

template/page/html/head.phtml

在您自己的主题中复制该文件将是获取一些javascript的最简单方法。

虽然更好(从开发人员的角度来看),但此模板包含以下行

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

about链接打印出块的所有子块。因此,将一个子块添加到头块也可以。

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

上述XML使用简单的core/text块将javascript添加到每个Magento页面。来自local.xml的作品应该在别处起作用。我确信应该考虑更好的方法(模板块,例如)

答案 1 :(得分:1)

Alan Storm的解决方案有效,但您可能希望将脚本或html数据包含在模板文件中,以使其与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>

答案 2 :(得分:-1)

好吧这是一个令人尴尬的黑客但是因为Alan Storm指出这不会在adminhtml中工作所以,本着努力将我的代码/文件保持在最低限度的精神,我已经破解了magento这对我有用洛尔

$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="');