我正在制作的模块的事情是它会生成一个 javascript 片段,所以我不能使用一个动作将其挂接到 HTML 部分,因为该动作要求我有一个 JS 文件(如果我是,请纠正我错误的)。我有哪些方法可以将 JavaScript 片段放入标签中?我正在考虑使用一个块,但我不确定应该在之后附加什么块,我必须考虑这将适用于所有主题。
问问题
5062 次
3 回答
8
股票头模板是
template/page/html/head.phtml
在您自己的主题中复制该文件将是获得一些 javascript 的最简单方法。
虽然更好(从开发人员的角度来看),此模板包含以下行
<?php echo $this->getChildHtml() ?>
about 链接打印出块的所有子块。因此,将子块添加到 head 块也可以。
<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
工作,应该在其他地方工作。我肯定会想到更好的方法来做到这一点(例如,模板块)
于 2012-07-26T17:59:09.417 回答
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>
于 2013-03-02T23:06:08.870 回答
-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="');
于 2013-07-10T14:32:28.027 回答