Où sont mise à jour les variables booléennes $strAttr['defer'] et $strAttr['async'] ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Où sont mise à jour les variables booléennes $strAttr['defer'] et $strAttr['async'] ?

    Bonjour,

    Dans un souci d'optimisation de la vitesse de chargement des pages de mon site, je cherche à rendre opérationnelles, les variables booléennes $strAttr['defer'] et $strAttr['async'] qui sont utilisées dans le fichier : libraries/joomla/document/html/renderer/head.php

    S'il y a un tri pour les affubler de defer, async ou rien, il doit y avoir un endroit où on peut mettre à jour ces variables !

    Qui pourrait me l'indiquer ?

    J'ai cherché dans l'espace de gestion des plugins de l'admin mais seuls quelques uns proposent comme pour celui de Fb, twitter etc. mais pas pour les autres

    Est-ce une option qui doit être gérée par celui qui fait le plugin/module ?

    J'ai essayé de les mettre à async en modifiant le script de ce même fichier head mais on est obligé de le faire pour tous et cela pose des tracas pour certains plugins qui ne finissent pas de se charger

    J'ai essayé de tester sur la variable $strSrc pour ne mettre que ceux que je voulais mais visiblement le nom du fichier n'est pas tel que le pensais...

    je voudrais au moins le faire avec les fichiers mootools-core.js et mootools-more.js mais je ne sais pas où ils sont pris en compte...

    Merci pour vos lumières

  • #2
    Re : Où sont mise à jour les variables booléennes $strAttr['defer'] et $strAttr['asyn

    J'ai donc trouvé la parade, j'utilisais le nom seul pour faire mon test alors qu'il faut inclure le chemin ce qui semble logique puisqu'il y est dedans

    Donc pour ceux que cela intéresse :
    Dans le fichier : /libraries/joomla/document/html/renderer/head.php

    vers la ligne 175 après :
    // Generate script file links
    foreach ($document->_scripts as $strSrc => $strAttr)
    {
    $buffer .= $tab . '<script src="' . $strSrc . '"';
    $defaultMimes = array(
    'text/javascript', 'application/javascript', 'text/x-javascript', 'application/x-javascript'
    );
    On rajoute le test qui, ici n'est fait que sur les deux gros JS mais il possible de le faire pour les autres, comme de faire le test sur la variable qui concerne defer...
    On rajoute ainsi juste dessous :

    if ($strSrc == "/media/system/js/mootools-core.js"){
    $strAttr['async'] = true;
    }elseif ($strSrc == "/media/system/js/mootools-more.js"){
    $strAttr['async'] = true;
    }else{
    $strAttr['async'] = false;
    }
    Le test est concluant et nous avons bien notre script mis à jour :
    <script src="/templates/protostar/js/template.js" type="text/javascript"></script>
    <script src="/media/system/js/mootools-core.js" type="text/javascript" async="async"></script>
    <script src="/media/system/js/core.js" type="text/javascript"></script>
    <script src="/media/system/js/mootools-more.js" type="text/javascript" async="async"></script>
    Le tout c'est de faire attention aux scripts qui dépendent des autres pour ne pas les exécuter avant...

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X