Annonce

  •  » Plugins
  •  » Théme et Jquery

#1 2012-03-20 20:26:45

gbo
Membre
PACA
2006-11-01
1200

Théme et Jquery

Comment savoir si un thème utilise Jquery.

J'ai des scripts complémentaires à mettre en œuvre.
Pour les thèmes qui n'utilisent pas Jquery (Dark....), je pense livrer une solution maison limitée mais légère < 10K.
Sans avoir besoin des 120K de Jquery.

Pour les thèmes qui utilisent déjà jquery les 120K sont déjà descendu, je souhaite ne livrer que la partie
complémentaire qui gèrent mes animations.

Mon besoins c'est de savoir qui utilise ou pas Jquery.

Hors ligne

#2 2012-03-20 22:21:58

websigns
Membre
Montpellier
2010-05-27
66

Re: Théme et Jquery

Cette réponse est pas mal et plus complète que la moyenne :
http://www.codeproject.com/Tips/263426/ … d-vs-ready

Hors ligne

#3 2012-03-20 22:26:13

saimon
Membre
2006-12-04
367

Re: Théme et Jquery

120ko ? jquery c'est 31ko minifié et gzippé.
il y aurait une solution pour améliorer encore: utiliser les cdn google/ms/... pour charger jquery
http://docs.jquery.com/Downloading_jQue … ted_jQuery
L'intérêt c'est si un client a en cache le jquery de http://ajax.googleapis.com/ajax/libs/jq … ery.min.js et tu utilises ce même jquery, il n'est pas retéléchargé. Malheureusement je ne crois pas que ca fonctionne avec combine_script ...

Hors ligne

#4 2012-03-20 23:27:31

websigns
Membre
Montpellier
2010-05-27
66

Re: Théme et Jquery

Si ! Je viens de tester sur ma galerie et ça marche nickel.
Par contre pas avec ton adresse, faut un fichier js je pense.

Voilà le code utilisé :
class machin {
    function test_jQuery()
    {
    global $template;
      $template->func_combine_script( array(
                      'id'=> 'jquery',
                      'load'=> 'header',
        //'path'=> 'themes/default/js/jquery.min.js',
        'path'=> 'http://code.jquery.com/jquery-latest.min.js',
              ), $smarty);
    }
}
add_event_handler('loc_begin_page_header', array(machin, 'test_jQuery'),1,2);

Une autre fonction dans le même esprit avec inclusion du test sus-cité et ouala.

Et je confirme : 32ko, Gzipped et cached

Dernière modification par websigns (2012-03-20 23:29:15)

Hors ligne

#5 2012-03-21 19:09:08

gbo
Membre
PACA
2006-11-01
1200

Re: Théme et Jquery

120K j'ai un peu exagéré.
Mais sans Gzip  on reste à 93K.
Avec mon hébergeur c'est galère pour faire du Gzip.
Mon besoin est juste de savoir si un thème à déjà chargé Jquery.
La fonction combine pourrait peut-être fournir un tableau des JS/CSS chargés.

Hors ligne

#6 2012-03-21 20:31:15

websigns
Membre
Montpellier
2010-05-27
66

Re: Théme et Jquery

Pour le Gzip je ne suis pas sûr du comment mais une chose est sûr mon hébergeur ne gère pas le MOD_deflat, donc si je ne me trompe si mon jQuery est Gzippé c'est depuis le site distant où il se trouve.

Quoi qu'il en soit utilise la fonction que je t'ai donné comme ça :
class machin {
    function test_jQuery()
    {
        ...
    }
    function ta_fonction()
    {
    global $template;
      $template->func_combine_script( array(
                      'id'=> 'jquery',
                      'load'=> 'header',
                      'path'=> 'chemin/vers/ton/fichier.js',
              ), $smarty);
    }
}
add_event_handler('loc_begin_page_header', array(machin, 'test_jQuery'),1,2);
add_event_handler('loc_begin_page_header', array(machin, 'ta_fonction'),41,2);

Cette partie "1,2)" permet de charger en premier et la fonction func_combine_script ne charge que si ce n'est pas déjà le cas.

Pour moi ça marche en tout cas, je charge un petit plugin perso comme ça.

Dernière modification par websigns (2012-03-21 20:33:43)

Hors ligne

#7 2012-03-21 21:36:35

saimon
Membre
2006-12-04
367

Re: Théme et Jquery

gbo a écrit:

Mais sans Gzip  on reste à 93K.
Avec mon hébergeur c'est galère pour faire du Gzip.

du coup ce serait encore plus intéressant d'utiliser un CDN.

Hors ligne

#8 2012-03-21 21:39:57

saimon
Membre
2006-12-04
367

Re: Théme et Jquery

websigns a écrit:

Si ! Je viens de tester sur ma galerie et ça marche nickel.
Par contre pas avec ton adresse, faut un fichier js je pense.

Voilà le code utilisé :
class machin {
    function test_jQuery()
    {
    global $template;
      $template->func_combine_script( array(
                      'id'=> 'jquery',
                      'load'=> 'header',
        //'path'=> 'themes/default/js/jquery.min.js',
        'path'=> 'http://code.jquery.com/jquery-latest.min.js',
              ), $smarty);
    }
}
add_event_handler('loc_begin_page_header', array(machin, 'test_jQuery'),1,2);

Une autre fonction dans le même esprit avec inclusion du test sus-cité et ouala.

Et je confirme : 32ko, Gzipped et cached

je ne suis pas sur de comprendre ce que fait ce code: il récupére jquery depuis une adresse distante pour l'inclure dans le script combiné de piwigo ? dans ce cas on perd l'intérêt du CDN.
En fait il faudrait pouvoir inclure jquery avec une balise script classique et pouvoir dire à combine_script que jquery est chargé pour qu'il ne le charge pas une 2ème fois.

Hors ligne

#9 2012-03-21 21:55:39

websigns
Membre
Montpellier
2010-05-27
66

Re: Théme et Jquery

Que nenni il y a erreur :[/url]http://docs.jquery.com/Downloading_jQuery[/url]
L'adresse que j'utilise est un hébergement CDN.
Et un hébergement CDN sert à améliorer le chargement d'un fichier. Une fois fait on le manipule bien comme on veut.
L’intérêt de le combiner avec d'autres scripts va se situer plutôt au niveau du rechargement via le cache smartie et/ou celui du navigateur. Enfin si j'ai bien compris ^^

Quant à combine_script, cette fonction sert également à vérifier si jQuery est déjà chargé.

Hors ligne

#10 2012-03-21 22:28:32

saimon
Membre
2006-12-04
367

Re: Théme et Jquery

websigns a écrit:

Que nenni il y a erreur :[/url]http://docs.jquery.com/Downloading_jQuery[/url]
L'adresse que j'utilise est un hébergement CDN.

oui, il y a le choix:
http://code.jquery.com/jquery-latest.min.js
http://ajax.googleapis.com/ajax/libs/jq … ery.min.js
http://ajax.aspnetcdn.com/ajax/jQuery/j … 7.1.min.js
mais ce n'est pas le problème

websigns a écrit:

Et un hébergement CDN sert à améliorer le chargement d'un fichier. Une fois fait on le manipule bien comme on veut.
L’intérêt de le combiner avec d'autres scripts va se situer plutôt au niveau du rechargement via le cache smartie et/ou celui du navigateur. Enfin si j'ai bien compris ^^

non, le problème c'est que là c'est ton serveur qui récupère jquery depuis le cdn, pour le combiner avec la méthode piwigo et le renvoyer au client. Donc avec cette méthode, du point de vue du client ca ne change rien.

Pour y gagner quelque chose il faut que ce soit le client qui fasse la requête au cdn, directement.

websigns a écrit:

Quant à combine_script, cette fonction sert également à vérifier si jQuery est déjà chargé.

comment ? si je charge jquery dans une balise script, combine_script va le détecter ? il faudrait essayer ...

Hors ligne

#11 2012-03-22 10:15:43

websigns
Membre
Montpellier
2010-05-27
66

Re: Théme et Jquery

Okkk.
Je viens de mieux comprendre se que tu veux dire, je n'avais pas poussé la réflexion jusqu’au bout. Effectivement on a tout les avantages sauf celui du CDN par ce système.
On peut se demander si ce n'est pas aussi bien en terme de résultat qu'un CDN ceci dit.

Mais néanmoins c'est très bien vu et j'ai peut être une solution :
en remplaçant
       

Code:

$template->func_combine_script( array( ... );

par
       

Code:

$template->append('head_elements', '
    <script type="text/javascript">
      if (typeof jQuery == "undefined"){
          var script = document.createElement("script");
          script.type = "text/javascript";
          script.src = "http://code.jquery.com/jquery-latest.min.js";
          document.getElementsByTagName("head")[0].appendChild(script);
      };
    </script>

Mais le top serait de le faire en PHP. En extrayant de func_combine_script() la partie d'analyse peut être.
A suivre ...

Hors ligne

#12 2012-03-22 10:21:33

rvelices
Équipe Piwigo
2005-12-29
1417

Re: Théme et Jquery

si on appele combine_script avec une path commencant par http:// , ce js ne sera pas combiné avec les autres ...

Hors ligne

#13 2012-03-22 13:12:31

websigns
Membre
Montpellier
2010-05-27
66

Re: Théme et Jquery

ha oui c'est vrais tiens. J'avais juste vérifié sa présence. Au temps pour moi.
Ce qui clôt la question à priori.

Hors ligne

#14 2012-03-26 22:48:16

saimon
Membre
2006-12-04
367

Re: Théme et Jquery

rvelices a écrit:

si on appele combine_script avec une path commencant par http:// , ce js ne sera pas combiné avec les autres ...

ca ne fonctionne pas:
Warning: filemtime(): stat failed for ./http//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js in /galerie/include/template.class.php on line 1240 Warning: file_get_contents(./http//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js): failed to open stream: No such file or directory in /galerie/include/template.class.php on line 1288

Hors ligne

#15 2012-03-27 09:10:25

rvelices
Équipe Piwigo
2005-12-29
1417

Re: Théme et Jquery

saimon a écrit:

ca ne fonctionne pas:
Warning: filemtime(): stat failed for ./http//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js in /galerie/include/template.class.php on line 1240 Warning: file_get_contents(./http//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js): failed to open stream: No such file or directory in /galerie/include/template.class.php on line 1288

si tu mets l'url correctement ca fonctionne (il te manque : apres http)

Hors ligne

  •  » Plugins
  •  » Théme et Jquery

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact