Drupal est souvent utilisé pour des sites institutionnels, des projets éditoriaux importants et des services numériques dont l’architecture peut devenir assez riche.
La logique d’une CMP reste pourtant simple : les services soumis au consentement doivent être identifiés puis empêchés de fonctionner tant que le choix nécessaire n’a pas été obtenu.
La principale difficulté vient moins de Drupal lui-même que de la manière dont les modules, thèmes et intégrations externes construisent la page finale.
Commencer par l’inventaire des services
Avant de choisir un module ou d’ajouter une bannière, il faut savoir ce que le site charge réellement.
Mesure d’audience, vidéos, cartes, captcha, réseaux sociaux, publicité ou outils de support peuvent être ajoutés par le thème, un module ou un gestionnaire de balises.
La CMP ne peut correctement contrôler que ce qui a été identifié et intégré à son fonctionnement.
Un inventaire technique reste donc la première étape.
Le module Drupal n’est qu’un moyen d’installation
Une CMP n’a pas besoin d’être entièrement développée sous forme de module Drupal pour fonctionner sur Drupal.
Un module peut simplifier l’ajout de la balise nécessaire, mais le fonctionnement principal peut parfaitement rester en JavaScript.
C’est une distinction importante : le CMS sert à placer correctement la CMP, tandis que la CMP contrôle ensuite les services dans le navigateur.
Le critère essentiel reste donc l’ordre d’exécution obtenu dans la page finale.
La CMP doit arriver avant les services concernés
Si un module Drupal injecte Google Analytics avant le chargement de la CMP, la première requête peut déjà être partie lorsque le bandeau apparaît.
La CMP ne peut pas annuler rétroactivement cette transmission.
Le marqueur doit donc être positionné suffisamment tôt lorsqu’une détection automatique est utilisée.
Cette règle est détaillée dans mon article consacré à l’ordre de chargement.
Le mode manuel offre un contrôle très explicite
Avec tarteaucitron open source, les services peuvent être déclarés manuellement.
Le script direct du fournisseur est retiré puis tarteaucitron devient responsable de son chargement après le choix approprié.
Cette architecture est particulièrement lisible lorsqu’une équipe technique maîtrise le thème et les modules du projet.
Elle demande en contrepartie de maintenir la configuration lorsque de nouveaux services sont ajoutés.
La détection automatique peut réduire les modifications
Avec tarteaucitron Pro, de nombreux services supportés peuvent être détectés directement dans la page.
L’intérêt est notamment de réduire les modifications nécessaires dans une architecture Drupal déjà existante.
Le marqueur Pro doit néanmoins être chargé avant les services à contrôler.
Un service spécifique ou inconnu reste par ailleurs susceptible de nécessiter une intégration manuelle.
Le cache ne doit pas faire oublier le navigateur
Drupal dispose d’un écosystème de cache performant et peut également être placé derrière différentes couches de cache ou de reverse proxy.
Ces mécanismes changent la manière dont le HTML est généré ou distribué, mais le consentement est finalement appliqué dans le navigateur du visiteur.
Il faut donc toujours inspecter la page réellement reçue et exécutée par le navigateur.
Le fait qu’une configuration semble correcte dans l’administration ne garantit pas l’ordre final des scripts.
Attention aux gestionnaires de balises
Un site Drupal peut également utiliser Google Tag Manager pour centraliser une partie de ses services.
Dans ce cas, il faut distinguer le conteneur et les services qu’il charge.
Autoriser GTM ne signifie pas automatiquement autoriser GA4, Meta Pixel, YouTube ou les autres tags contenus dans le gestionnaire.
J’ai détaillé ce problème dans mon article sur le consentement en cascade avec GTM.
Les contenus éditoriaux peuvent introduire des services externes
Sur un CMS éditorial, les trackers ne viennent pas uniquement de la configuration globale.
Un contributeur peut intégrer une vidéo, une carte ou un contenu externe directement dans une page.
Ces intégrations doivent elles aussi être prises en compte lorsqu’elles provoquent des requêtes ou traceurs nécessitant un consentement.
Une iframe masquée visuellement n’est pas bloquée si son contenu externe a déjà été chargé.
L’accessibilité mérite une attention particulière
Drupal est fréquemment utilisé pour des sites institutionnels et publics où l’accessibilité numérique est un critère important.
La bannière et le panneau de gestion doivent donc rester utilisables au clavier, présenter un focus visible et fonctionner avec les technologies d’assistance.
Les personnalisations apportées par le thème doivent également préserver ces propriétés.
Les principaux tests sont détaillés dans mon article sur l’accessibilité d’une bannière cookies.
Tester avec une session propre
Pour vérifier l’installation, je commence avec une session sans choix de consentement précédent.
J’ouvre Network avant de charger la page puis je recherche les services tiers connus.
Je recommence après un refus global, puis après une acceptation.
Cette méthode permet de vérifier directement le résultat produit par l’ensemble Drupal, modules, thème, cache, CMP et services externes.
Tester plusieurs types de pages
Une page d’accueil ne suffit pas.
Certains services peuvent apparaître uniquement dans un type de contenu, une rubrique, un formulaire ou une page intégrant un média externe.
Il faut donc choisir un échantillon représentatif des différentes constructions utilisées sur le site.
Sur un projet important, cette vérification peut facilement être ajoutée aux procédures de recette.
Drupal ne change pas les fondamentaux
Une bonne intégration CMP sur Drupal repose finalement sur les mêmes principes que sur un autre CMS.
Identifier les services, charger le mécanisme de consentement suffisamment tôt, ne pas confondre cookies nécessaires et trackers facultatifs, puis vérifier le résultat dans le navigateur.
Le CMS change la manière dont les scripts arrivent dans la page. Il ne change pas le fonctionnement du navigateur une fois qu’ils y sont.
C’est précisément pour cette raison qu’une CMP JavaScript peut rester indépendante de la technologie utilisée côté serveur.


