Développeur Drupal 11 : entités, cache et migration depuis Drupal 7

Drupal se code en PHP avec ses propres règles, des entités à la configuration exportable en passant par le cache par tags. Un bon développeur Drupal regarde ce que Drupal core et les modules contribués font déjà avant d'écrire une ligne.

Recevoir la fiche complète

Mis à jour le Par l'équipe Delectus5 min de lecture

La fiche Développeur Drupal : technologies, chaîne du poste, une question et la grille d'évaluation

Un développeur Drupal écrit du PHP dans un cadre très structuré : types de contenu, champs, Views, modules contribués et code sur mesure posé sur des composants Symfony. Les questions d'entretien pour un développeur Drupal portent sur ce cadre plus que sur PHP en général. Les offres publiées en 2026 citent Drupal 10 et 11, Twig, des API REST, souvent un front Angular et des exigences RGAA.

Le calendrier pèse sur les recrutements. Drupal 7 n'a plus de support depuis le 5 janvier 2025, Drupal 10 s'arrête le 9 décembre 2026 et Drupal 12 sort la même semaine. Beaucoup de missions sont donc des montées de version ou des reprises de contenu avec la Migrate API. Un CV resté sur Drupal 7 décrit un autre produit, sans Composer ni configuration exportée.

Écoutez la personne parler du cache. Un développeur qui a tenu un site chargé explique sans hésiter les tags et les contextes de cache, et sait pourquoi un bloc a un jour affiché la donnée d'un autre utilisateur. Le PDF contient un cas de 20 minutes sur la reprise d'un site Drupal 7 bilingue.

Drupal core, Symfony et l'outillage d'un projet Drupal

Drupal core 10 et 11

Le socle : types de contenu, champs, taxonomie, médias, Views pour les listes et les droits par rôle. Drupal 11.4 est la version courante depuis fin juin 2026. Drupal 10 n'aura plus de correctifs après le 9 décembre 2026, donc un site encore en 10 est un chantier de montée de version.

Composants Symfony et services

Drupal s'appuie sur le conteneur de services, le routage et les événements de Symfony. Le code sur mesure s'écrit en services injectés, en contrôleurs et en plugins. Depuis Drupal 11.1, les hooks peuvent être des méthodes de classe marquées par l'attribut #[Hook], ce qui rapproche encore le code d'une application Symfony.

Twig et thèmes

Les templates s'écrivent en Twig, qui échappe le HTML par défaut. Les thèmes récents partent de Starterkit et utilisent les Single Directory Components, où chaque composant regroupe son template, son CSS et son JavaScript. Un intégrateur Drupal travaille surtout ici.

Gestion de configuration et Drush

Toute la structure du site (types de contenu, vues, rôles) s'exporte en fichiers YAML versionnés et s'importe sur les autres environnements avec Drush. Config Split sépare les réglages de développement. Un profil qui ne connaît pas ce flux configure encore chaque environnement à la main.

Composer et mises à jour

Drupal core, les modules contribués et leurs correctifs s'installent avec Composer. Upgrade Status repère le code incompatible avant une montée de version et Drupal Rector en corrige une partie. Demandez comment la personne suit les patches appliqués aux modules.

Migrate API

Le cadre de reprise de données de Drupal : une source, des transformations, une destination, décrites en YAML. Il sert aux migrations depuis Drupal 7, qui ne peut pas être mis à jour en place, et aux imports réguliers depuis un CSV ou une API. Les drush migrate:import et migrate:rollback permettent de rejouer.

Cache API, Varnish et CDN

Drupal met en cache les morceaux de page avec trois informations : des tags pour savoir quand invalider, des contextes pour les variantes (langue, utilisateur, rôle) et une durée. Le module Purge propage l'invalidation à Varnish ou au CDN. La plupart des bugs d'affichage en production viennent d'ici.

JSON:API et headless

JSON:API est fourni avec Drupal et expose les entités en lecture ou en écriture, avec les droits du site. Il sert quand le front est écrit en React, Angular ou Next.js, ou pour alimenter une application mobile. Le module GraphQL est l'alternative contribuée.

Drupal CMS, recipes et Canvas

Drupal CMS 2.0 est une distribution prête à l'emploi pour les équipes marketing, construite sur Drupal core avec des recipes (des paquets de modules et de configuration) et Drupal Canvas pour composer des pages visuellement. Un développeur doit savoir ce qu'elle installe avant d'y ajouter du code.

Le titre recouvre plusieurs profils. L'intégrateur Drupal travaille surtout le thème Twig, les composants et l'accessibilité. Le développeur back écrit des modules, des migrations et des intégrations par API. Le profil senior ou lead tient l'architecture du site, la gestion de configuration, les montées de version et les performances. Beaucoup de postes publiés en 2026 sont full stack, avec un front Angular, Vue ou React branché sur Drupal par API. Acquia propose des certifications (développeur, spécialiste back-end ou front-end, site builder) qui attestent la connaissance de la plateforme. La capacité à déboguer un problème de cache ou une migration ratée se vérifie en entretien.

Six points techniques à couvrir avec un développeur Drupal

  • Modélisation des entités et des champs
  • Modules sur mesure et services Symfony
  • Cache Drupal et performance
  • Gestion de configuration et déploiement
  • Migrations avec la Migrate API
  • Sécurité, droits et thème Twig

Les questions à poser à un développeur Drupal, réponses comprises

Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.

  1. Question 1 · confirmé

    Un bloc sur mesure affiche le nom de l'utilisateur connecté, et un visiteur voit le nom de quelqu'un d'autre. Que s'est-il passé, et comment corrigez-vous ?

    Une bonne réponseLe render array du bloc a été mis en cache sans le contexte de cache user, donc Dynamic Page Cache a servi la version d'un autre compte. La correction passe par #cache avec le contexte user, ou mieux par un lazy builder qui remplace la partie personnalisée par un placeholder et laisse le reste de la page en cache. Un bon profil cite les trois propriétés de cache : tags pour l'invalidation, contexts pour les variantes, max-age pour la durée.

    Signal d'alerte« On désactive le cache sur ce bloc » ou « on fait un drush cr », sans comprendre pourquoi la mauvaise version a été servie.

  2. Question 2 · confirmé

    Un collègue a ajouté un champ en production depuis l'interface d'administration. Au déploiement suivant, le champ a disparu. Expliquez ce qui s'est passé et le flux que vous mettez en place.

    Une bonne réponseLe déploiement lance drush config:import, qui remplace la configuration active par celle du dépôt, où le champ n'existait pas. Le flux sain : modification en local, drush config:export, commit, revue, puis import par la CI. config:status avant import montre l'écart. Pour les réglages qui doivent changer en production (un e-mail de contact, l'adresse d'un service externe), Config Ignore ou des surcharges dans settings.php, et Config Split pour les modules de développement.

    Signal d'alerte« On refait le champ à la main après chaque mise en production », ou aucune idée de la différence entre configuration active et configuration exportée.

  3. Question 3 · senior

    Vous reprenez un site Drupal 7 de 40 000 articles vers Drupal 11. Comment organisez-vous la migration des contenus ?

    Une bonne réponsePas de mise à jour en place, impossible depuis Drupal 7 : un nouveau site et la Migrate API. Des migrations en YAML avec un plugin source, des plugins process et une destination, dans l'ordre des dépendances (utilisateurs, termes, fichiers, puis articles) reliées par migration_lookup. migrate_plus et migrate_tools pour lancer, annuler (rollback) et relancer. Il prévoit les champs de modules contribués sans équivalent, les URL anciennes à rediriger avec Redirect et Pathauto, et des répétitions complètes sur une copie avant la bascule.

    Signal d'alerteUn export SQL réinjecté directement dans les tables de Drupal 11, ou une ressaisie manuelle « parce que c'est plus sûr ».

  4. Question 4 · confirmé

    À chaque enregistrement d'un article, un service externe doit être prévenu. Où placez-vous ce code dans Drupal 11, et comment l'écrivez-vous ?

    Une bonne réponseDans un module sur mesure, avec hook_entity_insert et hook_entity_update, ou la variante limitée au type node. Depuis Drupal 11.1, le hook peut être une méthode de classe marquée par l'attribut #[Hook], avec ses dépendances injectées. L'appel HTTP ne se fait pas pendant l'enregistrement : il pousse un élément dans une file (Queue API) traitée par un QueueWorker au cron ou par un worker dédié, ce qui évite qu'une panne du service bloque la saisie.

    Signal d'alerteLe code dans le thème, un appel HTTP synchrone qui fait échouer l'enregistrement quand le service ne répond pas, ou \Drupal::service() appelé partout dans des classes.

  5. Question 5 · junior à confirmé

    Un formulaire de recherche réaffiche dans la page le texte saisi par l'utilisateur. Comment évitez-vous une faille XSS dans Drupal ?

    Une bonne réponseTwig échappe par défaut ce qu'il affiche : la règle est de ne pas utiliser le filtre |raw sur une donnée saisie. Dans le code PHP, t() et FormattableMarkup avec les placeholders @ et %, qui échappent la valeur, et Xss::filter() quand un peu de HTML doit passer. Il connaît aussi le pendant côté base : la Database API avec des paramètres, jamais de concaténation dans une requête. Les formats de texte limitent le HTML que les rédacteurs peuvent saisir.

    Signal d'alerteLe filtre |raw ajouté « parce que les balises s'affichaient », ou une requête SQL construite par concaténation de la saisie.

Recevez la fiche d'entretien complète en PDF

La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.

  • 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
  • Le niveau visé pour chaque question
  • Une mise en situation de 20 minutes et ce qu'on attend du candidat
  • La grille d'évaluation de 1 à 4, axe par axe

Recrutement d'un développeur Drupal : les questions fréquentes

Combien de temps faut-il à un développeur Symfony pour être à l'aise sur Drupal ?

Il part avec un vrai avantage : services, routage, événements et Twig lui sont familiers. Il lui manque le modèle propre à Drupal, avec les entités et les champs, la configuration exportée, les render arrays et leur cache, les hooks et les plugins. Comptez quelques semaines avant qu'il soit autonome sur un site existant. Posez-lui en entretien une question sur les tags de cache ou sur config:import : sa réponse montre s'il a déjà travaillé dans Drupal ou seulement à côté.

Que valent les certifications Acquia sur un CV Drupal ?

Acquia certifie la connaissance de Drupal par profil : développeur, spécialiste back-end, spécialiste front-end, site builder. Une certification récente montre que la personne connaît les API actuelles et pas seulement celles de Drupal 7. Elle ne prouve pas qu'elle a déjà livré et maintenu un site. Vérifiez la version de Drupal sur laquelle elle a été passée, puis demandez un module écrit, une migration menée ou une montée de version vécue.

Quelle épreuve pratique donner à un développeur Drupal ?

Un exercice court en entretien vaut mieux qu'un long test technique à rendre. Montrez un module sur mesure de quelques fichiers avec deux défauts réels : un bloc mis en cache sans contexte utilisateur, un appel \Drupal::service() dans une classe, un |raw dans un template. Demandez à la personne de le relire à voix haute. En vingt minutes, vous voyez si elle connaît le cache, l'injection de dépendances et l'échappement Twig.

Faut-il encore chercher des profils qui connaissent Drupal 7 ?

Seulement si le poste comprend la reprise d'un site Drupal 7, qui n'a plus de support officiel depuis janvier 2025. Dans ce cas, la connaissance de l'ancien modèle aide à lire les données d'origine et les modules utilisés. Pour tout le reste, l'expérience utile est celle de Drupal 9, 10 ou 11 : Composer, configuration exportée, programmation objet. Un profil qui n'a travaillé qu'en Drupal 7 doit être évalué comme un débutant sur la version actuelle.

Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.

Les fiches voisines

Toutes les fiches →

Voyez Delectus sur vos propres offres.

Commencez gratuitement. Passez à l'échelle quand vous êtes prêt.

Demander une démo

Votre ATS, connecté à Delectus

  • Workable
  • Teamtailor
  • iCIMS
  • Lever
  • SmartRecruiters
  • Jobvite
  • Greenhouse
  • Pinpoint