如何添加JS编程在Magento?(How to add JS programmatically i

2019-07-30 23:29发布

我需要有条件和程序添加一个JS文件块文件中。 我试着用这些代码:

if (Mage::getStoreConfig('mymodule/settings/enable')) {
$this->getLayout()->getBlock('head')->addJs('path-to-file/file1.js');
} else {
$this->getLayout()->getBlock('head')->addJs('path-to-file/file2.js');
}

然而,无论设置是什么,没有这个文件被加载。 我甚至想消灭的条件,并明确只加载一个文件,但它仍然无法正常工作。 我做了什么错在这里?

Answer 1:

这里的问题是处理顺序可能之一。 我的猜测是,头块已经被渲染后,你的PHP代码被评估。 当你的代码成功更新头块类的实例,产量已经从实例生成后,它的发生。

更好的解决方法是将添加addJs()在布局XML调用,以便他们会事先渲染处理。 这将是很好,如果有一个ifnotconfig属性,但现在你可以使用一个帮手。

创建与返回基于配置设置脚本路径的方法的辅助类,然后用这个作为返回参数。

<?php 
class My_Module_Helper_Class extends Mage_Core_Helper_Abstract
{
    public function getJsBasedOnConfig()
    {
        if (Mage::getStoreConfigFlag('mymodule/settings/enable')) {
            return 'path-to-file/file1.js';
        }
        else {
            return 'path-to-file/file2.js';
        }
    }
}

然后在布局XML:

<?xml version="1.0"?>
<layout>
    <default>
        <reference name="head">
            <action method="addJs">
                <file helper="classgroup/class/getJsBasedOnConfig" />
                <!-- i.e. Mage::helper('module/helper')->getJsBasedOnConfig() -->
            </action>
        </reference>
    </default>
</layout>


Answer 2:

$this->getLayout()->getBlock('head')->addJs('path');

其正确的代码,搜索,如果你的道路是正确的。



Answer 3:

我知道这是问了很久以前的事,但如果有人在找这个,我会建议你local.xml中使用此:

<layout>
    <default>
        <reference  name="head">
            <action ifconfig="path/to/config" method="addJs">
                <script>pathto/file.js</script>
            </action>
        </reference>
    </default> 
</layout>

当然,这是位于/ JS /文件夹JS文件。 如果你想添加skin_js或skin_css使用适当的方法。

PS。 测试在CE 1.9



文章来源: How to add JS programmatically in Magento?