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?


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


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.


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


2

Je l'ai utilisé:

foreach ($doc->_scripts as $script => $value)
{
    if (preg_match('/media\/jui/i', $script))
      unset($doc->_scripts[$script]);
}

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 .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.