Owl Carousel 2

Owl Carousel est un diaporama jQuery adaptable aux différentes tailles d’écran, qu’on peut actionner par glisser, il utilise CSS3 mais il est compatible avec les vieux navigateurs, et il est aussi paramétrable.
Le présent plugin permet d’utiliser facilement Owl Carousel dans SPIP.

Lien de référence : https://owlcarousel2.github.io/OwlCarousel2/

Installation

Comme tous les plugins.

Configuration

Vous pouvez activer l’insertion des styles et javascript du plugin dans l’espace public et dans l’espace privé de spip sur la page de configuration du plugin.

Exemples

Des exemples utilisables dans vos squelettes se trouvent dans le dossier « noisettes » du plugin. Ce répertoire est plus un outil pour squelette, et destiné plus particulièrement aux intégrateurs.
Les noisettes fournies peuvent servir de point de départ et ne conviendront certainement pas à tous les cas d’utilisation en l’état.
Il faut plus les considérer comme des extraits de code facilitant l’intégration à votre projet.

Modèle

Un modèle est tout prêt pour afficher les documents d’un article de type jpg, gif ou png dans un diaporama insérable de cette manière :
<articleX|owl>
où « X » est l’id de l’article, pour afficher toutes les images de cet article.
Quelques paramètres permettent de modifier quelques réglages, et se définissent de cette manière lors de l’inclusion du modèle :
<articleX|owl|parametre=valeur>


Paramètres

  • id-carousel=unikid : id unique du carousel, doit être renseigné si plusieurs carousels dans la même page.
  • caption=oui : afficher la description de l’image
  • dots=false (true par defaut) : affiche les points pour changer d’image
  • navigation=true (false par defaut) : afficher les boutons précédents/suivants
  • items=2 (1 par défaut) : pour afficher plusieurs images en même temps
  • margin=10 : pour ajouter une marge entre chaque image, en pixels
  • docs=1,2,3 : affiche uniquement les documents 1, 2 et 3. Dans ce cas, le numéro identifiant de l’article est optionnel, vous pouvez donc écrire <article|owl|docs=1,2,3> pour afficher ce diaporama n’importe où dans le site, tant que les documents existent dans la médiathèque
  • caption_css=monstyle : ajouter des css sur la description (par exemple : invisible)
  • autoHeight=true : pour que la hauteur soit adaptée à chaque diapositive
  • autoplay=true (false par défaut) : le carousel démarre automatiquement
  • autoplayHoverPause=true (false par défaut) : pause au survol en mode autoplay
  • autoplayTimeout=6500 (5000 par défaut, en milliseconde) : durée d’affichage d’une diapositive
  • lazyLoad=true (false par défaut) : ne charge que les images visibles pour optimiser le chargement.
  • animateIn= une classe css animation CSS3. par défaut seul fadeOut est proposé par le plugin.
  • animateOut= une classe css animation CSS3. par défaut seul fadeOut est proposé par le plugin.
  • URLhashListener=true : pour suivre le diaporama dans l’historique de navigation.

Discussion

11 discussions

  • 4

    Bonjour,

    De retour sur ce carousel, avec cette fois l’idée d’appeler les articles contenus dans une rubrique, j’en appelle donc à la noisette owlcarousel-selections_editoriales mais je n’arrive pas à l’adapter comme il faut, j’ai un retour d’erreur qui me dit :
    critère inconnu =
    sur la boucle _listSelection (de la ligne 29… 1re ligne du code adapté comme ci-dessous).

    Aucun résultat ne s’affiche d’ailleurs… J’appelle la noisette de la façon suivante sur le sommaire :

    <INCLURE{fond=noisettes/owlcarousel-selections_editoriales,
              objet=rubrique,
              id_objet=13,
              animateOut=fadeOut, env, ajax }/>

    Quelqu’un peut-il m’aider à trouver ce qui ne va pas ?

    <BOUCLE_listSelections(RUBRIQUES){identifiant=#GET{identifiant}}>
        <B_listContenus>
        <div class="rubrique js-cover-carousel owl-carousel owl-theme[ (#CHAMP_SQL{css}|attribut_html)]">
            <BOUCLE_listContenus(ARTICLES){id_rubrique}{par #GET{tri}}>
                <article  class="contenu[ (#CHAMP_SQL{css}|attribut_html)]">
                        [<div class="contenu-thumbnail">(#LOGO_ARTICLES)</div>]
                        <div class="contenu-content entry article hentry">
                            <div class="title entry-title">
                                [(#GET{link_title}|=={true}|oui)<a href="#URL"]
                                <h2[ class="(#EDIT{titre})"]>[(#TITRE)]</h2>
                                [(#GET{link_title}|=={true}|oui)</a>]
                            </div>
                            [<div class="descriptif [(#EDIT{descriptif}) ]entry-content">
                                (#DESCRIPTIF)
                            </div>][(#GET{link_title}|!={true}|oui)
                            <a href="#URL" class="#GET{link_class, cover-link}">
                                <span>#GET{link_txt, voir : #TITRE }</span>
                            </a>]
                        </div>
                </article>
            </BOUCLE_listContenus>
        </div>
    </B_listContenus>
    </BOUCLE_listSelections> 
    • Bonjour,

      Ceci devrait mieux fonctionner,
      si on souhaite afficher les articles d’une rubrique sous forme de carousel

      par exemple pour une noisette/modele a inclure, nommé
      owlcarousel-rubrique_articles

      <BOUCLE_kelRub(RUBRIQUES){id_rubrique=#ENV{id_rubrique}}>
          [<h2>(#TITRE)</h2>]
          <B_listArticles>
          <div[ id="(#ENV{id-carousel,owl-rub-art-#ID_RUBRIQUE})" ]class="rubrique owl-carousel owl-theme[ (#ENV{css}|attribut_html)]">
              <BOUCLE_listArticles(ARTICLES){id_rubrique}{par #ENV{tri}}>
                  <article class="contenu">
                      [<div class="contenu-thumbnail">(#LOGO_ARTICLE)</div>]
                      <div class="contenu-content">
                          <h2 class="title[ (#EDIT{titre})]">[(#TITRE)]</h2>
                          [<div class="descriptif[ (#EDIT{descriptif})]">
                              (#DESCRIPTIF)
                          </div>]
                          <a href="#URL_ARTICLE" class="btn">#TITRE</a>
                      </div>
                  </article>
              </BOUCLE_listArticles>
          </div>
      </B_listArticles>
      <script>
      jQuery(function($){
          $("[#(#ENV{id-carousel,owl-rub-art-#ID_RUBRIQUE})]").owlCarousel({
              [navigation : (#ENV{navigation,true}),]
              slideSpeed : 300,
              paginationSpeed : 400,
              items : 1[,
              autoplay :(#ENV{autoplay,false}),][
              autoplayHoverPause : (#ENV{autoplayHoverPause,false}),][
              lazyLoad : (#ENV{lazyLoad,false}),]
              navText : ["<:owlcarousel:prec:>","<:owlcarousel:suiv:>"]
          });
      });
      </script>
      </BOUCLE_kelRub>

      a appeler dans un squelette ainsi

      <INCLURE{fond=noisettes/owlcarousel-rubrique_articles,id_rubrique=7,env,ajax} />

      je corrige aussi la noisette à laquelle il manquait le js (a force de surcharger on passe à coté ^^)
      et j’ajouterais certainement celle ci …

    • Bonsoir Arnaud,

      Merci, ça fonctionne à merveille ainsi ! Et merci à nouveau pour votre réactivité :-)

      Le JS était bien dans la noisette, mais en dehors de la boucle… ça fait une différence ?

      De toute façon mon adaptation du code n’était pas la bonne semble-t-il, et même, le choix de la noisette… À quoi est réellement destinée la noisette owlcarousel-selections_editoriales ? Je ne suis pas sûre d’avoir compris son usage du coup !

      Encore un grand merci :-)

    • Bonjour,

      Pour la noisette selection_editoriales elle fonctionne avec le plugin homonyme :

      https://contrib.spip.net/Selections-editoriales

      assez pratique pour gérer un sommaire

      (oui le js était dedans je devais pas être bien réveillé )

      Bonne semaine

    • Bonjour,

      C’est noté, je creuserai ce plugin du coup pour d’autres usages…
      Merci encore pour le coup de main.

      Bonne semaine également

    Répondre à ce message

  • 10

    Bonjour,

    D’abord un grand merci pour ce plugin que je découvre et qui a l’air génial !

    Je rencontre cependant 2 problèmes que je ne parviens pas à régler :

    1/ c’est incompréhensible, il m’affiche un total d’image bien supérieur à la réalité. Par exemple, si j’ai 5 images dans un portfolio d’un article, il me met un total de 11 (voire 14 ou 15 si dans le modèle, je modifie le nombre d’items affichés pour en demander 5 au lieu d’1 seul…). Pour un article où j’en ai 23, il m’en affiche 69, ou 71, ou 72… Il me présente donc mes images plusieurs fois ! Personne ne semble avoir rencontré ce problème ?

    2/ La légende disparaît dans l’image agrandie dansla Mediabox… ???

    D’avance merci pour votre aide.

    • PS : Je précise que le nombre de miniature est correct… c’est lorsqu’on agrandie les images dans la mediabox que le nombre est largement augmenté par rapport à la réalité… et ce, sans aucune modification du modèle…

    • J’ai fini par trouver : c’est loop:true qui pose problème dans le modèle, mais je ne comprends pas pourquoi ? En le passant à false, le total est bon… donc ça va, à condition de ne pas vouloir de boucle :-)

      Je ne trouve toujours pas comment conserver la légende dans la colorbox…

      …ni comment conserver les réglages de max-height / max-width de la config de ladite colorbor, ni de mon css… Mes images s’affichent bien en grand mais elles débordent et n’ont pas leur légende.

      En fait, c’est comme s’il y avait une surcouche quelque part et je n’arrive pas à trouver quoi / où malgré des heures de recherche (j’avais priorisé le problème de total et gardé ça pour plus tard, et voilà ;p !)

      J’avais oublié de préciser : SPIP 3.2.0 !!

    • Bonjour,

      Effectivement l’option loop de owl carousel permet de simuler un défilement infini et recopiant les slides avant et après.

      Pour la colorbox c’est celle livrée avec spip qui est utilisée, il y’a une discussion ouverte sur le GitHub de l’auteur a ce sujet , et des pistes : https://github.com/jackmoore/colorbox/issues/158

    • Bonjour, et merci pour cette réponse rapide !

      Ok pour la boucle, même si ça paraît bizarre ces totaux qui ne correspondent pas à la réalité :-)

      En revanche, pour la Colorbox, je sais bien qu’elle est livrée dans SPIP depuis un moment, je l’utilise sur tous les sites que je produis, depuis des années et sans aucun souci, que je la customize ou non.

      Ce que je ne comprends pas, c’est que dès lors que Owl est actif, un clic sur une des images appelle bien l’agrandissement via la Mediabox, mais la légende disparaît et l’image est affichée à sa taille réelle sans prendre en compte les réglages de la config mediabox ni mon css. Donc elle déborde rapidement de l’écran si elle est un peu plus grande.

      Je précise que j’ai essayé sur un SPIP 3.2.0 vierge après avoir rencontré le problème sur mon propre site. Je me sers des images affichées dans le carousel comme miniatures pour les agrandir via la Mediabox… Ça ressemble plus à un bug, non ?

      D’avance merci pour votre aide.

    • Dans les modèles du plugin on appel colorbox par la class js-colorbox (voir le js du modèle).

      pour rétablir le comportement de spip il faut remplacer par la class mediabox et d’ajouter l’attribut title sur le lien, ce qui affiche bien le titre du document ensuite quand on ouvre la popup.

      Ceci résout le problème des images aussi et utilisant les paramètres définis dans la configuration de spip.

      Je reporte ça sur les modèles du plugin, merci du signalement.

    • Mille mercis Mist. GraphX ! Je n’ai pas eu le temps de tester, mais dès que possible, et je ferai un meilleur retour… :-)

    • J’ai enfin eu le temps de tester ce soir… Merci ! C’est magique :-) !

      … Ou presque : je constate un autre problème (pas pour moi car je ne vais pas me servir de la boucle), mais lorsque on est en loop:true, mettons avec 3 images, il fait un total de 7 (ce que j’avais rapporté plus haut), et donc il ouvre sur la 3, en taille parfaite et avec la légende, puis enchaîne sur la 4 (la seconde) et la 5 (la troisième) de la même façon – parfaite – puis il continue sur la boucle comme avant pour les 6, 7, 1 et 2, avec l’image qui déborde et sans la légende, donc j’imagine qu’il retourne sur la classe js-colorbox et non mediabox pour continuer la boucle ? Ensuite il revient sur la 4, 5 et 6 comme il faut.

      D’ailleurs, sur cette boucle, la 7 et la 1 sont les mêmes ??
      Ça n’est pas un problème pour moi car je ne vais pas utiliser la boucle, mais c’est juste pour vous rapporter ce comportement :-)

      Enfin dernière chose et après j’arrête de vous embêter : dans la liste des articles, sur une rubrique, s’il n’y a que la galerie et pas de texte, ce qui est rapporté comme extrait de l’article donne :
      #demo .owl-slide > .caption z-index : 100 ; position : absolute ; left:55% ; width : 40% ; bottom:5% ; #demo .owl-slide > .caption > .title background : #000 ; color : #FFF ; padding : 5px ; width : auto ; #demo .owl-slide > .caption > p background-color : rgba(88, 88, 88, 0.75) ; /*float : right ;*/ color : #FFF ; padding : 5px ; (...)

      … Enfin seulement quand on appelle la galerie avec le raccourci SPIP <articlexx|owl>, ce qui n’est pas mon cas, car j’appelle le modèle directement dans le squelette et là, pas de souci :-)

      Malgré ces remontées, je trouve ce plugin fantastique, ça fait très longtemps que j’attends quelque chose comme ça, n’ayant pas moi-même les connaissances php/js pour le faire car je ne « maîtrise » que le html/css. Donc un grand merci et un grand bravo !

    • ça ne m’embête pas, c’est toujours intéressant de voir des cas différents d’intégration.

      Oui effectivement quand on affiche une liste d’article et que l’on utilise la balise INTRODUCTION les styles css sont retournée, seuls les balises <styles> sont supprimées et les css retournée en texte brut, c’est du au filtre supprimer_tag.

      N’utilisant pas non plus le modèle je n’avais pas remarqué, et je n’ai pas trouvé d’autres filtres dispo pour ce cas. Il faudrait certainement déplacer les css dans une feuille de style, pour le cas des modèles, ce serais plus propre.

      Pour le loop, et l’option boucle par contre en appelant le modèle directement dans un squelette, avec 3 items, j’ai bien le bon résultat le contenu html est bien cloné (img + caption).

      Si vous avez une url a fournir, pour voir ce que ça donne, dès fois que j’ai mal compris le soucis...

      Sinon un exemple de carousel infini ici sur le sommaire dans la section Écouter, commander les albums, les pochettes des produits défilent avec le texte en touch/drag.

      D’ailleurs au passage le player vidéo est fait avec owl aussi.

    • Bonjour Mist. GraphX, et désolée de revenir si tard !

      Alors pour le problème de taille / légende avec loop:true, c’était sans doute dû à un problème de cache mal vidé, car miracle, ça ne le fait plus sans que j’ai rien modifié !

      Je comprends, avec votre exemple en suivant le lien, que le total augmenté de la boucle ne pose pas de problème tel que c’est utilisé, mais c’est vrai que ça fait bizarre de voir 1/7 dans la mediabox quand on a que 3 images, ou 1/67 quand on en a 22…

      Pour finir, je crois que vous avez mal compris ce que j’ai essayé de rapporter : le css ne s’affiche pas lorsque qu’on appelle la galerie via le modèle dans le squelette, de la façon suivante :

      [(#MODELE{article_owl})]

      et c’est ce que je fais donc tout va bien ! Il s’affiche seulement quand on appelle la galerie via le raccourci <articlexx|owl> directement dans un article, comme c’est expliqué plus haut dans cette page… Ou alors c’est moi qui ai mal compris :-) ?

      Belle journée

    Répondre à ce message

  • 2

    Bonjour,
    le plugin fonctionne bien chez moi dans l’espace public mais dans l’espace privé je vois les images les unes en dessous des autres et le Javascript.
    y a t-il un moyen pour le voir correctement ?
    merci

    Répondre à ce message

  • 5

    Bonjour,

    Est-il possible d’utiliser Owl Carousel pour afficher des vignettes (comme dans objet-portfolio) en faisant varier le nombre d’items selon la taille de l’écran
    ou, pour le dire différemment, comment rendre ce défilement de vignettes responsive ?

    Et, j’aurais dû commencer par ça, merci pour cet excellent plugin !

    Répondre à ce message

  • 2

    Bonjour
    le plugin est super je l’ai installé sur un spip3.18
    mais j’aimerai ajouter un effet de transition « fade » car d’origine c’est un peu brutal/direct comme transition.

    j’ai essayé :

    <article2106|owl|docs=4140,4141,4867|dots=false|autoplay=true|animateOut=fade>

    mais ça marche pas ...

    Merci pour votre aide ;)

    Kiki

    • Bonjour Kiki,

      Ce paramètre n’était pas rajouté dans ce modèle, mais juste dans les squelettes situés dans le dossier noisettes/ du plugin.

      Je l’ai rajouté ce sera dispo dans le prochain paquet généré.

      Bonne journée.

    • ouahh merci !!!

    Répondre à ce message

  • 1
    Metaldark

    Bonjour,
    je souhaiterais insérer un carrousel qui affiche les images des 5 derniers articles et leur descriptifs rapides dans mon SPIP 3.2, mais étant débutant je n’arrive pas à trouver le code exact et où l’insérer.
    Pouvez-vous m’aider svp ?
    Merci d’avance.

    • Le plus simple est de s’appuyer sur les codes présents sur a démo de owl carousel
      Par exemple, si tu veux reproduire l’exemple présent sur la page https://owlcarousel2.github.io/OwlCarousel2/demos/basic.html
      la boucle suivante devrait te donner le résultat attendu (en n’oubliant pas de mettre dans la page l’appel au javascript pour que le carousel se « mette en marche »)

      <B_carousel>
      <div class="owl-carousel owl-theme">
      <BOUCLE_carousel(ARTICLES){par date}{inverse}{0,5}>
          <div class="item">#TITRE</div> 
          <div class="item">#DESCRIPTIF</div> 
      </BOUCLE_carousel>
      </div>
      </B_carousel>

    Répondre à ce message

  • 1
    Renee Picard

    Je voudrais changer « prev » par un flèche en fontawesome
    Je ne trouve pas où est :
    <div class="owl-prev">prev</div>
    Merci

    • Bonjour,

      J’ai modifié les modèles, du plugin, afin que ce soit plus facile, mais en résumé :

      Dans les options de owl vous pouvez changer le text avec l’option navText

       navText : ['<span class="icon icon-precedent"></span>','<span class="icon icon-suivant"></span>'],

      les chaines de langue sont déjà dans lang/owlcarousel_fr.

      vous pouvez donc aussi depuis une surcharge de lang

      	// P
      	'prec'=>'<span class="icon icon-precedent"></span>',
      	'suiv'=>'<span class="icon icon-suivant"></span>'

      les styles css sont a adapter ensuite.

      et si on veut faire quelque chose d’accessible ce serait plutot

      '<span class="icon icon-precedent" aria-hidden="true"></span><span class="visuallyhidden">Précédent</span>'

    Répondre à ce message

  • 1

    Bonjour,
    encore moi. J’utilise oEmbed.
    Pourriez vous donner un exemple d’utilisation du modèle owlvideoplayer je m’emmêle avec la syntaxe objet pour avoir les videos d’une rubrique je met

    <owlvideoplayer|id_objet=106|objet=rubrique>

    et j’ai parametre d’inclusion incorrect env

    • Bonjour,

      effectivement il y’avais une coquille dans le modèle, au niveau de

      {navigation,#ENV{navigation}}

      c’est

      {navigation=#ENV{navigation}}

      je fais la correction merci du retour

    Répondre à ce message

  • 4

    bonsoir,

    1- savez vous pourquoi le numéro de l’image en cours s’affiche dans l’adresse comme cela :
    https://paroissesaintjeandulez.cef.fr/#1363

    mieux si j’ai un deuxième slider dans la page d’id slider_carrousel ( en local pour l’instant)
    j’ai soit #slider_carrousel soit le numero de l’image du bandeau dans l’adresse
    j’ai du mettre queque chose en trop dans le js..

    2- est-ce qu’il existe un mode défilement vertical ?

    cela dit je trouve ce slider efficace

    • Bonsoir,
      C’est en fait le data-hash="" qui est dans le html. Ceci permet de piloter les items du carousel si vous utilisez des vignettes ou autres éléments.

      Et si il y’a plusieurs carousel a piloter le bon.

      Si vous n’utilisez pas de vignette le data-hash= peut être supprimé.

      Je vois que vous avez aussi des erreurs javascript sur flexslider et anything slider …

    • Bonsoir,
      si je me trompe pas, ça sert aussi à suivre le diaporama dans l’historique de navigation, et ça peut être souhaité.
      Bon, j’ai modifié le modèle article_owl.html pour qu’il prenne le paramètre URLhashListener=true pour activer ce mécanisme.

    • merci beaucoup.
      Avez vous une idée pour le défilement vertical ?

    • Bonjour,

      ça à l’air envisageable, on me suggère sur IRC que le plugin SlickSlider prend en charge ce type d’option.

      Cela dit ce n’est pas compliqué a rajouter au plugin owl, via des animations css3 et les options

      animateOut
      animateIn

      je peut rajouter la prise en charge de ses deux options, ça pourra toujours être utile... et intégrer aux css les animation necessaires pour le vertical…

      https://owlcarousel2.github.io/OwlCarousel2/demos/animate.html

    Répondre à ce message

  • 1

    bonsoir,
    merci pour ce magnifique plugin d’un slider que je ne connaissait pas.
    Pouvoir « glisser » sur un mobile pour changer d’image c’est super.

    Pour info il me semble qu’il y a des anciens paramètre dans les noisettes. par exemple
        navigationText : ["<:owlcarousel:prec:>","<:owlcarousel:suiv:>"],
    navigationText ne marche pas chez moi mais navText oui ( j’ai regarde dans la librairie javascript)

    • Bonsoir,

      merci pour le retour, effectivement ça a pus changé entre la version précédente de owl et celle actuelle.

      je corrige ça …

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

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

Dernière modification de cette page le 3 octobre 2018