Comment désactiver le chargement de
mootools-core.js
core.js
Dans <head>
sans utiliser de composant/plugin tiers?
En utilisant Joomla 3.2, en haut de mon tempate je mets:
$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]);
}
}
Cela empêche ces scripts d'être inclus, ajouter ou supprimer des scripts selon les besoins
Vous pouvez le désactiver dans le modèle
unset(
$this->_scripts['/media/jui/js/mootools-core.js'],
$this->_scripts['/media/jui/js/core.js']);
Cela supprimera les deux fichiers JS de l'en-tête.
Dans Joomla 3.x, vous pouvez appeler JHtml::_('jquery.framework')
dans votre modèle pour charger jQuery sans Mootools. Cela charge jQuery en mode sans conflit par défaut, donc si vous avez besoin du mode normal, ajoutez simplement un deuxième paramètre de false : JHtml::_('jquery.framework', false)
.
J'ai utilisé ceci:
foreach ($doc->_scripts as $script => $value)
{
if (preg_match('/media\/jui/i', $script))
unset($doc->_scripts[$script]);
}
La solution de @ContextSwitch ne fonctionnait pas pour moi car certains scripts étaient chargés après le traitement du modèle. La suppression des fichiers à ce stade n'a donc aucun effet sur ces fichiers.
J'ai donc dû implémenter une solution similaire mais en utilisant un simple plugin lié à l'événement onBeforeCompileHead
. Comme décrit par moi ici .