Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Gallery : diaporama au delà de la page de vignettes en cours...
#1

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.9.2
#~ Nom de l'hébergeur : Galacsys
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.2
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.3
#~ * MenuManager: 1.7.4
#~ * ModuleManager: 1.4
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.1
#~ * Search: 1.6.8
#~ * ThemeManager: 1.1.3
#~ * TinyMCE: 2.8.2
#~ * FormBuilder: 0.6.4
#~ * Captcha: 0.4.3
#~ * Gallery: 1.4.3
#~ [...]
#~ Server Information:
#~ * Server Api: apache
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.51
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~

Bonjour,

J'utilise Gallery associé au gabarit Lytebox. J'affiche 20 vignettes par page et lorsque je clique sur une vignette, le diaporama débute à la vignette en cours et se termine sur la dernière vignette affichée sur la page, ce qui est je crois le comportement par défaut.

Je souhaiterais modifier ce comportement de manière à ce que le diaporama se poursuive jusqu'à la dernière photo de ma galerie, c'est à dire au delà de la page d'affichage de vignettes en cours. Par exemple, j'ai 100 photos dans ma galerie, je clique sur la vignette 5 de la page 2 (c'est donc la 25ème de la galerie), et au lieu de ne m'afficher que les 15 restantes jusqu'à la fin de la page, il continue.

J'ai regardé les paramètres disponibles et vu que {$imagecount} indique le nombre d'images de la galerie, donc je suppose que ce que je souhaite faire est possible, mais comment ?

J'avoue qu'entre les balises Smarty du gabarit, lyteshow.js et la façon dont les deux communiquent via lyteshow[gallery], je suis un peu perdu.

Par avance un grand merci à qui pourra éclairer ma lanterne Smile
Répondre
#2

bonjour,
c'est le comportement normal de lytebox. Il affiche les images des balises <img avec ref="lightbox">
Il ne peut pas afficher celles dont il n'a pas connaissance.
Gallery est la pour générer les pages html.
Il faudrait que dans ta page, il y ait toutes les images de Gallery.
Éventuellement, il faudrait modifier le gabarit pour masquer les images qui ne sont pas dans la page en cours. Mais si tu en a une centaine, même masquées, les vignettes seraient telechargées et donc alourdiraient la page.
Quelqu'un a une autre idée?

{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#3

Bonsoir jissey, et merci de t'intéresser à mon problème.

jissey a écrit :c'est le comportement normal de lytebox. Il affiche les images des balises <img avec ref="lightbox">
Il ne peut pas afficher celles dont il n'a pas connaissance.
Gallery est la pour générer les pages html.
Il faudrait que dans ta page, il y ait toutes les images de Gallery.
C'est ce que je craignais...
Citation :Éventuellement, il faudrait modifier le gabarit pour masquer les images [...mais...] les vignettes seraient telechargées et donc alourdiraient la page.
Quelqu'un a une autre idée?

Pratiquant la programmation depuis, euh... longtemps (on va dire le début des années 1980), des idées j'en ai plein et si je devais écrire « from scratch » ce que je souhaite faire, j'y arriverais probablement, mais l'idée étant d'utiliser cmsms, smarty, les modules et les templates pour parvenir à mes fins de façon relativement harmonieuse et réutilisable en respectant le mode de fonctionnement du bidule, je me sens un peu démuni parce que je n'ai pas encore intégré l'ensemble des mécanismes régissant le fonctionnement de la bête.

Disons qu'idéalement, je continue à utiliser Gallery pour afficher mes galeries d'images parce qu'à défaut d'être ergonomique, c'est pratique et simple à utiliser.

Ensuite, quand on clique sur une vignette dans une page, je récupère l'identifiant de la vignette (le vrai, pas celui relatif à la page en cours d'affichage), le nombre total de photos dans ma galerie, j'envoie ça à un script PHP qui localise le répertoire contenant la galerie, trouve l'image de départ, l'image de fin, construit un tableau des images à afficher ; et là, je donne le résultat à manger à lyteshow.js.

Piste à creuser ou idée stupide ?
Répondre
#4

Bonsoir Potiron,
je pratique depuis au moins autant que toi l'informatique et je compatis Wink
C'est peut-être un peu compliqué de rappeler un script (une balise utilsateur:UDT) au clic.
L'idée que j'avais au départ était de générer tout par avance et en y réfléchissant, c'est peut-être pas si compliqué que ça.
Il faudrait que dans le gabartit, pour chaque page, aller chercher toutes les images:
pour les images dont on veut avoir la vignette, c'est à dire celles qui sont dans la pagination, générer la balise <a ..... rel="lightbox[gallery]"><img></a> normale et pour les autres, générer la balise <a ..... rel="lightbox[gallery]" style="display:none">texte</a>.
Ce que je ne peux pas vérifier ce soir (je ne suis pas sur mon ordi) c'est si il est possible de récupérer tout à chaque page, donc étudier le système de pagination.
Voilà, je viens de faire de la prog scratch.

{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#5

Bonjour jissey,

jissey a écrit :L'idée que j'avais au départ était de générer tout par avance et en y réfléchissant, c'est peut-être pas si compliqué que ça.
Il faudrait que dans le gabartit, pour chaque page, aller chercher toutes les images:
pour les images dont on veut avoir la vignette, c'est à dire celles qui sont dans la pagination, générer la balise <a ..... rel="lightbox[gallery]"><img></a> normale et pour les autres, générer la balise <a ..... rel="lightbox[gallery]" style="display:none">texte</a>.

Pas bête du tout, ton idée... En plus, je me vois mieux bricoler dans le gabarit que dans le gros paquet de javascript de lightshow.js Smile

Reste à voir si ça ne chargera pas trop la mule pour une galerie pouvant contenir à terme 200 images et plus, mais ça, c'est facile à tester, il me suffit de ne pas demander de pagination et de voir si le temps de traitement et d'affichage du gabarit reste décent.

Ça vaut le coup de tester, je vais essayer de le faire rapidement.

Un grand merci en tout cas !
Répondre
#6

Si tes miniatures sont vraiment des miniatures bien gérés, 200 photos devraient pas trop alourdir la page ...

relativement parlant :lol:
Répondre
#7

Potiron a écrit :Pas bête du tout, ton idée...
Ça vaut le coup de tester, je vais essayer de le faire rapidement.

Pour répondre à Bess, mes miniatures doivent être bien gérées, parce que je ne vois pas de différence notable de délai entre l'affichage de 20 imagettes ou de 147 (la totalité de la galerie à ce jour). C'est instantané dans les deux cas Smile

En revanche, modifier le gabarit ne semble pas suffisant pour parvenir à mes fins, parce que, sauf si j'ai raté un truc, il ne s'occupe que d'afficher les images présentes dans la page en cours :

Code :
<!-- boucle d'affichage des images -->
{foreach from=$images item=image}
    <div class="img">
    {if $image->isdir}
        <a href="{$image->file}" title="{$image->titlename}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" /></a><br />
        {$image->titlename}
    {else}
   <a href="{$image->file|escape:'url'|replace:'%2F':'/'}" title="{$image->titlename}" rel="lyteshow[gallery]"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" /></a>
    {/if}
    </div>
{/foreach}

La boucle foreach affiche chaque image contenue dans le tableau $images, mais rien dans le gabarit n'indique où ni comment ce tableau passé en paramètres a été construit, comment il sait quelle est la page en cours, etc.

Moralité, il faut aller fouiller dans les entrailles du module Gallery pour trouver le ou les scripts php/smarty qui gèrent ça, et sans avoir une idée précise de qui fait quoi là dedans entre ceux qui font tourner le back office et ceux qui se chargent de préparer l'affichage des pages, ben à part le risque tout casser en faisant des bétises, c'est pas gagné Sad

Je ne baisse pas encore les bras, mais si une bonne âme pouvait m'indiquer un lien vers une documentation technique exhaustive (l'anglais ne me rebute pas) expliquant dans le détail le fonctionnement du module Gallery, je lui en serais infiniment reconnaissant. J'ai déjà beaucoup (mais peut-être mal) cherché, sans succès.

Au pire, même si ça nuit un peu à l'esthétique du site, je choisirai la solution de facilité consistant à afficher l'ensemble des imagettes de la galerie sur une seule page. Smile
Répondre
#8

ce que je proposait, c'était de n'afficher que les vignettes utiles.
Pour les autres, il s'agissait de faire un lien texte masqué.
Le script qui appelle le gabarit est action.default.php.
Il enregistre dans un array $images les images du dossier (lignes 177 à 244).
Ensuite il ne garde que celles définies dans le paramètre du gabarit (array_splice ligne 257).
En modifiant la ligne 257 pour tout garder, je pense que tu récupérerais toutes les infos des images et tu pourrais gérer une pagination parallèle. Les images à l'intérieur de la pagination sont affichées et les autres un lien texte masqué.
CECI SOUS TOUTE RESERVE!
Je n'ai jeté qu'un oeil rapide et j'ai certainement pas vu le truc qui va tout faire foirer Big Grin

Si tu as compris mon idée, tu n'as plus qu'à tester...
Bon courage!

{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#9

Bonsoir jissey,

jissey a écrit :ce que je proposait, c'était de n'afficher que les vignettes utiles.
Pour les autres, il s'agissait de faire un lien texte masqué.

Euh, j'avais bien compris ta proposition initiale, hein...

Citation :Le script qui appelle le gabarit est action.default.php.
Il enregistre dans un array $images les images du dossier (lignes 177 à 244).
Ensuite il ne garde que celles définies dans le paramètre du gabarit (array_splice ligne 257).
En modifiant la ligne 257 pour tout garder, je pense que tu récupérerais toutes les infos des images et tu pourrais gérer une pagination parallèle. Les images à l'intérieur de la pagination sont affichées et les autres un lien texte masqué.

Voila des informations bien utiles qui m'aideront dans la réalisation de ce que je souhaite faire, merci qui ? Merci jissey ! Smile

Citation :CECI SOUS TOUTE RESERVE!
Si tu as compris mon idée, tu n'as plus qu'à tester...

Maintenant que j'ai plus d'éléments et que je vois mieux où intervenir dans le code, je vais tester, promis.

Mais pas tout de suite, parce qu'après en avoir discuté avec la personne qui me demandait ça, je l'ai convaincue que comme l'affichage de l'ensemble des vignettes sur une même page ne prenait pas plus de temps qu'en afficher 20, les visiteurs du site ne seraient pas pénalisés si j'adoptais cette solution.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 3 visiteur(s)