Ответы:
Я использую 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')
свой шаблон для загрузки jQuery без Mootools. Эта нагрузка 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
событию. Как описано мной здесь .