Désactiver le chargement du script dans la tête

9

Comment désactiver le chargement de

  • mootools-core.js
  • core.js

En <head>sans utiliser un composant / plugin tiers?

web-tiki
la source
Quelle version de Joomla utilisez-vous?
TryHarder
@moomoochoo J'utilise joomla 3.2
web-tiki

Réponses:

18

J'utilise 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, ajoutez ou supprimez des scripts si nécessaire

Changement de contexte
la source
3
Cela a échoué sur mon dernier projet (joomla 3.3.6). J'ai ajouté JURI::root(true).avant les chemins de script et cela a fonctionné.
web-tiki
5

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.

Harald Leithner
la source
4

Dans Joomla 3.x, vous pouvez appeler JHtml::_('jquery.framework')votre modèle pour charger jQuery sans Mootools. Cette charge jQuery en mode sans conflit par défaut si vous avez besoin en mode normal, il suffit d' ajouter un second paramètre de faux : JHtml::_('jquery.framework', false).

http://docs.joomla.org/J3.2:Javascript_Frameworks

flutterderp
la source
2

Je l'ai utilisé:

foreach ($doc->_scripts as $script => $value)
{
    if (preg_match('/media\/jui/i', $script))
      unset($doc->_scripts[$script]);
}
Aerendir
la source
2
Puisque votre needlechaîne n'est pas variable et que la seule intention est de faire une correspondance insensible à la casse, alors il serait préférable d'utiliser stripos () ...if (stripos($script, 'media/jui') !== false)
mickmackusa
0

La solution de @ContextSwitch ne fonctionnait pas pour moi car certains scripts étaient chargés après le traitement du modèle, donc la suppression des fichiers à ce stade n'a eu aucun effet sur ces fichiers.

J'ai donc dû implémenter la solution similaire mais en utilisant un simple plugin lié à l' onBeforeCompileHeadévénement. Comme je l'ai décrit ici .

Mohd Abdul Mujib
la source