[RESOLU] Module {Gallery} => Une image = Une galerie - Version imprimable +- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr) +-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html) +--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html) +--- Sujet : [RESOLU] Module {Gallery} => Une image = Une galerie (/thread-750.html) |
[RESOLU] Module {Gallery} => Une image = Une galerie - FlorentCMSMS - 21/10/2010 Bonjour à tous, Je viens demander un peu d'aide à la communauté après avoir passé quelques heures à me casser la tête sur mon petit soucis. Je vous explique, avec le module Gallery, je souhaiterais sur une page précise, que pour l'appel d'un galerie, il ne m'affiche que la première miniature de la galerie, et qu'au clic, je puisse visualiser l'ensemble de mes images grace à fancybox. Pour nous aider : http://fancybox.net/ Le code du gabarit "FancyBox" du module Gallery modifié pour ne garder que l'essentiel : Code : <div class="gallery"> Enfin, le petit appel javascript de fancybox : Code : <script type="text/javascript" src="modules/Gallery/templates/fancybox/jquery.fancybox.pack.js"></script> J'ai essayé pas mal de choses avec Smarty ( {counter}, etc.. ) mais je n'arrive à rien. Cependant, sur la page de Fancybox, tout en bas, dans manual call, il est possible d'appeler une seule image ( pour une galerie complète). Voici le code utilisé : Code : <a id="manual2" href="javascript:;" title="">Image gallery</a> Si l'un d'entre vous voit une solution ça pourrait m'aider fortement ! Merci à tous [RESOLU] Module {Gallery} => Une image = Une galerie - bess - 21/10/2010 je ne vois pas ou tu bloques... surement par ce que j'ai une autre vision du problème de ton appel JS Code : <script type="text/javascript" src="modules/Gallery/templates/fancybox/jquery.fancybox.pack.js"></script> ne conserve que le strict minimum : Code : <script type="text/javascript" src="modules/Gallery/templates/fancybox/jquery.fancybox.pack.js"></script> et tu rajoutes l'autre partie dans ton gabarit de gallery pour donner Code : {literal} déjà rien que ça, ça te permet de jouer sur la composition du JS avec smarty. ensuite tu veux quoi ? afficher 1 miniature et faire en sorte que le JS affiche le reste ? ben c'est partis... après tout smarty te permet de faire quasi tout ce que tu veux non? plutôt que d'itérer sur la liste entière des images ($images), fait apparaitre qu'une seule ligne, soit avec un break; soit en appelant le premier élément du tableau $images : "$images[0]->foo;" en PHP, a voir ce que ca donne en smarty + sécurité si pour une raison le tableau ne contiens aucune image... pour ce qui est du JS, inspires toi de l'exemple que tu nous donnes toi même. Citation :{literal} bon il faut changer et ajuster mes idées mais à mon avis c'est loin d'être infaisable ! [RESOLU] Module {Gallery} => Une image = Une galerie - Jean le Chauve - 21/10/2010 Désolé de m'immiscer, mais il me semble que ce template pourrait convenir sans rien modifier d'autre : Code : <div class="gallery"> [RESOLU] Module {Gallery} => Une image = Une galerie - bess - 21/10/2010 exact mais on sort de l'exemple JS cité ci dessus, c'est pourquoi j'ai pas proposé.. mais c'est tout a fait valable également a mois que les miniatures soient déjà mastoc... auquel cas faudrait mieux ne pas augmenter le poids de la page (display:none précharge l'image de mémoire non? [RESOLU] Module {Gallery} => Une image = Une galerie - Jean le Chauve - 21/10/2010 Je pense que tu as raison, au niveau chargement ton système est plus optimisé. [RESOLU] Module {Gallery} => Une image = Une galerie - FlorentCMSMS - 22/10/2010 Merci beaucoup à vous deux ! Je teste ça dans la journée . En réalité, j'ai tenté une manip dans l'idée de celle de Jean, mais j'ignorait la possibilité d'écrire Code : {if $smarty.foreach.image.first} Je vous tiens au courant ! Merci à vous. [RESOLU] Module {Gallery} => Une image = Une galerie - FlorentCMSMS - 22/10/2010 J'ai testé la méthode smarty, le Code : {if $smarty.foreach.image.first} [RESOLU] Module {Gallery} => Une image = Une galerie - FlorentCMSMS - 22/10/2010 Problème résolut : En réalité Code : {if $smarty.foreach.image.first} Code : {foreach from=$images item=image name=test} Code : {if $smarty.foreach.test.first} Ce qui donne finalement : Côté smarty/html Code : <div class="gallery"> Côté JS Code : <script type="text/javascript" src="modules/Gallery/templates/fancybox/jquery.fancybox.pack.js"></script> Côté optimisation, il me semble que FancyBox s'occupe de créer les thumbs et de charger au fur et à mesure les images. Donc le chargement de la page est raisonnable. Merci à vous deux, pour ceux qui voudront, je pourrais mettre à dispo le gabarit de la Galerie en version xml. [RESOLU] Module {Gallery} => Une image = Une galerie - bess - 22/10/2010 http://www.smarty.net/manual/fr/language.function.foreach.php Citation :.first ca devrait pourtant ! [RESOLU] Module {Gallery} => Une image = Une galerie - Jean le Chauve - 22/10/2010 C'est juste, j'avais oublié d'ajouter name=image, mais test va aussi ;-) |