如何通过magento中的布局xml文件在正文部分(不是标题)中添加Javascript文件

时间:2013-03-30 06:07:17

标签: magento-1.7

我是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文件中......

提前致谢..

1 个答案:

答案 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'); ?>

这应该有用,我在打字的时候正在测试它。