Dans Drupal, les vues peuvent être utiles pour extraire des données de façon complexes. Elles peuvent être utilisées telles quelles mais il est possible de les utiliser dans nos développements pour récupérer des données filtrées directement dans le code. 

Voici un exemple de développement orienté dans ce sens.

Le défi

Nos spécialistes UX ont proposé de créer un agenda qui comprend certaines contraintes techniques : une navigation peu commune et un chargement des contenus dynamique au scroll.

L'agenda se découpe par mois et chaque mois contient deux types d'événements. Des événements continus, qui se déroulent pendant plusieurs mois et des événements ponctuels qui ont lieu à une date précise. Les événements continus doivent se répéter sur plusieurs mois et se mettre en haut de la liste des événements du mois. Et enfin, chaque événement peut être filtré sur base d’une catégorie. 

 

 

La navigation doit fonctionner en "double-ruban", avec un premier niveau sur l'année et un second sur chaque mois.

 

 

En ce qui concerne la partie dynamique, l'agenda se rempli au fur et à mesure de la navigation ou au scroll dans la page (lazy-loading). Le changement de mois ainsi que les autres filtres sont dynamiques.

 

 

La méthode

Pour faire cet agenda, nous avons commencé par créer une vue classique. Celle-ci ne renvoit qu'un seul mois et contient une option de regroupement sur le type d'événement ainsi que tous les filtres nécessaires au fonctionnement des différentes options de navigation dans l'agenda (dates, filtres, taxonomie, type).

Ensuite, nous avons développé un module contenant un contrôleur. Celui-ci ne contient que deux méthodes accrochées à deux routes distinctes. Chaque méthode est appelée en Ajax et le retour n'est ni plus ni moins que le rendu de la vue filtrée. Lorsque l'Ajax obtient une réponse, il ajoute le contenu récupéré ou remplace le contenu existant.

Toute la navigation ainsi que les filtres sont rendus dans un plugin/block et sont calculés à partir des évènements existants. Chaque options de filtrages ou de navigation appelle une requête Ajax qui contient les informations de filtrage nécessaires au bon rendu de la vue.

Conclusion

En général, les vues se suffisent à elle-mêmes. Il est très rare de devoir surcharger des filtres dynamiquement ou d'appeler des vues dans le code. Lorsque c’est nécessaire, pour des fonctionnalités complexes, il est possible de passer par une phase de développement. Rien n’est impossible avec Drupal et nous aimons relever ce genre de défis.  

Le rendu est très propre et sort de l'ordinaire, l'affichage en grille responsive est moderne et esthétique.

Nous avons réalisé ce type de développement pour le site Mons Capitale Culturelle. Le résultat est à voir ici.
 

Écrit par

christopher le 13/06/2018

We are part of it !

#Drupal