Respostas:
Estou usando o Joomla 3.2, no topo do meu tempate eu coloquei:
$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]);
}
}
Isso impede que esses scripts sejam incluídos, adicione ou remova scripts conforme necessário
JURI::root(true).
antes dos caminhos do script e funcionou.
Você pode desmarcá-lo no modelo
unset(
$this->_scripts['/media/jui/js/mootools-core.js'],
$this->_scripts['/media/jui/js/core.js']);
Isso removerá os dois arquivos JS do cabeçalho.
No Joomla 3.x, você pode chamar JHtml::_('jquery.framework')
seu modelo para carregar o jQuery sem o Mootools. Isso carrega jQuery em modo sem conflito por padrão, então se você precisar de modo normal, basta adicionar um segundo parâmetro de falsa : JHtml::_('jquery.framework', false)
.
Eu usei isso:
foreach ($doc->_scripts as $script => $value)
{
if (preg_match('/media\/jui/i', $script))
unset($doc->_scripts[$script]);
}
needle
string não é variável e a única intenção é fazer uma correspondência que não diferencia maiúsculas de minúsculas, seria melhor usar stripos () ...if (stripos($script, 'media/jui') !== false)
A solução da @ContextSwitch não estava funcionando para mim devido a alguns scripts serem carregados após o processamento do modelo, portanto, a desabilitação dos arquivos nesse estágio não afetava esses arquivos.
Então, eu tive que implementar a solução semelhante, mas usando um plug-in simples vinculado ao onBeforeCompileHead
evento. Como descrito por mim aqui .