Respuestas:
Estoy usando Joomla 3.2, en la parte superior de mi plantilla pongo:
$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]);
}
}
Esto evita que se incluyan esos scripts, agregue o elimine scripts según sea necesario
JURI::root(true).
antes de las rutas de script y funcionó.
Puedes desarmarlo en la plantilla
unset(
$this->_scripts['/media/jui/js/mootools-core.js'],
$this->_scripts['/media/jui/js/core.js']);
Esto eliminará los dos archivos JS del encabezado.
En Joomla 3.x, puede llamar JHtml::_('jquery.framework')
a su plantilla para cargar jQuery sin Mootools. Esto carga jQuery en ningún modo el conflicto por defecto así que si necesitas modo normal, sólo tiene que añadir un segundo parámetro de falsa : JHtml::_('jquery.framework', false)
.
He usado esto:
foreach ($doc->_scripts as $script => $value)
{
if (preg_match('/media\/jui/i', $script))
unset($doc->_scripts[$script]);
}
needle
cadena no es variable y la única intención es hacer una coincidencia entre mayúsculas y minúsculas, entonces sería una mejor práctica usar stripos () ...if (stripos($script, 'media/jui') !== false)
La solución de @ContextSwitch no funcionó para mí debido a que algunos scripts se estaban cargando después de que se procesó la plantilla, por lo que la eliminación de los archivos en esa etapa no tuvo ningún efecto en esos archivos.
Así que tuve que implementar una solución similar pero usando un complemento simple vinculado al onBeforeCompileHead
evento. Según lo descrito por mí aquí .