Cycle2

La seconde version de la librairie Javascript « jQuery Cycle », qui permet de produire des diaporamas, se nomme « Cycle2 » : http://jquery.malsup.com/cycle2/.

Voici cette nouvelle librairie mise en plugin pour SPIP.

Si vous utilisez déjà « jQuery Cycle », vous pouvez le garder tel qu’il est. Cette version est à considérer comme un nouveau diaporama.

Bien que les modèles et certains paramètres aient été conservés pour tenter de préserver une certaine compatibilité, le rendu n’est pas assuré entre la version 2 et cette version 3.

Le principal avantage de cette nouvelle version : l’affichage est adapté aux différentes largeurs d’écrans (responsive design) selon l’interface du site.

Il est nécessaire d’utiliser un squelette qui respecte la norme HTML5.

Pour une utilisation courante, le diaporama (slider pour les anglophones) s’insère dans les textes par le modèle <articleN|cycle> où « N » est le numéro de l’article dont on veut afficher les images.

Pour la compatibilité avec le plugin « jQuery Cycle » le modèle <sjcycleN> est tout à fait fonctionnel. La différence est que ce dernier n’affiche les images de l’article « N » que lorsqu’il est inclus dans l’article « N » lui-même.

Paramétrage général

Si un paramètre de la librairie a été implémenté, il l’a été fidèlement, pour rester dans une logique simple par rapport à Cycle2. On retrouve toute la documentation de référence ici : http://jquery.malsup.com/cycle2/api/.

Par exemple : data-cycle-random=true est un paramétrage du plugin d’origine qui fait tourner les images dans un ordre aléatoire. Ce paramètre est transposé dans le plugin SPIP, et on lui donne une valeur à l’insertion du modèle comme ceci : <articleN|cycle|random=true>.

Si le paramétrage général du plugin prévoit déjà l’ordre aléatoire, toutes les insertions de <articleN|cycle> joueront le diaporama dans un ordre aléatoire. Mais dans ce cas, il est aussi possible d’insérer un diaporama sans ce paramètre avec l’écriture <articleN|cycle|random=false>-

La page de configuration (dans l’administration de SPIP, une fois le plugin installé comme les autres, se rendre dans « Squelettes > Cycle2 », accès limité aux webmestres du site) offre un certains nombre d’options qui s’appliqueront à toutes les inclusions du modèle <articleN|cycle> :

  • Largeur maximum (par défaut 640) : toutes les images seront retaillées en largeur à cette valeur, en pixels. Les diaporamas étant en taille proportionnelle, ils s’adapteront à la largeur définie par l’interface du site, mais dans la limite définie ici.
    • |largeurmax=350
  • Hauteur maximum : en laissant le champ vide, les images seront toujours à la largeur maximum possible. Sinon toutes les images seront retaillées en hauteur à cette valeur, en pixels. Si la largeur de l’image n’est pas suffisante, la couleur de fond configurée sera visible. La valeur de couleur de fond « transparent » rendra par contre un fond blanc.
    • |hauteurmax=240
  • Hauteur automatique : Choisissez ici la façon dont est déterminée la hauteur du diaporama. Par défaut (le champ vide), la hauteur de la première image sert de valeur, « calc » utilisera la hauteur de la plus haute image, et « container » ajustera la hauteur du diaporama à la hauteur de l’image courante. Il est possible de forcer le ratio hauteur/largeur avec une double valeur, par exemple « 600:400 ». La valeur « false » empêchera le script de gérer la hauteur automatiquement.
    • |autoheight=600:400 ou |autoheight=container
  • Temps d’affichage pour chaque image (en millisecondes) : choisir « 0 » pour faire un diaporama manuel (cf les boutons « précédent » et « suivant » pour activer le défilement manuel).
    • |timeout=4000
  • Temps de transition entre chaque image (en millisecondes)
    • |speed=1000
  • Temps d’attente : Temps d’attente avant le départ du diaporama (en millisecondes).
    • |delay=6000
  • Effet de transition : voir les exemples en ligne - fade - fadeout - scrollHorz - scrollVert - flipHorz - flipVert - shuffle - tileSlide - tileBlind - carousel - none
    • exemple : |fx=scrollHorz
    • pour |fx=tileSlide et |fx=tileBlind, option supplémentaire pour jouer l’animation verticalement
    • pour |fx=carousel, options supplémentaires pour :
      • choisir le nombre de diapositives affichées simultanément (carousel-visible) : |carouselvisible=3
      • le décalage (en pixels) de la première diapositive (carousel-offset) : |carouseloffset=30
      • définir la dimension des vignettes. Largeur (carousel horizontal) ou hauteur (carousel vertical) d’une diapositive (carousel-slide-dimension) : |carouselslidedimension=130
      • jouer le déplacement verticalement (carousel-vertical) : |carouselvertical=true ou |carouselvertical=false
      • adapter le carousel à la mise en page, seulement si horizontal (carousel-fluid) : |carouselfluid=true ou |carouselfluid=false
  • À l’envers : Joue le diaporama à rebours :
    • |reverse=true ou |reverse=false
  • Synchronisation des animations, l’arrivée d’une image est simultanée avec le départ de la précédente :
    • |sync=true ou |sync=false
  • Pause au survol : |pauseonhover=true ou |pauseonhover=false
  • Message lors de la pause au survol, laisser vide pour ne rien afficher :
    • |pauseonhovercontent=en pause
  • Ordre aléatoire :
    • |random=true ou |random=false
  • Bouton « suivant » : cibler un bloc html par sa classe ou son identifiant. Par défaut « .cycle-next » place une flèche à droite au survol de l’image. [1] :
    • |next=.cycle-next
  • Bouton « précédent » : cibler un bloc html par sa classe ou son identifiant. Par défaut « .cycle-prev » place une flèche à gauche au survol de l’image. [1] :
    • |prev=.cycle-prev
  • En boucle, à propos des boutons « précédent » et « suivant » : à la fin du diaporama, ne pas revenir au début, ou bien au début, ne pas suivre à la fin (n’empêche pas le diaporama automatique de tourner en continu) :
    • |allowwrap=true ou |allowwrap=false
  • Départ arrêté :
    • |paused=true ou |paused=false
  • Pagination : cibler un bloc html qui contiendra la pagination en nommant sa classe ou son identifiant css. Par défaut « .cycle-pager » place les boutons par-dessus l’image. [1] :
    • |pager=.cycle-pager
  • Afficher une légende pour chaque image [1]. Par défaut « .cycle-caption » :
    • |caption=.cycle-caption. Il est possible de choisir le contenu de cette légende (cf la documentation) :
    • Afficher le décompte/le total : par défaut
    • Afficher le titre du document : |captiontemplate="{{alt}}"
    • Sur-mesure : |captiontemplate="images {{slideNum}} sur {{slideCount}}"
    • Sur-mesure : |captiontemplate=image {{slideNum}} : {{cycleTitle}} {{cycleDesc}}
  • Afficher une seconde légende en surimpression [1], un calque noir/transparent sur le bas de l’image pour afficher une légende avec Titre et Description de l’image :
    • |overlay=.cycle-overlay
  • Format de la légende en surimpression, par défaut le titre et la description de l’image, vous pouvez personnaliser le contenu suivant les exemples :
    • |overlaytemplate="<span class=left>&nbsp;<br>{{slideNum}} / {{slideCount}}</span>{{date}} - {{title}}<br>{{desc}}"
  • Choisir une couleur de fond, une valeur de couleur hexadécimale avec le « # », ex « #C5E41C ». La valeur « transparent » rétabli la transparence. :
    • |backgroundcolor=#b5b5b5
    • en installant le plugin Palette vous pourrez piquer la couleur sur une palette.

Paramètres tooltip et mediabox

  • Info au survol avec Tooltip : peut être surchargé lors de l’inclusion avec |tooltip=oui ou |tooltip=non
  • Afficher les caractéristiques techniques de l’image : peut être surchargé lors de l’inclusion avec |tooltip_carac=oui ou |tooltip_carac=non
  • Mediabox : ouvre l’image d’origine suivant vos paramétrages de la mediabox (dans l’administration : Squelettes > Boîte multimédia. Peut être surchargé lors de l’inclusion avec |mediabox=oui ou |mediabox=non

Inclure le modèle <articleN|cycle>

On l’a déjà vu plus haut, pour une utilisation courante, le diaporama s’insère dans les textes par le modèle <articleN|cycle> où « N » est le numéro de l’article dont on veut afficher les images. On peut insérer ce modèle dans n’importe quel autre article que l’article N lui-même.

Chaque paramètre de la configuration générale est actif et en même temps corrigeable lors de l’inclusion. (cf. plus haut pour chacun d’eux)
En dehors de ces paramètres généraux, voici quelques paramètres optionnels pour ce modèle :

Alignement dans le texte

Comme un autre document, on peut aligner le diaporama : |left, |right ou |center comme ceci <articleN|cycle|left>
S’il n’est pas précisé, l’alignement est « centré ». L’effet rendu dépendra de la valeur saisie pour le paramètre « Largeur maximum » et de l’interface du site. L’alignement flottant est intéressant si le diaporama est significativement moins large que le texte lui-même.


Choisir les images
<articleN|cycle|docs=1,5> fait tourner les images 1 et 5 de l’article « N » en diaporama, dans l’ordre du titre des images.
« N » n’est pas obligatoire. On peut maintenant écrire <article|cycle|docs=1,2,3,6,9> pour demander les images 1,2,3,6,9 même si elles sont liées à des articles différents, voir des rubriques ou d’autres objets.

Attention : dans le cas d’une utilisation dans un squelette, l’écriture diffère :
[(#MODELE{article_cycle,id_article=N,docs=21|22|24})]
ou
[(#MODELE{article_cycle,docs=21|22|24})]

Plusieurs diaporamas par page
On peut inclure plusieurs diaporamas par page de la même façon :
<articleX|cycle>
<articleY|cycle>
<articleZ|cycle>

Dans ce cas, si les boutons « suivant/précédent » sont activés dans la configuration générale, ils actionneront tous les diaporamas en même temps. Pour corriger cet effet, il est préférable de personnaliser chaque diaporama comme ceci :

<articleN|cycle|prev=.pre1|next=.suiv1>
<a href="#" class="pre1">précédent</a>
<a href="#" class="suiv1">suivant</a>
<articleN|cycle|prev=.pre2|next=.suiv2>
<a href="#" class="pre2">précédent</a>
<a href="#" class="suiv2">suivant</a>
<articleN|cycle|prev=.pre3|next=.suiv3>
<a href="#" class="pre3">précédent</a>
<a href="#" class="suiv3">suivant</a>

Encore faut-il ensuite styler ces balises HTML aux couleurs de votre site...

Paramètre « lien_parent »
|lien_parent=oui
Crée un lien sur chaque image vers l’objet auquel elle est liée, que ce soit les images d’un seul article, ou bien sélectionnées individuellement |docs=1,2,3,6,9. Si une image est liée à plusieurs objets, ce sera le dernier en date qui sera utilisé.

Paramètres « lien_article » et « forcer_lien_reference »

<articleN|cycle|lien_article=XXX|forcer_lien_reference=oui>


Permet de poser un lien sur le diaporama vers un article, celui qui contient les images ou un autre. Dans le cas d’un site multilingue, fournir l’id de l’article de référence, le modèle se charge de trouver l’id de l’article correspondant à la langue du visiteur. Cette option désactive l’ouverture vers une box. Si l’article n’existe pas dans la langue courante on met ou pas un lien vers l’article de référence suivant que le paramètre forcer_lien_reference soit défini ou pas.

Exemple dans le cas d’une insertion dans un squelette sur une page sommaire :
-  [(#MODELE{article_cycle,id_article=16,lien_article=171})] : diaporama sur toutes les images de l’article 16 avec un lien vers l’article 171 (ou sa traduction)
-  

[(#MODELE{article_cycle,id_article=16,lien_article=171|forcer_lien_reference=oui})]

 : c’est pareil sauf que le lien ne se fera pas sur la traduction même si elle existe.


Paramètres « liens_individuels »
<articleN|cycle|liens_individuels=article>
Permet de poser un lien sur chaque image du diaporama vers un article, une rubrique ou un site externe suivant la valeur du paramètre (article, rubrique, externe). Si la valeur vaut article ou rubrique, l’identifiant de l’objet est pris dans le champ descriptif de chaque image. Si la valeur vaut externe, le champ descriptif de chaque image doit contenir un lien http. Cette option désactive l’ouverture vers une box.

Exemple :
-  <article16|cycle|center|liens_individuels=article> : diaporama sur toutes les images de l’article 16 avec sur chaque image un lien vers l’article dont l’identifiant est contenu dans le descriptif de l’image.

Paramètre « limite » :
<articleN|cycle|limite=3>
Sortira les trois premières images de l’article « N » dans le diaporama.

Diaporama des images d’une rubrique

Le modèle rubrique_cycle.html est fait pour ça.
<rubriqueN|cycle> où « N » est l’identifiant de la rubrique concernée.
Pour compatibilité, le modèle sjcycle_rubrique.html est conservé et permet d’inclure <sjcycle6|rubrique>

Diaporama des sites

Le modèle sjcycle_sites.html est conservé et transposé pour cette version du plugin.

Diaporama des albums

Le plugins Albums permet de regrouper des documents.
L’inclusion de <albumN|cycle> affiche un diaporama des images de l’album N.

Notes

[1Peut aussi prendre la valeur de la classe ou de l’identifiant (id) de n’importe quelle balise HTML... astuce : <articleN|cycle|next=.suivante><a href="#" class="suivante">avance rapide</a> dans un texte placera le bouton d’avance rapide sous l’image.

Discussion

49 discussions

  • 2

    La nouvelle version 3.5 ne fonctionne pas sur notre site en SPIP 3.2.11 [24473], alors que votre version 3.4.21 est OK => https://laccreteil.fr

    Répondre à ce message

  • Bonjour

    Je viens de m’apercevoir que le plugin cycle2 qui fonctionne très bien sur spip3.2 ne fonctionne plus sur spip4

    Ceci avec le même hébergeur et le mêmes réglages.

    Répondre à ce message

  • 2

    bonjour, avez vous une piste pour pouvoir utilisé ce plugin avec la version 4 de spip
    Merci.

    • Tu peux forcer la possibilité d’utiliser des plugins pas mis à jour av ec la constante _DEV_VERSION_SPIP_COMPAT.

      Je sais plus dans quel sens elle marche mais ajoute ceci dns ton fichier mes_options.php :

      <?php
      define('_DEV_VERSION_SPIP_COMPAT', '4.0.0');

      Ou bien sinon ceci

      <?php
      define('_DEV_VERSION_SPIP_COMPAT', '3.2.0');
    • Merci Jluc ( avec beaucoup de retard)

    Répondre à ce message

  • Bonjour
    J’utilise ce plugin avec un nouveau site (spip 3.2) et un thème html5up (Spectral)
    J’ai repris d’anciens articles et rubriques contenant cycle2 pour des images en album.

    J’ai été surpris que dans une rubrique,
    -  le modèle <albumN|cycle> permet bien d’afficher les images de l’album
    mais que dans un article (de cette meme rubrique)
    -  le modèle <albumN|cycle> n’affiche pas les images de ce même album

    le mode inclure indique dans les 2 cas

    plugins/auto/sjcycle/v3.4.20/modeles/album_cycle.html
    plugins/auto/sjcycle/v3.4.20/modeles/article_cycle.html

    mais seul dans la rubrique les images s’affichent

    Je ne me souviens plus en spip 2.X comment se comportait de telles configs,

    que dois-je en penser ?
    Merci

    Répondre à ce message

  • 1

    bonjour,
    j’aime bien ce plugin .
    J’ai un soucis car je veux mettre les explications de la description , alors j’ai mis le code :

    <article402|cycle|right|docs=458,459,665|largeurmax=400|overlay=.cycle-overlay>

    mais le texte assez long , déborde sur l’image : comment faire pour que cela s’affiche en dessous svp ?
    merci

    • Bonsoir,
      je crois que ce n’est pas très bien adapté aux longs textes, la situation est qu’on cherche à utiliser le maximum d’espace pour l’image, mais avec du texte, on peut plus calibrer l’espace de la même manière.
      Sinon il y a une adaptation de la mediabox de SPIP qui permet de mettre du texte par-dessus l’image, et on peut masquer ce texte pour voir l’image entière, ou le réafficher pour le lire : https://contrib.spip.net/Mediabox-avec-texte

    Répondre à ce message

  • 8

    J’ai un site sous ESCAL et je viens d’installer Cycle2 (à la place de nivoslider). Je suis plutôt satisfait de Cycle2, mais j’ai cependant rencontré un problème : j’utilise le sommaire automatique et les titres des images du diaporama apparaissent dans le sommaire (au niveau 2 apparemment). Ai-je fait une erreur de paramétrage ou y a-t-il une autre raison ? Merci d’avance pour votre aide.

    • spipfactory

      Bonsoir,

      est il possible d’avoir l’url du site.
      j’aimerais pouvoir essayé de reproduire le bug décrit sur la plateforme escalienne

      merci

    • Bonjour
      Voici l’URL concernée : https://050mariannedebequet.spipfactory.fr
      C’est dans l’article 18 (Courrier pour l’étranger) que j’ai le problème. A noter que j’ai choisi l’option « insertion dans le texte à la demande » pour ne plus avoir un sommaire de plusieurs dizaines de lignes dans l’article en question.
      Bernard

    • Hello

      As-tu résolu ton souci ?

    • Non, rien de nouveau. Je ne comprends pas la cause de ce dysfonctionnement.

    • Peux-tu remettre le sommaire et reproduire le bug que j’y jette un œil ?

    • Jean-Christophe
      J’ai rajouté en tête de l’article Courrier pour l’étranger, et on retrouve le problème signalé.
      Bernard

    • Avec quel plugin le sommaire est-il ajouté ?
      S’il s’agit de « sommaire automatique » ou de la lame correspondante du couteau suisse, tu peux choisir de n’afficher que le premier niveau.

    • J’utilise « sommaire automatique ». Effectivement, en relisant la doc du plugin, j’ai vu qu’on pouvait limiter à un niveau. Mais ce sera le cas pour tous les articles alors ? Je vais regarder cela de plus près.

    Répondre à ce message

  • 1

    Bonjour,
    y a-t-il une astuce pour panacher les effets de transition ?

    • Bonjour,
      je ne crois pas que ce soit possible simplement. Sur la page de démonstration les transitions sont toutes présentées séparément, ou sinon il faudrait peut-être faire une suite de plusieurs diaporamas insérés les uns dans les autres, mais c’est bien compliqué juste pour ça il me semble : http://jquery.malsup.com/cycle2/demo/nested.php

    Répondre à ce message

  • 2

    Bonjour,

    J’utilise depuis longtemps le plugin pour afficher des diapo d’article.

    aujourd’hui j’ai eu besoin de faire un diapo sur une rubrique.

    j’ai voulu utiliser dans mon squelette :

    [(#MODELErubrique_cycle,id_rubrique=3)]

    Ça n’a pas fonctionné (rien ne s’affiche).

    Qu’à celà ne tienne, j’ai fini par tester directement dans un article :
    <rubrique3|cycle>

    et là, surprise rien ne s’affiche non plus.

    Où peut être le problème ?

    Merci de votre aide.

    LaLy

    • Bonjour,
      le modèle rubrique_cycle affiche normalement les documents liés à la rubrique... sinon il faut peut-être utiliser le modèle article_cycle en ciblant les documents à afficher avec le paramètre docs=1,2,3,4 ?

    • JE viens de comprendre mon problème.
      J’ai mal compris l’utilisation du modèle rubrique.
      Je pensais qu’il permettait d’afficher tous les documents inclus dans une rubrique, articles compris.
      Ce qui n’est pas le cas, ce sont juste les documents attachés directement à une rubrique.

      Je vais devoir trouver une autre solution.

      Excusez pour le dérangement.

    Répondre à ce message

  • 1
    mel_lariviere

    je n’ai aucun problème, c’est juste pour remercier l’auteur de cet addon.
    j’ai galéré mais au final, c’est super :)
    merci encore

    • :o)
      La galère, c’était pour comprendre comment inclure le diaporama et utiliser les paramètres ?

    Répondre à ce message

  • 1

    Bonjour
    J’ai une page sur laquelle je liste plusieurs diaporamas photos à l’aide du modele album_cycle avec paramètres :

    (#MODELE{album_cycle, hauteurmax=80, fx=carousel, paused=true, allowwrap=false})

    Les réglages et paramètres font que les photos sont affichées par vignettes placées les unes à côté des autres horizontalement.
    Ce script est placé dans un INCLURE avec paramètre self=#SELF

    <INCLURE{fond=inc/mon_inclure}{lang}{self=#SELF}>

    Pas de pb jusque là.

    Comme il y a de nombreux albums à afficher, je les ai placés les uns au dessous des autres avec une pagination pour voir les suivants sur d’autres pages.
    Tout va bien tant que je laisse le paramètre SELF au niveau de l’appel de l’INCLURE.
    Par contre, si je veux une pagination ajax et que je remplace SELF par

    {env}{ajax}

    le style du modèle n’est plus respecté sur la page appelée. Comme si les paramètres du modèle ne suivaient pas dans la pagination ajax. Les vignettes des albums sont affichées verticalement en colonnes et non plus horizontalement.
    Avez-vous déjà rencontré ce PB ?
    Merci d’avance pour vos réponses...

    • Bonjour,
      l’inclure chargé en ajax n’arrive pas dans la page avec le javascript ni les styles nécessaires au diaporama. Il faudrait que les déclarations ajoutées par le plugin dans le head soit aussi présentes dans l’inclure lui-même : un lien vers les styles et un lien vers le javascript.
      ... à tester

    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