Answers:
我使用的是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]);
}
}
这样可以防止这些脚本被包含,根据需要添加或删除脚本
JURI::root(true).
在脚本路径之前添加了它,并且起作用了。
您可以在模板中取消设置
unset(
$this->_scripts['/media/jui/js/mootools-core.js'],
$this->_scripts['/media/jui/js/core.js']);
这将从标题中删除两个JS文件。
在Joomla 3.x中,您可以调用JHtml::_('jquery.framework')
模板来加载没有Mootools的jQuery。这种负荷的jQuery默认情况下没有冲突模式,所以如果你需要正常模式下,只需添加的第二个参数错误:JHtml::_('jquery.framework', false)
。
我用了这个:
foreach ($doc->_scripts as $script => $value)
{
if (preg_match('/media\/jui/i', $script))
unset($doc->_scripts[$script]);
}
needle
字符串不是可变的,唯一的目的是进行不区分大小写的匹配,因此最好使用stripos() ...if (stripos($script, 'media/jui') !== false)
@ContextSwitch的解决方案对我不起作用,原因是在处理模板后加载了一些脚本,因此在该阶段取消设置文件对这些文件没有影响。
因此,我必须实现类似的解决方案,但要使用绑定到onBeforeCompileHead
事件的简单插件。正如我在这里所描述的。