Annonce

Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

saimon
2012-03-27 10:50:09

oups, je devais être fatigué ;-)

rvelices
2012-03-27 09:10:25

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)

saimon
2012-03-26 22:48:16

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

websigns
2012-03-22 13:12:31

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.

rvelices
2012-03-22 10:21:33

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

websigns
2012-03-22 10:15:43

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 ...

saimon
2012-03-21 22:28:32

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 ...

websigns
2012-03-21 21:55:39

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é.

saimon
2012-03-21 21:39:57

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.

saimon
2012-03-21 21:36:35

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.

websigns
2012-03-21 20:31:15

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.

gbo
2012-03-21 19:09:08

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.

websigns
2012-03-20 23:27:31

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

saimon
2012-03-20 22:26:13

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 ...

websigns
2012-03-20 22:21:58

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

Pied de page des forums

Propulsé par FluxBB

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