Photoswipe

Une lightbox javascript responsive.

PhotoSwipe est une boîte multimédia — comme la Mediabox installée en série avec SPIP — qui permet de zoomer à la taille réelle des images et qui gère intelligemment les légendes. Le plugin est basé sur la librairie jQuery éponyme.

Exemple d’utilisation sur le site du Monde Diplomatique

Consulter le site du projet PhotoSwipe et sa documentation
http://photoswipe.com/

Présentation

Comme la plupart des « box » multimedia, PhotoSwipe permet, lorsqu’on clique sur une image, de l’agrandir dans tout l’espace disponible de la fenêtre. Ce système désormais omniprésent trouve ses limites quand il s’agit d’afficher une image très large ou très haute, ou encore très complexe : elle reste alors difficilement lisible. PhotoSwipe résoud le problème très simplement : un second clic affiche l’image à 100 %.

Le plugin gère aussi efficacement les légendes, y compris les très longues ; elles s’affichent en surimpression sur l’image au second clic.

Si la plupart des « box » sont faciles à utiliser, PhotoSwipe est un peu plus exigeant. Pas seulement à cause de ses avantages, mais aussi parce qu’il est très ouvert et permet un grand nombre de configuration.

Ce portage en plugin SPIP est assez rudimentaire.

Le plugin impose un balisage spécifique des images, même s’il est parfaitement standard. Il faut leur ajouter trois attributs : l’URL de l’image à 100%, sa largeur et sa hauteur.

Par défaut, et nous avons conservé cette syntaxe, ils se nomment respectivement :

  • data-photo,
  • data-photo-w
  • data-photo-h

PhotoSwipe gère très intelligemment les images mais n’est pas adapté à l’affichage d’autres médias, ou d’autres boites modales : Mediabox sera plus adapté à ces usages. D’ailleurs il est possible de faire cohabiter les deux sur un même site.

Installation

Après activation du plugin, dans le panel de configuration, vous pouvez choisir quelle expression HTML déclenchera la galerie PhotoSwipe.

Par défaut, le sélecteur est img[data-photo], a[type]

Une page démo permet de tester le plugin
spip.php?page=public/demo_photoswipe

Voici le code principal

<div class="demo">
<BOUCLE_galerie(DOCUMENTS){extension=jpg}{!par date}{0,5}{largeur>400}{statut in prop,publie}>
        <a href="#URL_DOCUMENT" onclick="return false;">
              [(#FICHIER|image_reduire{400,0}
                 |inserer_attribut{data-photo,#URL_DOCUMENT}
                 |inserer_attribut{data-photo-h,#HAUTEUR}
                 |inserer_attribut{data-photo-w,#LARGEUR}
                 |inserer_attribut{alt,#TITRE}
                 |inserer_attribut{title,#TITRE}
                 )]
	    </a>
</BOUCLE_galerie>
</div>

La page liste donc les dernières images .jpg du site qui ont de plus 400 pixels de large.
On crée des vignettes des images sur lesquelles, on ajoute les attributs suivants pour créer la galerie photoswipe :

data-photo URL de la photo en grande résolution
data-photo-h Hauteur de la photo
data-photo-w Largeur de la photo
data-photo-title Titre de la photo

Utilisation avec des images dont on ignore les dimensions

Depuis la version 0.5.0, il est possible d’utiliser le plugin sur des images dont on ignore les dimensions. Cela peut s’avérer utile quand on souhaite afficher des images distantes par exemple. Pour cela, il faut poser les attributs nécessaires au plugin sur le lien englobant la vignette de l’image, et passer la valeur 0 pour la largeur et la hauteur, exemple :

#SET{distant,https://www.geodiversite.net/IMG/jpg/img_4560-1600x1067.jpg}
[<a href="#GET{distant}" data-photo="#GET{distant}" data-photo-h="0" data-photo-w="0" type="image/jpeg">
	(#GET{distant}|image_reduire{0,200})
</a>]

Discussion

29 discussions

  • 1
    Patrick

    Bonjour,
    J’utilise photoswipe depuis quelques temps déjà, et l’ai adapté à mes besoins.
    Comment le déclencher comme ici avec la mediabox ?

    <a href="#VALEUR" class='mediabox' type="#MIME_TYPE" rel="#ENV{dir}">(#VALEUR|image_passe_partout{250,250} |image_recadre{250,250,-,focus-center}|inserer_attribut{title,#VALEUR|basename})</a>

    Par quoi remplacer

    class='mediabox'

    pour lancer le plugin ?

    • Toujours pas d’idée à propos de cette question ?
      Je précise que j’utilise déjà photswipe pour mon portfolio, et que ça marche (il y a plusieurs liens sur cette page).
      Pour toute réponse, merci

    Répondre à ce message

  • Bonjour,
    J’utilise ce plugin depuis quelque temps avec bonheur.
    J’ai voulu tester en même temps le plugin « cibloc ».
    J’ai constaté alors un décalage des photos sur la gauche, avec déformation, lors du zoom.
    Une fois le plugin « cibloc » désactivé, tout est rentré dans l’ordre.
    Je voulais signaler le fait ici pour information.
    Encore merci pour ce plugin.

    Répondre à ce message

  • 3

    Bonjour et merci pour ce chouette plugin,

    Spip 3.2.1, Photoswipe 0.4.0

    Sur un site en dev. local, il marche très bien pour l’affichage en galerie des images en portfolio (vu=non) (surcharge de documents.html) mais il ne fonctionne pas sur les images placées dans le texte selon le modele <docXXX|left>... Il n’y a rien, il n’est pas pris en compte..

    La Boîte Multimedia est « désactivée sur le site public », je n’ai plus de surcharges actives (squelettes/modeles/) des fichiers ’doc.html’, ’image.html’ ou ’img.html’...
    Je ne comprends pas.. je cherche, cherche mais sans trouver...

    Il marchait bien ceci dit lorsque j’avais surchargé le ’doc.html’ de la dist (avant de chercher à utiliser le fichier du plugin) en injectant les attributs nécessaires à photoswipe dans la balise img. Mais j’avais alors le problème qu’un clic sur une vignette d’article déclenchait une galerie des images du site ! (il s’agit en effet d’un site utilisant fullpage.js donc avec une architecture en sections et slides chargés). Il n’y a donc pas de conflit avec Fullpage et le fonctionnement spip n’est pas modifié... alors pige pô...)

    Pourriez-vous me donner un coup de main ?
    Merci !

    • Bonjour,
      Chez moi, ici, le camion a été placé en docxxx dans le texte et embarque la galerie du portfolio.

      http://imagesetpeche.free.fr/?Surf-Trip-Espagne

      Même chose avec imgxxx

    • Bonjour,
      Un petit ’up’ .. car je galère et que j’aimerais bien que cela fonctionne...

      Donc Photoswipe marche pour les images du portfolio mais pas pour les images utilisant le modèle <docXXX>, que ce soit avec ou sans surcharge du doc.html :

      -  sans surcharge (donc rien dans mon squelettes/modeles), aucune data du plugin n’est insérée dans la balise <img />... située dans un <dl><dt> comme d’hab.

      -  avec surcharge, en essayant diverses choses, aussi bien à partir des fichiers doc _standard ou _figure :
      puisque le simple placement d’un doc.html du plugin dans mon dossier modeles produis en effet des erreurs, j’ai suivi la méthode fournie (baroug.net/Plugin-multimedia-et-modele-doc). Cela supprime bien le conflit mais alors un certain nombre de valeurs deviennent inaccessibles : les variables ’vraielargeur’ et ’vraiehauteur’, #TITRE, #DESCRIPTIF et #CREDIT sont VIDES (mais pourquoi...?)
      J’ai cherché.. essayé même de récolter/charger les variables dans une pré-boucle mais ça remet le système en erreur...

      Une piste ?..
      Merci

    • Pour apporter une pierre, il semble effectivement que le plugin desactive en quelque sorte l’affiche des « images » si on les intègre dans un modèle au lieu d’un modèle <imgxxx>. Je viens de faire le test (sans aucun réglage après l’installation du plugin Photoswipe) et effectivement, lorsque pour un pdf (associé à son icône, donc une « pseudo-image ») j’inscris <docxxx> j’ai bien l’icône habituelle attendue et cliquable sur le fichier pdf. Si par contre j’utilise <imgxxx> (avec le même n° ID document) là rien ne s’affiche, alors qu’auparavant j’avais, en ayant installé un autre plugin (image responsive/media responsive), l’affichage de l’icône ET de la légende attribuée au fichier pdf. En somme, il faut réserver l’usage de <docxxx> aux fichiers qui ne sont pas des images, et utiliser systématiquement <imgxxx> pour tous les fichiers image. Ce plugin est vraiment très bien, et fonctionne sans encombre en association avec image responsive/media responsive (si l’image est grande, affichage dans la boîte Photoswipe avec 2e clic pour accéder à la taille maximale, et si l’image est plus petite, affichage dans la boîte Image responsive (« media ») avec sa légende comme habituellement ; s’il y a plusieurs images dans l’article (ou la rubrique), affichage des autres images dans la même boîte Photoswipe façon galerie). Merci pour la diffusion.

    Répondre à ce message

  • 2

    Bonjour,
    Je viens de consulter la page du Monde Diplo, et ça ne semble pas fonctionner...

    • De mon point de vue ça marche — mais ça ne démarre qu’à la deuxième photo, pas à la première.

    • Bonjour Fil,

      Est-ce que c’est parce que j’ai mis à jour Firefox (avec lequel j’avais testé la page du Monde Diplo) ? Tout est-il que ça marche maintenant au poil ! C’est un bien beau plugin, merci aux contributeurs !

    Répondre à ce message

  • 2

    Bonjour,
    Je n’utilise plus que Photoswipe.
    Pourquoi ne pas le placer parmi les plugins-dist ?
    Est il prévu d’y faire jouer des vidéos ?
    J’ai vu des exemples de galeries avec des vidéos en lien sur le site de support Guithub.
    Merci

    • Je ne peux répondre que pour plugin-dists : parce qu’on essaie de réduire les plugins dist au minimum, et parce que il n’a pas été jugée que cette galerie (plutôt qu’une autre) était indispensable au fonctionnement de SPIP.

      En general dans plugin-dists se trouvent des choses qui historiquement étaient dans le core de SPIP et qui ont été modularisés.

    • Merci, j’avais lu ailleurs que c’était prévu.
      Bonne journée

    Répondre à ce message

  • Bonjour et merci,
    Pourquoi ne pas placer ce plugin dans les plugins-dist ?
    J’ai pu voir des galeries avec des vidéos.
    Est il prévu de faire évoluer le plugin en ce sens ?

    Répondre à ce message

  • Bonjour,

    Deux petites questions : Photoswipe permet normalement l’utilisation de galeries différenciées grâce au gid dans l’url, avec l’option galleryUID dans le fichier photoswipe_insert, en l’occurence. Si on ajoute cette option, on doit récupérer l’info tel qu’on le voit en bas de cette page : http://photoswipe.com/documentation/getting-started.html

    avec galleryUID: galleryElement.getAttribute('data-pswp-uid');

    puis un

    for(var i = 0, l = galleryElements.length; i < l; i++) {
            galleryElements[i].setAttribute('data-pswp-uid', i+1);
            galleryElements[i].onclick = onThumbnailsClick;
        }

    pour placer les identifiants sur chaque galerie rencontrée dans la page.

    mais il semble que dans l’implémentation du plugin, il n’y a pas d’élément conteneur de la galerie photoswipe... j’ai quelques doutes sur comment y parvenir.

    Autre question : on peut normalement ouvrir directement la galerie quand on arrive sur une url de type https://www.monde-diplomatique.fr/mav/141/A/53141#&gid=1&pid=1

    Est-ce impossible avec ce plugin ?

    Merci beaucoup,

    Répondre à ce message

  • Bonjour,
    Photoswipe remplace la médiabox sur mon site, tout va bien, jusqu’aux tests sur petits écrans :
    les vignettes sont minuscules, à gauche et au mileu de la page.
    ICI par exemple : http://imagesetpeche.free.fr/?Surf-...
    Comment soigner ça ?

    Répondre à ce message

  • 5

    Bonjour,
    J’utilise déjà photoswipe en plugin pour mon portfolio comme ici http://imagesetpeche.free.fr/?Jardin par exemple.
    Comment peut on afficher le descriptif des images ?
    Merci

    • Bonjour,
      J’ai moi aussi changé les bornes et le plugin fonctionne à plein.
      J’ai tout de même un souci, la page ci dessus (message précédent) s’affiche bien jusqu’à la dimension ipad, mais il y a un bug pour la même page sur les téléphones.
      La page de demo fonctionne elle dans les deux cas.
      Pour vous qu’n est il ?
      S’agit il de mon squelettes ?
      Bonne journée

    • Après avoir remplacé le contenu de lib/photoswipe dans le plugin par
      photoswipe-ui-default.js
      photoswipe-ui-default.min.js
      photoswipe.css
      photoswipe.js
      photoswipe.min.js

      default-skin.css
      default-skin.png
      default-skin.svg
      preloader.gif
      pris sur le site de photoswipe aujourd’hui, cela semble fonctionner pour un iphone.
      Toutefois, la console (chrome f12) cherchait rien.gif pour l’image agrandie.
      Une fois réinjecté en racine du site, swipe s’est mis à fonctionner comme attendu.
      Une petite mise à jour à faire.
      Bonne journée

    • Je demande confirmation de cette imperssion...
      Merci

    • peux-tu l’ajouter directement dans le plugin sur la zone ? merci !

    • On fait comment pour ça ?

    Répondre à ce message

  • 4

    J’espère qu’on aura rapidement une version compatible 3.2, ce plugin est vraiment utile :-)

    • Salut,

      tu peux deja tester en modifiant les bornes dans paquet.xml et plugin.xml pour pouvoir activer le plugin et voir ce que cela donne. Si cela marche sans aucun bug cheztoi, alors on pourra le signaler aux autres utilisateurtrices

    • En effet j’ai testé ce matin en modifiant les bornes du fichier paquet.xml. ça semble fonctionner correctement mais j’ai pas fait de tests poussés.
      Ce serait quand même mieux une version officiellement compatible. :-)

    • En fait il n’y pas de personnes qui peut dire officiellement tel ou tel plugin est compatible, mais la communauté dans son ensemble.

      Donc si tu te sens de faire des tests poussés (lesquels) ? on pourra marquer officiellement comme compatibke

    • Bah le ou les personnes à l’origine du plugin sont peut-être plus à même que moi de dire si le plugin est entièrement compatible ou non (J’ai pas suivi le détail des modification de la 3.2, il y a peut-être des améliorations à apporter aux plugins).
      Sinon pour les tests, ce matin au boulot entre 2 dossiers j’ai mis à jour un projet de site Spip en v3.2. J’ai modifié le fichier paquet.xml pour pouvoir forcer l’activation du plugin, j’ai recalculer une page sur laquelle j’utilisais le plugin photoswipe et ça fonctionnait. Donc bon, est-ce que ça suffit à dire que le plugin est parfaitement compatible ?
      Je viens de tester la page demo, ça fonctionne également...

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom