Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

Views - Créer une liste d'événements, groupés par mois

Date du document en anglais : 23 Février 2010 - 02h47 - http://drupal.org/node/388140  



Views dispose d'une fonctionnalité appelée regroupement. Elle vous permet de regrouper les données d'une liste en différentes catégories. En d'autres termes, si plusieurs éléments font partie d'une même catégorie, ils sont regroupés et forment alors leur propre liste. Pour que ce regroupement fonctionne, vous devez avoir des champs actifs et présents, fort heureusement vous pouvez utiliser n'importe quel champ disponible pour créer des catégories.

uneimage
Illustration 1: copie d'écran prise sur l'article de Drupal.org. Non, non. Je ne l'ai pas francisée.

Modules utilisés :

Créer un type de contenu pour vos événements

Avec CCK :

  • Créez un nouveau contenu (Administrer » Gestion du contenu » Type de contenu » Bouton Ajouter)
  • Appelez-le Événement
  • Ajoutez un nouveau champ appelé Date et choisissez date comme type.
  • Configurez le champ selon vos souhaits.

Créez ensuite quelques contenus pour ce nouveau type Événement dont certains avec la même date.

Créer une nouvelle vue

Avec Views, ajoutez une nouvelle vue appelée Événements.

Choisissez un style pour la vue, de préférence Table.

Ajoutez les champs Node : Titre et Contenu : Date. Ce sont les champs qui seront visibles, paramétrez-les de sorte qu'ils soient présentables.

Nous venons d'ajouter le champ date, mais nous devons l'ajouter une deuxième fois pour qu'il soit utilisable dans le regroupement. Cette fois-ci il ne devra pas être affiché à côté du premier, pour cela cochez « Exclure de l'affichage » et n'indiquez rien dans l'étiquette.

La raison pour laquelle nous avons besoin d'un deuxième champ pour la date est que nous allons modifier sa présentation pour n'afficher que le mois et l'année.

Maintenant, dans le cadre Paramètres de base, en face de l'option Style, cliquez sur le bouton « Rouage » et sous Champ de regroupement, sélectionnez le champ date caché puis cliquez sur Mise à jour.

Vous pouvez aussi ajouter un filtre pour Node : Publié = oui et Node : Type = événement.

Si vous faites un aperçu de la vue, vous remarquerez que chaque node a été placé dans son propre groupe, et chaque groupe a une date unique comme en-tête. Puisque toutes les dates sont uniques nous avons pour l'instant un groupe par date.

Nous devons maintenant modifier le champ date caché pour qu'il ne retourne que le mois et l'année.

Assurez-vous que votre vue ait un type d'affichage page ou bloc et sauvegardez-la.

Surcharger l'affichage du champ date

Pour trouver le fichier à copier pour personnaliser notre champ, nous devons cliquer sur le lien Thème : informations (situé dans le bloc Paramètres de base, tout en bas du bloc), cela nous donne la liste des fichiers possibles pour chaque partie de la vue. De cette liste, trouvez l'identifiant du champ caché et regardez la deuxième suggestion de nom de fichier (la première suggestion est en gras), dans mon cas il s'appelle views-view-field--field-date-value-1.tpl.php. Le nom du vôtre peut être différent.

Pour utiliser ce fichier, nous devons copier celui appelé views-view-field.tpl.php du dossier sites/all/modules/views/theme pour le coller dans le dossier de votre thème. Renommez-le en suivant avec le nom suggéré plus haut ( views-view-field--field-date-value-1.tpl.php, dans cet exemple), y compris avec les traits d'union.

Ouvrez le nouveau fichier et remplacez <?php print $output ?> avec :

<?php
print date('F Y'srttotime($row->node_data_field_date_field_date_value));
?>

F = Mois

Y = Année

Dans le code ci_dessus, remplacez node_data_field_date_field_date_value par le nom de votre champ (qui sera trouvé dans la requête SQL, après l'instruction AS)

Maintenant, lorsque vous chargerez la vue finale vous devriez obtenir une liste semblable à celle de la copie d'écran.

Personnalisations

Comment personnaliser l'affichage de la date : http://php.net/manual/fr/function.date.php.

Comment modifier l'apparence du texte : http://v1.reinspire.net/blog/2005/09/15/css_font_styling/ (en anglais).

Mise en garde

Si vous vous demandez pourquoi les données de votre listing ne sont pas correctement groupées, désactivez Theme developper et voyez si ça marche mieux.

Dans le but de vous éviter d'éventuels casse-tête, voici une remarque au sujet de cet exemple :

La raison pour laquelle vous écrivez un gabarit est que le champ de regroupement fait ses comparaisons à partir de la sortie des données et non sur les données elles-mêmes. Cette voie a été choisie pour faciliter l'implémentation de propriétés telles que la granularité sur les dates.

Un des effets de bord de tout ceci est que tout outil qui se plante avec les sorties dira... THEME DEVELOPPER... provoque des différences sur des chaînes dates apparemment égales. Plus précisément, la sortie sera enveloppé d'un tag qui comporte un attribut thmr dont la valeur augmente

One BIG side effect of this is that any tools that monkey with the output, say... THEME DEVELOPER ... will cause what seem like equivalent date strings to be different. More specifically, the output will be wrapped in a tag, that includes a thmr attribute that increments.