我是Magento的初学者,我想通过布局xml文件在body部分添加javascript文件。
<reference name='?????'>
<action method="addJs"><script>js/my_javascript_file.js</script></action>
</reference>
参考名称应该是什么? 我尝试了除“head”之外的其他参考文献,但它会产生错误..
我google了很多但没有得到任何解决方案。 是否可以通过布局xml文件将javascript文件添加到body部分? 我不想将Javascript文件添加到html头部 这时我将Javascript文件直接添加到.phtml文件中......
提前致谢..
答案 0 :(得分:0)
在Magento xml中,action method =“method_name”是指引用的块代码中的方法。其他块对象可能没有定义“addJs”方法。
“method_name”指的是与阻止核心代码相对应的代码。例如,在app \ code \ core \ Mage \ Page \ Block \ Html \ head.php:
中public function addJs($name, $params = "")
{
$this->addItem('js', $name, $params);
return $this;
}
因此,要将外部js添加到任何其他块,您必须编辑底层代码(将文件移动到app \ code \ local ...如果您尝试)并添加几种方法以使其正常工作。
正如他们所说,有一种方法可以给猫皮肤(不是你想要的......)。更容易做的是使用代码创建一个.phtml模板文件来创建外部链接。
例如,如果我用这个来制作一个ext_js.phtml:
<?php $_jsExtNames = array('extra1.js' , 'extra2.js'); ?>
<?php foreach($_jsExtNames as $_jsExtName): ?>
<script src="<?php echo $this->getSkinUrl('js/'.$_jsExtName) ?>"></script>
<?php endforeach; ?>
$ _jsExtNames数组是主题skin / js文件夹中外部js脚本的列表。
将其添加到XML中的问题可能会根据您添加它的位置而改变。对于默认区域,如果我将.phtml文件放在page / html文件夹中,这样的东西就会起作用:
<default>
<reference name="footer">
<block type="core/template" name="extra_js" template="page/html/ext_js.phtml" />
</reference>
</default>
单独工作就好了。如果将其放在另一个块中,则需要在该块的模板文件中调用它。
为了说明这个例子,如果我想将我的外部js放在类别视图页面中,我会将它添加到category.xml中,如下所示:
<catalog_category_layered translate="label">
<label>Catalog Category (Anchor)</label>
<reference name="left">
<block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/>
</reference>
<reference name="content">
<block type="catalog/category_view" name="category.products" template="catalog/category/view.phtml">
<!-- Added Line Below -->
<block type="core/template" name="extra_js" template="page/html/ext_js.phtml" />
现在我们必须通过添加这一行来调用块名称,我们希望它在文件目录/ category / view.phtml中添加:
<?php echo $this->getChildHtml('extra_js'); ?>
这应该有用,我在打字的时候正在测试它。