logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Thématisation des Views, modification des templates view.tpl.php (champs, lignes, blocs, pages). Intégration du plugin jQuery EasySlider

06/07/2025, by Ivan

Dans cet article, nous allons explorer le constructeur de requêtes pour Drupal - le module Views (http://drupal.org/project/views). Views permet d’afficher les champs de différents types de contenu, commentaires, termes, informations utilisateur, et diverses autres données depuis la base de données. Ce module propose une interface graphique qui permet de créer facilement des requêtes vers la base de données à la souris.

Attention !!! Si vous souhaitez utiliser easySlider tout de suite et rapidement, je recommande vivement d’utiliser un module dédié. Cet article est avant tout destiné à comprendre les templates du module Views et leur thématisation. Pour configurer l’aspect du easySlider, vous devrez modifier le CSS.

Après avoir affiché les champs nécessaires, il faut les agencer comme on le souhaite. Pour cela, des fichiers de templates sont prévus. Par défaut, ce sont les fichiers situés dans le dossier theme qui sont utilisés.

Configurons maintenant le plugin jQuery EasySlider pour les données affichées par Views. Il existe bien sûr un module prêt à l’emploi intégré à Views pour afficher EasySlider, disponible ici : http://drupal.org/project/easySlider

Si vous souhaitez simplement afficher des images sous forme de slider, il suffit d’installer ce module. Cet article vous apprendra cependant à manipuler les templates Views.

Pour commencer, vous devez installer les modules Views, CCK, Imagecache et télécharger les fichiers du plugin easySlider ici ou via un autre site en recherchant. Je détaillerai ensuite comment installer le plugin dans un thème Drupal, après avoir décrit la configuration des champs CCK.

Alors, modules installés, commençons :

1. Créez un nouveau type de contenu

Drupal Views

Ajoutez à ce type de contenu un nouveau champ pour télécharger une image et enregistrez. Vous pouvez aussi déplacer ce champ plus haut dans l’ordre.

Drupal content type

Dans les réglages du champ, autorisez un nombre illimité d’images et ajoutez des descriptions pour chaque image.

Paramètres généraux

2. Créez un nœud du type de contenu "Bannière" et téléchargez quelques photos pour l’affichage du slider.

3. Créez un preset (préréglage) pour les images que vous afficherez. Je vais faire un preset de 200x200 pixels, vous pouvez choisir la taille souhaitée.

ImageCache

Ajoutez un traitement d’image "Scale and crop" (Redimensionner et recadrer), encore une fois, mes dimensions sont 200x200, vous aurez sûrement d’autres tailles :

Ajouter redimensionnement et recadrage

4. Tout est prêt pour afficher (via Views) ce champ d’images sous forme de liste dans un bloc :

Ajoutez une nouvelle vue (view, affichage)

Affichage Drupal

Ajoutez le champ Image

Ajouter champ

Configurez ainsi : désactivez la regroupement des valeurs, désactivez le titre du champ, choisissez la taille d’image correspondant au preset créé.

Ajouter champ Views

Dans les filtres, mettez :
Contenu : Publié - oui
Contenu : Type - Bannière

Dans "Basic settings" :
Style : HTML List

Ajoutez un affichage en bloc.

Voici ce que vous obtenez :

Views

Les images devraient apparaître dans l’aperçu.

5. Ajoutez ce bloc dans une région et vérifiez son rendu.

Drupal slideshow

Hmm... ça ne ressemble pas à un slider. Passons à l’installation de easySlider.

6. Décompressez easySlider, téléchargé en début d’article. Dans le dossier du plugin, il y a des exemples visuels du slider ; nous prendrons l’exemple 2 (2.html). Copiez le CSS dans style.css de votre thème, ainsi que les images du dossier images du plugin dans le dossier images de votre thème.

7. Dans le dossier js du plugin se trouve le fichier easySlider1.5.js. Copiez-le également dans un dossier js de votre thème Drupal. Connectez ce fichier dans le fichier .info de votre thème en ajoutant ce code :

Mettez à jour le cache, le fichier easySlider1.5.js devrait être chargé :

drupal Lorem Ipsum

Si vous ouvrez ce fichier, vous verrez une indication sur le bloc HTML attendu pour que le slider fonctionne.

Regardons maintenant notre bloc avec Firebug pour Firefox, Dragonfly pour Opera, ou DOM-inspector dans Chrome. Personnellement, j’utilise Firebug pour Firefox car il est plus pratique que les autres inspecteurs DOM.

DOM inspector

Comme on peut le voir, Views a ajouté beaucoup de div, utiles pour la mise en page, mais qui gênent ici et doivent être supprimés.

8. Retournez dans la vue créée et cliquez sur le lien "Theme: information". Vous verrez la liste des templates permettant de modifier l’affichage.

Views theme information

Les templates en gras sont ceux utilisés par défaut et se trouvent dans le dossier theme du module Views. Les noms à côté (en police normale) indiquent les fichiers où on peut surcharger l’affichage standard. Pour surcharger un template, créez un fichier avec le nom correspondant, par exemple views-view-fields--view-banner.tpl.php.

banner

Regardons d’abord le contenu du fichier views-view-fields.tpl.php :

Drupal

En haut, un commentaire (en vert). Tout l’affichage est dans une boucle foreach, ce qui affiche chaque enregistrement. Il y a $field->separator, des séparateurs inutiles ici, nous allons les retirer, mais pas dans views-view-fields.tpl.php directement, plutôt dans un fichier template dédié views-view-fields--view-banner.tpl.php placé dans le dossier thème. $field->label, le titre du champ, est absent ici, donc on le supprime aussi. Ensuite, il y a $field->inline_html, généralement un div entourant chaque enregistrement : nous supprimons ce div et sa fermeture :

<?php print $field->inline_html;?>

Enregistrez ce template, videz le cache Drupal et regardez à nouveau le code via Firebug :

Images

Nos li sont désormais proches des images. Il reste à enlever les balises span. Dans le template, cela correspond à :

<?php print $field->element_type; ?> class="field-content">

et

<?php print $field->element_type; ?>

Après nettoyage, mon template ressemble à ceci :

drupal template

Il reste peu du template par défaut, mais cela suffit. Enregistrez et voyez le rendu :

Template theming

C’est bien mieux, le slider va bientôt fonctionner. Utilisons maintenant un autre template pour retirer :

<div class="view-content"><div class="item-list">

Nous allons faire cela via un template views-view--view-banner.tpl.php dans le dossier thème, en copiant le code de views-view.tpl.php. Ce template contient de nombreux éléments utiles, comme un bloc englobant avec des classes :

<div class="<?php print $classes; ?>">

Le titre de la vue (pas des champs, mais le titre configuré séparément) :

<?php if ($header): ?>
  <div class="view-header">
    <?php print $header; ?>
  </div>
<?php endif; ?>

Filtres exposés (permettent de filtrer dynamiquement l’affichage) :

<?php if ($exposed): ?>
  <div class="view-filters">
    <?php print $exposed; ?>
  </div>
<?php endif; ?>

Pièces jointes avant la vue :

<?php if ($attachment_before): ?>
  <div class="attachment attachment-before">
    <?php print $attachment_before; ?>
  </div>
<?php endif; ?>

Champs affichés par la vue :

<?php if ($rows): ?>
  <div class="view-content">
    <?php print $rows; ?>
  </div>
<?php elseif ($empty): ?>
  <div class="view-empty">
    <?php print $empty; ?>
  </div>
<?php endif; ?>

Pagination :

<?php if ($pager): ?>
  <?php print $pager; ?>
<?php endif; ?>

Pièces jointes après la vue :

<?php if ($attachment_after): ?>
  <div class="attachment attachment-after">
    <?php print $attachment_after; ?>
  </div>
<?php endif; ?>

Lien "Lire la suite" :

<?php if ($more): ?>
  <?php print $more; ?>
<?php endif; ?>

Footer de la vue :

<?php if ($footer): ?>
  <div class="view-footer">
    <?php print $footer; ?>
  </div>
<?php endif; ?>

Icône RSS :

<?php if ($feed_icon): ?>
  <div class="feed-icon">
    <?php print $feed_icon; ?>
  </div>
<?php endif; ?>

Je conserve uniquement le nécessaire, ce qui donne :

Drupal template

Supprimons maintenant :

<div class="item-list"></div>

Ce bloc est défini dans le template views-view-list.tpl.php. Nous allons le remplacer par le template views-view-list--view-banner.tpl.php.

PHP template

Pour enlever tous les autres div inutiles, ajoutez du code dans le template block.tpl.php. S’il n’existe pas dans votre thème, copiez-le depuis le module Block et placez-le dans votre thème pour pouvoir le surcharger.

Modifiez block.tpl.php pour supprimer les blocs inutiles et ajouter un bloc avec id="slider", en ajoutant une condition if :

block.tpl.php

La variable $block->delta est générée par Drupal selon le module créant le bloc. Dans mon cas, cette variable pour la bannière est (en bleu) :

imagecache

Videz le cache et regardez la page, elle devrait ressembler à ceci :

Drupal lorem ipsum

Comme indiqué, d’abord le div id="slider", puis la liste ul et ensuite les éléments li dans cette liste.

Il reste à ajouter un petit script JavaScript pour initialiser le slider :

Drupal templates

Ce JavaScript peut être ajouté directement dans page.tpl.php ou dans un fichier séparé, par exemple js/custom.js.

Résultat : easySlider fonctionne, mais il faut encore configurer le CSS pour un affichage correct :

Drupal slider

Évidemment, il est plus simple d’utiliser un module dédié pour afficher une carrousel ou un slider. Mais que faire si aucun module n’existe, alors qu’un plugin jQuery existe ? Pas question d’attendre que quelqu’un écrive un module pour vous.