Ayant repris des scripts des thèmes Simple et Gally je me retrouve avec des appels vers Jquery dans le header et dans le footer... ce qui donne à peu près ça, en ayant viré les appels de scripts eux-même :
- Header Gally :
<script type="text/javascript" src="{$ROOT_URL}themes/default/js/jquery.packed.js"></script> {known_script id="jquery" src=$ROOT_URL|cat:"themes/default/js/jquery.packed.js"} {known_script id="jquery.ui" src=$ROOT_URL|cat:"themes/default/js/ui/packed/ui.core.packed.js"} {known_script id="jquery.ui.tabs" src=$ROOT_URL|cat:"themes/default/js/ui/packed/ui.tabs.packed.js"} {known_script id="jquery.ui.dialog" src=$ROOT_URL|cat:"themes/default/js/ui/packed/ui.dialog.packed.js"}
- Footer Simple
<script type="text/javascript" src="{$ROOT_URL}themes/{$themeconf.theme_dir}/js/jquery-1.4.2.min.js"></script>
J'aimerais bien rationnaliser un peu tout ça.
C'est quoi le jquery "packed" ?
C'est une librairie jQuery condensée ?
A priori simple utilise 1.4.2 donc je pourrais ne laisser que l'appel à la librairie de simple ?
Que signifient les "known_script id=" de Gally ?
Est-ce qu'il vaut mieux que je mette les appels dans le header ?
J'ai lu ce sujet :
[[Forum, topic 18498] théme avec Jquery]
qui conseille de le mettre dans le footer mais n'y a-t-il pas un risque que la page soit d'abord affichée sans prise en compte des scripts, et qu'ensuite seulement les scripts soient pris en compte ?
Hors ligne
packed : le code est packé : çà prends deux ou trois fois moins de place que le code non packé, c'est mieux pour le chargement
gally utilise jQuery livré en standard avec Piwigo => de mon côté, je pars du principe que d'utiliser le framework jQuery livré avec Piwigo évite tout problème de compatibilité (c'est déjà arrivé notamment avec le plugin lightbox il me semble)
le "known_script" c'est une fonctionnalité des templates piwigo : en utilisant un known script, je laisse piwigo gérer l'insertion des script dans les pages (çà permet notamment d'éviter de charger 3 fois le même script pour peu qu'ils soient bien nommé)
quand à savoir s'il faut mettre le chargement dans le header ou le footer, certains te diront le footer.
pour ma part, c'est le header pour des raison de logique :
- le header d'une page HTML c'est en parti prévu pour çà
- tous mes plugins chargent les librairies dans le header : typiquement dans le cas du thème 'simple' il est fort probable que le jQuery de piwigo soit déjà chargé par l'un de mes plugins (si installé) lorsque l'instruction de charger jQuery 1.4.2 est atteinte dans le template simple
- certains scripts (de certains plugins) commencent à être chargé avant que la fin de page ne soit atteinte
Dernière modification par grum (2010-11-16 19:33:35)
Hors ligne
grum a écrit:
gally utilise jQuery livré en standard avec Piwigo => de mon côté, je pars du principe que d'utiliser le framework jQuery livré avec Piwigo évite tout problème de compatibilité (c'est déjà arrivé notamment avec le plugin lightbox il me semble)
C'est le cas pour gmaps aussi ou pas ?
Je trouve ça effectivement assez sain comme choix.
A priori simple utilise la 1.4.2 qui est plus récente... du coup si je la vire j'ai l'impression qu'il y a des soucis.
Quoiqu'il en soit, je peux normalement me contenter d'un appel à l'un des deux ?
Pour les known scripts, si je n'appelle pas le jquery.packed.js de piwigo... je peux m'en passer ou pas ?
grum a écrit:
certains scripts (de certains plugins) commencent à être chargé avant que la fin de page ne soit atteinte
oui, c'est ce qui me parait intéressant...
Maintenant... truc étrange quand j'ai enlevé l'appel au jquery 1.4.2 de simple, tout marchait encore bien (il me semble) sauf gmaps qui ne marchait plus.
(étrange car gmaps ne fait pas appel à ce fichier).
Dernière modification par Zaphod (2010-11-16 21:55:02)
Hors ligne
Il doit y avoir un truc dans les scripts de simple qui nécéssitent 1.4.2... car si je ne le mets pas, ça ne marche pas.
Si je mets 1.4.2 et pas le packed.js de piwigo, tout semble marcher en revanche.
Une petite précision d'ailleurs sur le :
{known_script id="jquery" src=$ROOT_URL|cat:"themes/default/js/jquery.packed.js"} {known_script id="jquery.ui" src=$ROOT_URL|cat:"themes/default/js/ui/packed/ui.core.packed.js"} {known_script id="jquery.ui.tabs" src=$ROOT_URL|cat:"themes/default/js/ui/packed/ui.tabs.packed.js"} {known_script id="jquery.ui.dialog" src=$ROOT_URL|cat:"themes/default/js/ui/packed/ui.dialog.packed.js"}
A part le premier, les 3 autres ne sont pas appellés.
Ca remplace un appel à ces librairies, ou c'est pour couvrir un éventuel besoin de plugins additionels ?
Hors ligne
* packed vs min: la version packed est plus petite mais elle nécessite d'être "unpacked" par le client, ce qui prend du temps. De plus, il est possible d'activer la compression gzip ce qui doit ramener la version min (minifiée) au même poids que la version packed. Donc de ce que j'en ai compris la version min est plus intéressante.
* script header / footer: si yahoo dit qu'il faut les mettre dans le footer, perso je les crois :-).
http://developer.yahoo.com/performance/ … #js_bottom
mais comme ca marche pas avec known_script et que du coup les plugins vont charger une 2ème version de jquery dans le header, j'ai modifié le code de simple pour utiliser known_script, tant pis ... : [Github] simple-grey commit 35598c4b
Zaphod, vu que tu as l'air de pas mal modifier simple, ca peut être intéressant pour toi de suivre les modifs que je fais: https://github.com/saimn/simple-grey/commits/master
voire si tu veux utiliser un gestionnaire de version, ca te faciliterait la tache.
Dernière modification par saimon (2010-11-17 00:27:25)
Hors ligne
Merci pour les infos.
Je vais tenter de faire la même modif en known script, voire ce que ça donne...
Pour le gestionnaire de versions... je vais déja tenter de faire une version diffusable (on s'en approche), on verra ensuite ;)
Dernière modification par Zaphod (2010-11-18 22:24:10)
Hors ligne
La balise know_script accepte le paramètre "now" qui permet de charger le fichier js à l'endroit meme ou elle est utilisée:
{known_script id="jquery" now=true src=$ROOT_URL|cat:"themes/default/js/jquery.packed.js"}
Ca peux peut-etre résoudre vos soucis...
Mais on pourrait aussi rajouter très facilement un paramètre "load" (optionnel) à la fonction know_script qui permettrait de charger automatiquement le js dans le footer:
{known_script id="jquery" load="footer" src=$ROOT_URL|cat:"themes/default/js/jquery.packed.js"}
Si ca intéresse quelqu'un, une petite fiche dans le bugtracker, et je m'en occuperai ;-)
Hors ligne
En tous cas c'est étrange... je n'arrive pas à virer l'un des deux appels à jQuery.
{known_script id="jquery" src=$ROOT_URL|cat:"themes/default/js/jquery.packed.js"} {known_script id="jquery-2" src=$ROOT_URL|@cat:"themes/julien/js/jquery-1.4.2.min.js"}
Si j'en enlève un des deux... j'ai des scripts qui plantent...
[edit]
En fait je viens de comprendre, je crois.
J'ai surement des plugins qui font appel à jquery.packed.js avec known_script id="jquery"
Si je mets la version 1.4.2 avec known_script id="jquery", ça plante.
Si je mets la version 1.4.2 avec known_script id="jquery-2", ça marche.
Mais donc les deux versions sont probablement chargées, ce qui est dommage...
[edit2]
En fait si je désactive GMaps, ça ne marche plus... donc il faut bien que je mette les deux appels pour que tout marche, c'est quand même étrange...
Dernière modification par Zaphod (2010-11-19 02:02:05)
Hors ligne
bonjour.
En fait si je désactive GMaps, ça ne marche plus... donc il faut bien que je mette les deux appels pour que tout marche, c'est quand même étrange...
Pour pouvoir utiliser le Theme Simple avec GMaps:
il faut commenter la ligne 1 du themes/simple/js/script.js
//jQuery.noConflict();
[HS]
En regle générale si on veut utiliser jQuery, il est souhaitable pour des raisons de compatibilités utiliser la syntaxe
jQuery(.. plutôt que $(..
jQuery.ajax plutôt que $.ajax ...
Comme cela si d'autre framework sont chargé l'instruction jQuery sera bien prise en compte.
[/HS]
Mais ceci est hors sujet, mais j'avais envie de le dire. :-)
A+
Hors ligne
Un grand merci cljosse pour le coup du noConflict() à virer...
Grace à ça j'ai enfin réussi à n'appeller qu'une seule librairie jQuery.
Résultat j'ai le choix entre utiliser la librairie Piwigo de base, ou celle de simple (1.4.2min).
Vu ce qui est expliqué sur le site jQuery... j'aurais tendance à choisir la 1.4.2.min seulement un chouilla plus grosse (70 vs. 50) mais qui ne nécéssite pas de décompression.
Dernière modification par Zaphod (2010-11-19 18:08:11)
Hors ligne
Zaphod a écrit:
Ca n'est pas hors sujet, au contraire c'est intéressant...
Ce sont tous les $ qu'il vaut mieux remplacer par jQuery ou pas ?
Oui si on écrit un script il faut mieux mettre jQuery à la place de $ .
:-)
Hors ligne