禁用头部加载脚本


Answers:


18

我使用的是Joomla 3.2,在我的榜首位置:

$doc = JFactory::getDocument();

$dontInclude = array(
'/media/jui/js/jquery.js',
'/media/jui/js/jquery.min.js',
'/media/jui/js/jquery-noconflict.js',
'/media/jui/js/jquery-migrate.js',
'/media/jui/js/jquery-migrate.min.js',
'/media/jui/js/bootstrap.js',
'/media/system/js/core-uncompressed.js',
'/media/system/js/tabs-state.js',
'/media/system/js/core.js',
'/media/system/js/mootools-core.js',
'/media/system/js/mootools-core-uncompressed.js',
);

foreach($doc->_scripts as $key => $script){
    if(in_array($key, $dontInclude)){
        unset($doc->_scripts[$key]);
    }
}

这样可以防止这些脚本被包含,根据需要添加或删除脚本


3
这在我的上一个项目(joomla 3.3.6)中失败了。我JURI::root(true).在脚本路径之前添加了它,并且起作用了。
web-tiki 2014年


4

在Joomla 3.x中,您可以调用JHtml::_('jquery.framework')模板来加载没有Mootools的jQuery。这种负荷的jQuery默认情况下没有冲突模式,所以如果你需要正常模式下,只需添加的第二个参数错误JHtml::_('jquery.framework', false)

http://docs.joomla.org/J3.2:Javascript_Frameworks


2

我用了这个:

foreach ($doc->_scripts as $script => $value)
{
    if (preg_match('/media\/jui/i', $script))
      unset($doc->_scripts[$script]);
}

2
由于您的needle字符串不是可变的,唯一的目的是进行不区分大小写的匹配,因此最好使用stripos() ...if (stripos($script, 'media/jui') !== false)
mickmackusa

0

@ContextSwitch的解决方案对我不起作用,原因是在处理模板后加载了一些脚本,因此在该阶段取消设置文件对这些文件没有影响。

因此,我必须实现类似的解决方案,但要使用绑定到onBeforeCompileHead事件的简单插件。正如我在这里所描述的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.