Optimisation appels styles et scripts

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

  • [Astuce] Optimisation appels styles et scripts

    Bonjour
    J'avais ouvert un post ici: http://forum.joomla.fr/showthread.ph...fer-javascript
    Depuis j'ai fais mes migrations et suis arrivé à fusionner et différer l'exécution des scripts que ce soit sur les pages joomla 3 ou virtuemart 3.
    Je refais donc un post au propre dans la section joomla 3, je pense que ca pourra servir à quelques uns.

    J'y ai passé pas mal d'heures, j'ai eu ma dose d'informatique là je fais faire une bonne pause, je suis un agriculteur moi...lol

    Attention ce qui va suivre doit être adapté au cas par cas en fonction des fonctionnalités, plugins, extentions et donc styles/scripts/fonctions utilisés...

    -Fusionner les javascripts implique :

    -D'avoir deux templates, un "normal" et un "fusionné" installé, si il y a un blême on rebascule sur le normal
    -De maintenir le code des librairies dans les scripts maitres, du simple copié collé après les MAJ
    -Après chaque MAJ de faire les modifs qui n'ont pu être faites par override (5mn chrono)
    -D'impérativement tout noter dans un bloc note, en détails, genre "tuto à la neuneu" pour savoir exactement ce que l'on a modifié et où.
    -De se créer un autre bloc note "modifs à faire à chaque MAJ"
    -Faire tourner firebug à fond
    -Beaucoup de café....

    Ce qui va permettre de réaliser ca c'est l'appel avec des conditions php en fonction des "views" (Pour joomla :article,blog,login,reset,remind,registration,etc. ..)(Pour virtuemart:virtuemart,category,productdetails,user ,vendor,cart,vmplg,etc....) ainsi que les ID et les Itemid.
    Ca permet de faire des appels aux petits oignons, de diviser par parfois plus de dix le nombre de requettes http, de diminuer le poids des pages, etc...et se rapprocher d'un site fait main...

    Première partie, le plus facile, la fusion des feuilles de style css et l'optimisation des appels.

    On examine les éléments avec firebug, un par un, de haut en bas pour ne rien oublier et on note tout à la suite. Puis pour éviter la "verbosité" on regroupe le code css par propriétés. On fait des feuilles de style différentes pour chaque page/view/id/itemid où il y a des éléments en plus/différents.
    Bien tester le site à fond pour être sûr de n'avoir rien oublié.

    Une fois que les feuilles de style sont prêtes :

    Dans le index.php on supprime tout appel de feuilles de style et on déclare le fichier logic.php en haut :

    Code PHP:
    //On déclare que le logic.php est demandé à l’accueil

    <?php
    defined
    ('_JEXEC') or die;
    require_once 
    JPATH_THEMES.'/'.$this->template.'/logic.php';
    ?>

    <!DOCTYPE html>

    <html lang="<?php echo $this->language?>" dir="<?php echo $this->direction?>" >
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=3.0, user-scalable=yes">
    <jdoc:include type="head" />

    //IL faut virer tous les appels css

    </head>
    Dans le fichier logic.php (s'en créer un si vous n'en avez pas) on désamorce l'appel de toutes les feuilles de style css natives et on appeles les notres:

    Code PHP:
    <?php
    defined
    ('_JEXEC') or die;

    $app JFactory::getApplication();

    $doc JFactory::getDocument();

    $params $app->getParams();

    $view JRequest::getCmd('view');

    $id JRequest::getVar('id');

    $Itemid JRequest::getVar('Itemid');

    $tpath $this->baseurl.'/templates/'.$this->template;

    $links $this->params->get('links');

    $buttons $this->params->get('buttons');

    $hfonts $this->params->get('hfonts');

    $bfonts $this->params->get('bfonts');

    $background $this->params->get('background');

    $container $this->params->get('container');

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/jquery.fancybox-1.3.4.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/vmpanels.css']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/validationEngine.template.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/validationEngine.jquery.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/facebox.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/media/system/css/modal.css']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/templates/system/css/general.css']);



    $menu $app->getMenu();

    $active $app->getMenu()->getActive();

    $pageclass $params->get('pageclass_sfx');

    $this->setGenerator(null);

    $head $doc->getHeadData();

    unset(
    $head['metaTags']['http-equiv']);

    $doc->setHeadData($head);


    if (
    $view == 'article' && $id == '72') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-accueil.css');

    }

    if ((
    $view == 'article' && $id != '72') || $view == 'orders' || $view == 'remind' || $view == 'reset' || $view == 'login') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-article-or-orders.css');

    }

    if (
    $view == 'virtuemart' || $view == 'cart' || $view == 'vmplg') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-virtuemart-or-cart.css');

    }

    if (
    $view == 'category') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-category.css');

    }

    if (
    $view == 'productdetails') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-productdetails.css');

    }

    if (
    $view == 'user' || $view == 'form') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-user.css');

    }

    if (
    $view == 'vendor') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-vendor.css');

    }


    ?>
    Et voilà.

    Maintenant les scripts..

    -Il y a d'une part les frameworks/librairies, et d'autres part les fonctions qui sont insérées dans le code source via des appels dans les fichiers php de joomla ou virtuemart.
    -Pour qu'une fonction puisse fonctionner il faut que la/les librairies aient été chargées avant...
    -De part ce fait l'utilisation de plugins proposant de merger les scripts et les différer ne peut marcher que dans très peu de cas....

    Joomla, de base, c'est comme une énorme caisse à outils, et si tu fais un chantier de plomberie t'as les outils d'electricien, de macon, etc...c'est sûr il ne peut rien t'arriver...
    L'idée c'est de voyager léger, de ne prendre que les outils dont on a besoin, dans une seule caisse à outils a taille adaptée.

    J'ai placé en bas de page et différé les scripts pour les pages cruciales comme les articles, page d'accueil/categrories/produits virtuemart

    Pour les pages moins importantes comme login/reset/remind/user/cart/vmplg/vendor/etc... je ne me suis pas pris la tête j'ai également fait un script maitre mais je ne l'ai pas mis en bas de page et pas différé, il est inclus dans le head ce qui fait que les fonctions non désactivées sont fonctionnelles. (je ne vois pas trop l'interet de se prendre la tete pour des pages comme ca, un seul script c'est déjà beau, car ca fait faire beaucoup de modifs pour désactiver toutes les fonctions sur ces pages)

    Donc

    Faire tourner firebug à fond

    Dans le logic.php, on désactive un part un les appels, et on verifie sur chaque page ce qui fonctionne/ne fonctionne plus grace à "unset"

    Ca va permettre de savoir/comprendre quelle(s) fonction(s) a besoin de quelle(s) librairie(s) et également de supprimer des librairies inutiles sur telle ou telle page ou sur tout le site, dans mon cas par exemple bootstrap, caption sont inutiles sur toutes les pages et mootools-core et core utile seulement sur trois views.

    Puis on décortique le code source de chaque page, on note minutieusement l'appel des librairies et leur ordre d'appel, pareil pour les fonctions, l'ordre est très important.
    On construit en même temps les scripts maitres.

    Dans mon cas (et uniquement pour mon cas !) :

    ************************************************** *

    Script maitre article id 72 (ma page d'accueil) :

    librairies :

    jquery.min.js
    jquery.noconflict
    script slider
    update cart.js
    template.js

    fonctions :

    slider, keepalive virtuemart, panier, template

    Appel en bas de page avant </body> et en defer dans index.php

    ************************************************** *

    Script maitre article != id 72 (les autres articles) :

    librairies :

    jquery.min.js
    jquery.noconflict
    update cart.js
    template.js

    fonctions :

    keepalive virtuemart, panier, template

    Appel en bas de page avant </body> et en defer dans index.php

    ************************************************** *

    Script maitre "virtuemart" :

    librairies :

    jquery.min.js
    update cart.js
    template.js

    fonctions :

    keepalive virtuemart, panier, template

    Appel en bas de page avant </body> et en defer dans index.php

    ************************************************** *

    Script maitre "productdetails" :

    librairies :

    jquery.min.js
    jquery-migrate.min.js
    jquery-ui.min.js
    jquery.ui.autocomplete.html.js
    jquery.noconflict
    vmsite.js
    dynupdate.js
    vmprices.js
    jquery.fancybox-1.3.4.pack.js
    update cart.js
    template.js

    fonctions :

    keepalive virtuemart, tabcontents, fancybox, dynupdate, js-recalculate, panier, template

    Appel en bas de page avant </body> et en defer dans index.php

    ************************************************** *

    Script maitre category :

    librairies :

    jquery.min.js
    jquery-migrate.min.js
    jquery-ui.min.js
    jquery.ui.autocomplete.html.js
    jquery.noconflict
    vmsite.js
    vmprices.js
    update cart.js
    template.js

    fonctions :

    keepalive virtuemart, orderlist, js-recalculate, panier, template

    Appel en bas de page avant </body> et en defer dans index.php

    ************************************************** *

    Script maitre user :

    librairies :

    jquery.min.js
    jquery-migrate.min.js
    media/system/mootools-core.js
    media/system/core.js
    media/system/punycode.js
    media/system/validate.js
    vmtabs.js
    update cart.js
    template.js

    fonctions :

    template.js/panier/keepalive

    Appel dans le head via logic.php

    ************************************************** *

    Script maitre orders :

    librairies :

    jquery.min.js
    jquery-migrate.min.js
    media/system/mootools-core.js
    media/system/core.js
    media/system/punycode.js
    media/system/validate.js
    jquery-ui.min.js
    jquery.ui.autocomplete.html.js
    jquery.noconflict
    vmsite.js
    vmtabs.js
    update cart.js
    template.js

    fonctions :

    template.js/panier/keepalive

    Appel dans le head via logic.php

    ************************************************** *

    Script maitre cart ou vmplg :

    librairies :

    jquery.min.js
    jquery-migrate.min.js
    media/system/mootools-core.js
    media/system/core.js
    media/system/punycode.js
    media/system/validate.js
    jquery-ui.min.js
    jquery.ui.autocomplete.html.js
    jquery.noconflict
    vmsite.js
    jquery.fancybox-1.3.4.pack.js
    update cart.js
    template.js

    fonctions :

    template.js/panier/keepalive

    Appel dans le head via logic.php

    ************************************************** *

    Script maitre remind ou reset :

    librairies :

    core.js
    jquery.min.js
    jquery-migrate.min.js
    media/system/punycode.js
    media/system/validate.js
    html5fallback.js
    update cart.js
    template.js

    fonctions :

    template.js/panier/keepalive

    Appel dans le head via logic.php

    ************************************************** *

    Script maitre login :

    librairies :

    core.js
    jquery.min.js
    jquery-migrate.min.js
    html5fallback.js
    update cart.js
    template.js

    fonctions :

    template.js/panier/keepalive

    Appel dans le head via logic.php

    ************************************************** *

    Maintenant c'est l'aventure il faut retrouver les fichiers php où sont insérés les scripts des fonctions, ainsi que parfois où sont insérées des librairies si le unset ne fonctionne pas.
    Dans la majorité des cas ce sont des overrides, donc les modifs resteront après MAJ, mais il y a quelques trucs qui doivent se faire en direct. Donc à refaire à chaque MAJ, mais vu que tout est noté ca va vite. Cepandant je suis tombé sur cet article : http://community.joomla.org/blogs/co...-for-html.html donc il y a moyen de bidouiller, me suis pas encore penché dessus.

    Quelques modifs dans mon cas (et uniquement pour mon cas...)

    ************************************************** *********************

    Virer bootstrap :

    Dans librairies/cms/html/bootstrap.php

    Modifier ligne 239 :

    Code PHP:
    //JHtml::_('script', 'jui/bootstrap.min.js', false, true, false, false, $debug);
    if (JPATH_BASE == JPATH_ADMINISTRATOR) {JHtml::_('script''jui/bootstrap.min.js'falsetruefalsefalse$debug);}
    //le template admin utilise bootstrap il faut lui laisser 
    ************************************************** ***********************

    Virer script bootstrap/tooltip :

    Dans librairie/cms/html/bootstrap.php

    Commenter ligne 506

    ************************************************** *****************************

    Virer JCaption code

    Dans : /libraries/cms/html/behavior.php


    Commenter :

    Code PHP:
     //JHtml::_('script', 'system/caption.js', true, true);
         
        // Attach caption to document
        /*JFactory::getDocument()->addScriptDeclaration(
            "jQuery(window).on('load',  function() {
                new JCaption('" . $selector . "');
            });"
        );*/ 
    ************************************************** ************

    Virer keepalive lors du login (pas d'edition front end)


    Dans librairies/cms/html/behavior.php

    Commenter ligne 658 :

    Code PHP:
    //$document->addScriptDeclaration($script); 
    ************************************************** *******************

    productdetails

    on désamorce la fonction fancybox

    Dans template/html/com_virtuemart/views/productsdetails/default_images.php

    Commenter ligne 100 :

    Code PHP:
    //if(VmConfig::get('usefancy',1)){
        //vmJsApi::js( 'fancybox/jquery.fancybox-1.3.4.pack');
        //vmJsApi::css('jquery.fancybox-1.3.4');
        /*$document = JFactory::getDocument ();
        $imageJS = '
        jQuery(document).ready(function() {
            jQuery("a[rel=vm-additional-images]").fancybox({
                "titlePosition"     : "inside",
                "transitionIn"    :    "elastic",
                "transitionOut"    :    "elastic"
            });
            jQuery(".additional-images a.product-image.image-0").removeAttr("rel");
            jQuery(".additional-images img.product-image").click(function() {
                jQuery(".additional-images a.product-image").attr("rel","vm-additional-images" );
                jQuery(this).parent().children("a.product-image").removeAttr("rel");
                var src = jQuery(this).parent().children("a.product-image").attr("href");
                jQuery(".main-image img").attr("src",src);
                jQuery(".main-image img").attr("alt",this.alt );
                jQuery(".main-image a").attr("href",src );
                jQuery(".main-image a").attr("title",this.alt );
                jQuery(".main-image .vm-img-desc").html(this.alt);
            });
        });
        ';;*/

    //}

    //$document->addScriptDeclaration ($imageJS); 
    Puis ajouter la fonction à la fin du script maitre

    ************************************************** ******************
    productdetails

    Virer fonction reminder (vous ne pouvez acheter ce produit que comme multiple de X article)

    Dans templates/montemplate/html/com_virtuemart/productdetails/default_addtocart.php

    Supprimer ligne 78 :

    Code PHP:
    <script type="text/javascript">
            function check(obj) {
             // use the modulus operator '%' to see if there is a remainder
            remainder=obj.value % <?php echo $step?>;
            quantity=obj.value;
             if (remainder  != 0) {
                 alert('<?php echo $alert?>!');
                 obj.value = quantity-remainder;
                 return false;
                 }
             return true;
             }
    </script>
    Puis ajouter la fonction à la fin du script maitre

    ************************************************** *********************
    productdetails


    Virer les quatre fonctions en bas de page :

    Code PHP:
    <script id="updDynamicListeners_js" type="text/javascript">//<![CDATA[ 
    jQuery(document).ready(function() { // GALT: Start listening for dynamic content update.
        // If template is aware of dynamic update and provided a variable let's
        // set-up the event listeners.
        
    if (Virtuemart.container)
            
    Virtuemart.updateDynamicUpdateListeners();

    }); 
    //]]>
    </script>
    <
    script id="jsVars_js" type="text/javascript">//<![CDATA[ 
    vmSiteurl 'http://dev.brundubonsai.fr:8080/' ;
    vmLang '&lang=fr' //]]>
    </script>

    <
    script id="ready.vmprices_js" type="text/javascript">//<![CDATA[ 
    jQuery(document).ready(function($) {
        
    Virtuemart.product(jQuery("form.product"));

        
    /*$("form.js-recalculate").each(function(){
            if ($(this).find(".product-fields").length && !$(this).find(".no-vm-bind").length) {
                var id= $(this).find('input[name="virtuemart_product_id[]"]').val();
                Virtuemart.setproducttype($(this),id);

            }
        });*/
    }); //]]>
    </script>


    <
    script id="vm.CartModule.UpdateModule_js" type="text/javascript">//<![CDATA[ 
    jQuery(document).ready(function(){
        
    jQuery("body").live("updateVirtueMartCartModule", function(e) {
            
    jQuery("#vmCartModule").updateVirtueMartCartModule();
        });
    }); 
    //]]>
    </script
    Dans modules/mod_virtuemart_cart/mod_virtuemart_cart.php

    Ligne 60 commenter :

    Code PHP:
    //echo vmJsApi::writeJS(); 
    Puis ajouter les fonctions à la fin du script maitre

    ************************************************** ****************

    category

    Virer modal .js

    templates/montemplate/html/com_virtuemart/category/default.php

    Ligne 25 commenter :

    Code PHP:
    //JHTML::_ ('behavior.modal'); 
    ************************************************** *******************

    category

    Virer fonction orderlist

    templates/montemplate/html/com_virtuemart/category/default.php

    commenter ligne 32 :

    Code PHP:
    /*$js = "
    jQuery(document).ready(function () {
        jQuery('.orderlistcontainer').hover(
            function() { jQuery(this).find('.orderlist').stop().show()},
            function() { jQuery(this).find('.orderlist').stop().hide()}
        )
    });
    ";*/

    $document JFactory::getDocument ();
    //$document->addScriptDeclaration ($js); 
    Puis ajouter la fonction à la fin du script maitre

    ************************************************** *********************

    category

    Ajouter les trois fonctions dans le script maitre

    (qui ont été désactivés Dans modules/mod_virtuemart_cart/mod_virtuemart_cart.php

    Ligne 60 commenter :

    Code PHP:
    //echo vmJsApi::writeJS();) 

    Code PHP:
    /**/

    vmSiteurl 'http://dev.brundubonsai.fr:8080/' ;
    vmLang '&lang=fr' ;

    /*js-recalculate*/

    jQuery(document).ready(function($) {
        
    Virtuemart.product(jQuery("form.product"));

        
    /*$("form.js-recalculate").each(function(){
            if ($(this).find(".product-fields").length && !$(this).find(".no-vm-bind").length) {
                var id= $(this).find('input[name="virtuemart_product_id[]"]').val();
                Virtuemart.setproducttype($(this),id);

            }
        });*/
    });

    /*fonction panier*/

    jQuery(document).ready(function(){
        
    jQuery("body").live("updateVirtueMartCartModule", function(e) {
            
    jQuery("#vmCartModule").updateVirtueMartCartModule();
        });
    }); 
    ************************************************** ************************

    Virtuemart

    virer popup.js

    Creer dans template override de sublayouts/askrecomjs.php en enlevant else{facebox blabla}


    ************************************************** *********************

    Maintenant que les scripts maitre sont prets, on supprime les appels de toutes les librairies dans le index.php et le logic.php, et on les insère soi même aux bons endroits en fonction des views/id/itemid.

    Puis dans l'admin virtuemart/configuration/templates/Activation des style CSS & Javascripts on désactive tout.

    Ce qui donne au final pour mon cas :

    Logic.php :

    Code PHP:
    <?php
    defined
    ('_JEXEC') or die;

    $app JFactory::getApplication();

    $doc JFactory::getDocument();

    $params $app->getParams();

    $view JRequest::getCmd('view');

    $id JRequest::getVar('id');

    $Itemid JRequest::getVar('Itemid');

    $tpath $this->baseurl.'/templates/'.$this->template;

    $links $this->params->get('links');

    $buttons $this->params->get('buttons');

    $hfonts $this->params->get('hfonts');

    $bfonts $this->params->get('bfonts');

    $background $this->params->get('background');

    $container $this->params->get('container');

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/jquery.fancybox-1.3.4.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/vmpanels.css']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/validationEngine.template.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/validationEngine.jquery.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/components/com_virtuemart/assets/css/facebox.css?vmver=8847']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/media/system/css/modal.css']);

    unset(
    $doc->_styleSheets[JURI::root(true) . '/templates/system/css/general.css']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/bootstrap.min.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/mootools-core.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/core.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-noconflict.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-migrate.min.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/mootools-core.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/core.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/caption.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/punycode.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/validate.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/html5fallback.js']);

    unset(
    $doc->_scripts[JURI::root(true) . '/components/com_virtuemart/assets/js/vmtabs.js?vmver=8847']);

    unset(
    $doc->_scripts[JURI::root(true) . '/components/com_virtuemart/assets/js/facebox.js?vmver=8847']);



    $menu $app->getMenu();

    $active $app->getMenu()->getActive();

    $pageclass $params->get('pageclass_sfx');

    $this->setGenerator(null);

    $head $doc->getHeadData();

    unset(
    $head['metaTags']['http-equiv']);

    $doc->setHeadData($head);

    if (
    $view == 'article' && $id == '72') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-accueil.css');

    }

    if ((
    $view == 'article' && $id != '72') || $view == 'orders' || $view == 'remind' || $view == 'reset' || $view == 'login') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-article-or-orders.css');

    }

    if (
    $view == 'virtuemart' || $view == 'cart' || $view == 'vmplg') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-virtuemart-or-cart.css');

    }

    if (
    $view == 'category') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-category.css');

    }

    if (
    $view == 'productdetails') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-productdetails.css');

    }

    if (
    $view == 'user' || $view == 'form') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-user.css');

    }

    if (
    $view == 'vendor') {

      
    $doc->addStyleSheet(''.$tpath.'/css/master-vendor.css');

    }


    if(
    JFactory::getApplication()->get('jquery') == false) {JFactory::getApplication()->set('jquery'true);}



    //On appelle ici les scripts que l'on ne va pas différer

    if ($view == 'user') {

      
    $doc->addScript(''.$tpath.'/js/master-user.js','text/javascript');

    }

    if (
    $view == 'cart' || $view == 'vmplg') {

      
    $doc->addScript(''.$tpath.'/js/master-cart-or-vmplg.js','text/javascript');

    }

    if (
    $view == 'vendor' && ($Itemid == '481' || $Itemid == '482')) {

      
    $doc->addScript(''.$tpath.'/js/master-cgvml.js','text/javascript');

    }

    if (
    $view == 'vendor' && $Itemid == '479') {

      
    $doc->addScript(''.$tpath.'/js/master-contact.js','text/javascript');

    }

    if (
    $view == 'orders') {

      
    $doc->addScript(''.$tpath.'/js/master-orders.js','text/javascript');

    }

    if (
    $view == 'remind' || $view == 'reset') {

      
    $doc->addScript(''.$tpath.'/js/master-remind-or-reset.js','text/javascript');

    }

    if (
    $view == 'login') {

      
    $doc->addScript(''.$tpath.'/js/master-login.js','text/javascript');
    }
    ?>
    Index.php

    Code PHP:
    <?php
    defined
    ('_JEXEC') or die;
    require_once 
    JPATH_THEMES.'/'.$this->template.'/logic.php';
    ?>

    <!DOCTYPE html>

    <html lang="<?php echo $this->language?>" dir="<?php echo $this->direction?>" >
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=3.0, user-scalable=yes">
    <jdoc:include type="head" />

    //Aucun appels css ou javascript ici

    </head>
    <body>
    blablabla...
    ...
    //On appelle ici les scripts maitres que l'on va différer
    <!-- Javascript -->

    <?php if (JRequest::getCmd('view') == 'article' && JRequest::getVar('id') == '72') : ?><script src="<?php echo $tpath ?>/js/master-accueil.js" defer="defer"></script><?php endif; ?>

    <?php if (JRequest::getCmd('view') == 'article' && JRequest::getVar('id') != '72') : ?><script src="<?php echo $tpath ?>/js/master-article.js" async="async"></script><?php endif; ?>

    <?php if (JRequest::getCmd('view') == 'virtuemart') : ?><script src="<?php echo $tpath ?>/js/master-virtuemart.js" defer="defer"></script><?php endif; ?>

    <?php if (JRequest::getCmd('view') == 'productdetails') : ?><script src="<?php echo $tpath ?>/js/master-productdetails.js" defer="defer"></script><?php endif; ?>

    <?php if (JRequest::getCmd('view') == 'category') : ?><script src="<?php echo $tpath ?>/js/master-category.js" defer="defer"></script><?php endif; ?>
    </body>
    </html>

    Et ca envoie du paté sévère...
    Dernière édition par -Tony- à 31/05/2015, 15h05

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X