Accueil / Blog / Métier / 2013 / Gestion ergonomique des blocs Drupal

Gestion ergonomique des blocs Drupal

Par Caroline Ansaldi publié 19/12/2013, édité le 26/01/2016
Un besoin récurrent sur des sites Drupal de taille modeste concerne l'ajout et la gestion de blocs éditoriaux par des rédacteurs. Cet article présente plusieurs solutions disponibles pour Drupal 7 avec leurs avantages et leurs inconvénients.
Gestion ergonomique des blocs Drupal

Un besoin récurrent concerne l'ajout et l'édition de blocs éditoriaux par des rédacteurs. Pour les raisons suivantes, il n'est souvent pas envisageable de leur donner l'accès à l'interface de gestion des blocs Drupal :

  • Ils pourraient déplacer, désactiver, supprimer des blocs système ou de Views par inadvertance ;
  • L'interface n'est pas forcément très ergonomique lorsqu'il s'agit juste de rajouter un bloc éditorial dans une "sidebar" sur une page (créer un bloc, configurer le chemin et la région souhaitées, ordonner le bloc) ;
  • Ajouter tous les blocs éditoriaux dans cette interface la rendra vite inutilisable (imaginez par exemple une région sidebar_second avec une centaine de blocs... Il faudrait défiler, défiler et encore défiler !).


Plusieurs solutions peuvent répondre à cette problématique, avec plus ou moins de succès, selon le besoin.

  • la solution personnalisée à base de champs et de Views ;
  • le module Blocker ;
  • le module Block_manager ;
  • d'autres solutions, plus complexes (comme Panels ou Context), non détaillées ici.

La solution à base de champs et de Views

Il s'agit d'ajouter un champ "zone de texte multiple" dans le type de contenu. Il faudra configurer ce champ pour qu'il ne s'affiche ni en mode teaser, ni en mode full (jamais, en fait). Il faudra ensuite créer une vue qui produira un bloc, prendra le nid en filtre contextuel et affichera les champs "zone de texte" du nœud en question. Ce bloc devra alors être placé dans la région d'affichage souhaitée. Il faudra enfin miser sur l'intégration graphique !

L'avantage de cette solution est que les blocs éditoriaux sont directement éditables dans le nœud et qu'ils peuvent être ordonnés.
Les inconvénients :

  • L'ajout de blocs est possible uniquement sur des nœuds / entités (pas sur des Views ou autre page) ;
  • Impossible de réutiliser un bloc sur un autre nœud.

La solution Blocker

Ce module propose, pour chaque nœud, un onglet "Gérer les blocs". L'interface est très simple. Drupal blocker uiOn visualise le nœud avec les régions où l'ajout de blocs est autorisé. Il suffit de cliquer sur le lien "Gérer les blocs" de la région qui nous intéresse. Une nouvelle interface propose alors une liste déroulante des blocs disponibles. Les blocs et les régions disponibles sont paramétrables dans l'interface d'administration du module.

Pour facilité l'ergonomie de cette solution, il est préférable d'utiliser le module nodeblock. Il permet de définir un type de contenu qui sera utilisé par les rédacteurs pour créer leurs blocs éditoriaux. Dès qu'un contenu de ce type est créé, un bloc est automatiquement généré. L'avantage d'utiliser nodeblock est d'affiner le type de contenu selon le besoin avec l'ajout de champs personnalisés et éventuellement de réaliser des interfaces d'administration simplifiées avec Views.

Les avantages:

  • la simplicité d'utilisation ;
  • la réutilisabilité des blocs.

Les inconvénients :

  • Ajout de blocs possible uniquement sur des nœuds (pas sur des pages de Views ou autre, ni même entité) ;
  • Il sera nécessaire de rajouter du code personnalisé pour qu'a chaque création d'un contenu nodeblock, la configuration de Blocker soit mise à jour pour autoriser la gestion de ce nouveau bloc (sous peine de devoir retourner dans l'administration à chaque nouvelle création de bloc, impossible en production pour des utilisateurs rédacteurs) ;
  • Impossibilité de réordonner les blocs à posteriori.

La solution Block Manager

Il s'agit à mon avis du module le plus abouti. Il fonctionne également avec nodeblock (Ce n'est pas un pré-requis, mais cela permet de filtrer efficacement les blocs à autoriser et comme précisé plus haut, cela me semble plus ergonomique pour le rédacteur). Il faut là aussi configurer le module pour préciser les régions concernées par la gestion des blocs. Il faut enfin préciser le type de contenu à autoriser (de type nodeblock). Une fois tout paramétré, vous obtenez un petit bloc de gestion / suppression des blocs pour les régions autorisées.


Un clic sur "Gérer les blocs" conduit à une interface en deux colonnes. La première liste tous les blocs autorisés disponibles et la deuxième correspond à ce qui sera affiché. Il suffit de glisser / déposer les blocs dans la colonne de droite. Les blocs peuvent ensuite être réordonnés entre eux, par simple glisser / déposer.

 Drupal Block manager ihm

 Les avantages :

  • Ajout de blocs sur n'importe quelle page ;
  • Simplicité d'utilisation ;
  • Réutilisabilité des blocs.
  • Les boutons d'accès rapide à la création de bloc

L'inconvénient :

  • Le module mériterait un système de filtre dans le choix des blocs pour un peu plus d'ergonomie.

Attention toutefois à prévoir une région spécifique pour son utilisation. En effet, j'ai eu quelques soucis lorsque je l'ai paramétré pour le rendre disponible dans la sidebar_second. J'y avais aussi ajouté des blocs de Views et je l'avais configuré pour ne proposer que les nodeblock. Du coup, il n'affichait pas les Views... Logique, mais il faut y penser. Du coup, j'ai créé une région sidebar_second_header pour y mettre les blocs éditoriaux rédigés par les rédacteurs.

Autres solutions

Il existe plusieurs modules dédiés entre autres à la gestion de blocs de contenu sur des sites complexes, mais nous pensons que leur interface n'est pas accessible pour des utilisateurs non-confirmés de Drupal, nous ne détaillerons donc pas ici leur utilisation, notre contrainte étant de permettre un contrôle éditorial aux rédacteurs. A noter tout de même que l'interface de Panels "In Place Editor" tente de répondre à ce besoin... A suivre !

Venez découvrir ces solutions lors d'une formation Drupal administrateur.

 

Mise à jour du 20/12/2013 : suite à une remarque de @Duaelfr, nous signalons qu'il est possible de remplacer l'utilisation du module nodeblock par celle du module Bean (du coup, notamment, vos blocks seront des entités plutôt que des nœuds).

ABONNEZ-VOUS À LA NEWSLETTER !