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
    AbsurdePhoton

    Merci beaucoup pour ce plugin qui génère automatiquement un effet « lightbox » sur les images :)

    Je l’ai utilisé couplé à un script php qui me permet de construire ma galerie en incluant automatiquement un filigrane et des données exif dans mes images. Il a suffi d’ajouter 3 petits tags dans chaque image et ça fonctionne à merveille !

    C’est tellement facile, j’ai passé plus de temps à lire la présente page qu’à mettre en œuvre le plugin lui-même, c’est pour dire !

    Si vous voulez un exemple, ouvrez n’importe quelle galerie sur mon site : https://www.absurdephoton.fr/-Galeries-

    • AbsurdePhoton

      Juste un petit bémol : j’ai découvert que le titre de l’image se mettait dans la balise « title »... et en faisant ça mon texte n’est pas centré, mais décalé vers la gauche.

      Où faut-il modifier cela ? dans le CSS je suppose ?

    Répondre à ce message

  • 3
    DébutantSPIP

    Bonjour,

    On fait comment pour une utilisation normale du plugin ? Le test est concluant sur mon site :

    spip.php?page=public/demo_photoswipe

    Mais j’ai fait plein d’essais avec différentes syntaxes SPIP, je n’arrive pas à faire fonctionner !
    Dans la documentation, vous n’expliquez rien sur le syntaxe SPIP précise à utiliser, à part le fameux sélecteur...

    img[data-photo], a[type]

    et puis débrouillez-vous...
    Merci par avance.

    • Salut,

      On fait comment pour une utilisation normale du plugin ?

      C’est quoi une utilisation normale ? Tu souhaites utiliser le plugin sur quelle partie de tes squelettes ?

      Tu peux avantageusement t’inspirer du code fourni dans l’exemple pour l’adapter à la boucle du portfolio si c’est bien ce que veux faire. La partie importante est l’ajout des attributs data- comme expliqué plus haut.

    • Je comprend tout a fait ce que veux dire DébutantSPIP, a propos de la syntaxe.
      Comme sur SPIP quand on téléverse une image il y a souvent ces 3 caractéristiques de l’image : <image22340|left>, <image2814210|center>, <image20|right> où l’on peut utilisé le numéro derrière « image » pour l’associé a un mot-clé qui permettra d’affiché la galerie sur le site (par exemple : pour des plugins comme nivo slider on le mot clé c’est : nivoslider2345).
      le mot-clé "nivoslider" associé a un numéro "3453" (de la photo ou autre).

      Alors pour en revenir a ce que "DébutantSPIP" voulais dire ; c’est quoi la syntaxe ou encore LE MOT-CLÉ pour l’utilisation du plugin sur SPIP ?

    • Bonjour,
      Comment afficher le descriptif en plus du titre à l’affichage de l’image ?
      Merci pour ce plugin.

    Répondre à ce message

  • bonjour,

    juste 3 questions :
    1- quelle est l’utilité du filtre photoswipe_preparer (qui est appelé par post_propre aussi) ?
    2- pourquoi insérer l’initialisation de photoswipe en « inline » dans le head de la page ? Et pourquoi ne pas mettre ce bout de code dans un fichier js spécifique ?
    3- pourquoi insérer le code html nécessaire à photoswipe en js, un modèle html ne serait pas mieux (plus souple) ? et d’ailleurs, le développeur dit justement dans sa doc : « You might ask, why PhotoSwipe doesn’t add this code automatically via JS, reason is simple – just to save file size, in case if you need some modification of layout. » ;-)

    merci pour les réponses.
    christophe

    Répondre à ce message

  • 1

    Ce plugin est génial ! Merci à vous !
    Je cherche juste à obtenir une vignette grossissante comme c’est le cas avec la démo officielle du site, lors d’un clic sur une image celle-ci s’anime pour s’agrandir complètement.
    Avec le plugin actuellement nous avons un passage au noir lors du clic, comme si la photo était manquante.
    Ce qui me laisse peut-être penser que peut-être cela provient du manque de format d’images ’medium’ passé en data sur la démo.
    Quand j’ai le temps je teste si cela vient de ça, si oui on pourrait améliorer le code du modele doc.html avec un format intermédiaire.

    • Le fameux espace noir ou devrait se trouver une petite photo lors du zoom à une classe css comme ça je pense (à vérifier surement dans le code du plugin)

      .pswp__img--placeholder--blank 

    Répondre à ce message

  • 2

    Bonjour, je découvre avec plaisir ce plugin qui me satisfait.
    Merci pour cette contribution à l’écureuil.
    Comment afficher des vignettes qui ne se touchent pas (il n’y a pas d’espace entre celle du dessus et celle du dessous alors que pour la droite et la gauche, elle sont séparées) ?
    Est ce que c’est du ressort de la css du plugin ou de ma feuille de style ?
    Comme je penche pour la première hypothèse, je poste ici.
    Merci et bonne soirée

    • Je me réponds :
      j’ai remplacé mon portfolio qui ne sert pas sur mon site photos aquarelles,
      la vignette étant interprétée comme un lien, la surcharge de la feuille perso.css suffit.
      Pour moi c’est :

      /* Liens images */
      a img
      margin:5px ;

      ,testé en local, bientôt en ligne

      Encore merci.

    • En ligne ici sur le portfolio :

      http://imagesetpeche.free.fr/?Plage-surf

    Répondre à ce message

  • Bonjour,

    Est-ce que l’exploitation de l’attribut data-author (avec la balise #CREDITS) est envisageable ?
    Je n’ai pas de souci pour le remplir mais je ne sais pas le ressortir dans la lightbox (comme sur la démo sur le site photoswipe.com)

    Je me base sur le code de la démo spip pour construire ma galerie.

    Merci !

    Répondre à ce message

  • Merci pour ce super plugin.

    Quelqu’un a t-il travaillé sur une déclinaison sur les miniatures des albums ? Ainsi, quand on clique sur les miniatures des images d’un album, l’image agrandie se déploie en photoswipe ?

    Répondre à ce message

  • 3

    Une piste pour les moyens-débutants :

    un ajout de :

    data-photo-h='#HAUTEUR' data-photo-w='#LARGEUR' data-photo='#URL_DOCUMENT'

    dans les modeles doc.html et img.html
    dans la partie img :

    <img src='#GET{fichier}'  • <--- colle ici
    • Avec au début du fichier biensûr :

              [(#ENV{mode_force,#MODE}|=={image}|oui)
      	#SET{fichier,#URL_DOCUMENT}
      	#SET{width,#LARGEUR}
      	#SET{height,#HAUTEUR}
      	#SET{url,#ENV{lien}}
      ]
    • En fait, des modèles sont désormais fournis avec le plugin, un modèle avec figure et un en dl dt classique… il faudra les intégrer à la doc.

    • top, super pratique ce plugin ! merci !

    Répondre à ce message

  • 3

    Bonjour, et un grand merci pour vos contributions ;-) Cette visionneuse manquait !
    Une petite chose cependant :
    Dans un portfolio, la première image se positionne bien, mais pas les suivantes (taille > 2000px) ; en surchargeant photoswipe.css par :

    .pswp__img {
      position: absolute;
      left: 0;
      top: 0;
    }

    tout rentre dans l’ordre (manquait les positions left et top)...

    Encore bravo :)

    • J’ai aussi vu le problème mais je pense qu’y’a une manière de le régler moins bourrine. Regarde l’exemple du diplo : pas de top ou de left et ça décale pas. Faut encore trifouiller un peu pour trouver une solution plus propre…

    • Je retire : sur la diplo tous les exemples que j’ai sont à - de 2000px donc peut être que c’est pareil. Mais je pense tout de même qu’il y a une meilleure solution.

    • Ok donc je pense mal : j’ai regardé dans l’actuel fichier css du projet sur Github, et à côté d’un certain nombre de changements, y’a aussi ces top : 0 et left : 0 sur .pswp__img. Donc tu avais parfaitement raison. Mea culpa.

    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