Makina Blog

Le blog Makina-corpus

Drupal SEO Recipe


L’émer­gence de « recettes » (recipes) dans Drupal me permet enfin de propo­ser ce que je consi­dère comme la meilleure confi­gu­ra­tion par défaut pour le SEO dans Drupal.

Celles et ceux qui me connaissent bien dans la commu­­nauté Drupal savent que je râle depuis de nombreuses années sur la plupart des articles consa­­crés à Drupal et au réfé­­ren­­ce­­ment qui ne sont qu’une longue liste de modules, souvent inutiles, parfois contre-produc­­tifs.

L’émer­­gence de « recettes » (recipes) dans Drupal me permet enfin de propo­­ser ce que je consi­­dère comme la meilleure confi­­gu­­ra­­tion par défaut pour le SEO dans Drupal. Je vais tenter dans cet article d’ex­­pliquer mes choix.

Les personnes inté­­res­­sées unique­­ment par le code pour­­ront le trou­­ver à la toute fin de cet article.

La gestion des URLs

Tout d’abord, on va souhai­­ter réécrire auto­­ma­­tique­­ment les URLs. Le module Pathauto est la solu­­tion utili­­sée depuis long­­temps par la commu­­nauté. Depuis Drupal 8, il ne four­­nit cepen­­dant plus de motifs par défaut, et il faut donc ajou­­ter notre propre confi­­gu­­ra­­tion pour qu’il fonc­­tionne correc­te­ment.

Depuis Drupal 8, le fil d’Ariane est basé sur l’URL du contenu. Pour assu­­rer une cohé­­rence entre le fil d’Ariane et l’ar­­bo­­res­­cence de menu, nous avons donc choisi de baser nos URLs sur l’ar­­bo­­res­­cence de menu ainsi que le titre du contenu, afin d’évi­ter d’ins­­tal­­ler des modules complé­­men­­taires de mani­­pu­­la­­tion du fil d’Ariane. Nous allons donc utili­­ser un motif d’URL par défaut corres­­pon­­dant à : « [node:menu-link:parents:join-path]/[node:title] ».

Capture d'écran de la configuration du module Pathauto

Que faire en cas de chan­­ge­­ment du menu ?

C’est là où la confi­­gu­­ra­­tion n’est plus si triviale. En effet, Drupal souffre actuel­­le­­ment d’un problème à ce niveau-là, et nous embarquons donc sur tous nos projets des patchs, à la fois de Pathauto et du core, pour permettre un chan­­ge­­ment d’URL en cas de chan­­ge­­ment du menu. Pour s’as­­su­­rer de ne perdre aucun réfé­­ren­­ce­­ment asso­­cié aux anciennes URLs, nous acti­­vons égale­­ment le module Redi­­rect afin de redi­­ri­­ger l’an­­cienne URL du contenu vers la nouvelle (c’est le compor­­te­­ment par défaut de Redi­­rect).

C’est trop compliqué pour moi !

Je peux le comprendre. Dans ce cas, nous vous propo­­sons une autre confi­­gu­­ra­­tion, plus simple (mais ce n’est pas celle conte­­nue dans notre recette). Cette confi­­gu­­ra­­tion corres­­pon­­dra à une struc­­ture clas­­sique de site Drupal, où la page d’ac­­cueil d’une rubrique est une vue listant les conte­­nus (et nous consi­dé­rons une rubrique par type de contenu : Actua­li­tés, Presse, Annuaire, …). Le motif d’URL géné­­rique sera alors « [node:content-type:machine-name]/[node:title] ».

Et pour éviter tout problème, nous vous suggé­­rons : d’une part, de chan­­ger la confi­­gu­­ra­­tion Pathauto pour ne jamais chan­­ger l’URL ; d’autre part, d’ins­­tal­­ler un module permet­­tant de calquer le fil d’Ariane sur l’ar­­bo­­res­­cence de menu, comme Menu Bread­­crumb, Easy bread­­crumb ou Bread­­crumb mana­­ger.

La gestion des balises META

Là encore, il existe dans la commu­­nauté une solu­­tion univer­­sel­­le­­ment adop­­tée : le module Meta­­tag. Ici, c’est simple, nous allons le lais­­ser dans sa confi­­gu­­ra­­tion par défaut, qui suffit la plupart du temps. Cette confi­­gu­­ra­­tion a un seul problème, elle manque, au goût de certains réfé­­ren­­ceurs, de subti­­lité. Mais en première approche, c’est large­­ment suffi­­sant.

Et… c’est tout ?

Si vous comp­­tez bien, nous avons installé 3 modules : Pathauto, Redi­­rect & Meta­­tag. Nous consi­­dé­­rons que cette confi­­gu­­ra­­tion est large­­ment suffi­­sante pour la plupart des sites, surtout dans des secteurs non concur­­ren­­tiels (ce qui est le cas de nombreux sites publics insti­­tu­­tion­­nels utili­­sant Drupal). Réduire le nombre de modules instal­lés améliore les perfor­mances et réduit la main­te­nance.

Si vous avez des besoins plus pous­­sés, vous travaille­­rez alors proba­ble­ment avec des personnes char­­gées de ce réfé­­ren­­ce­­ment qui auront des demandes précises auxquelles aucune confi­­gu­­ra­­tion géné­­rique ne pour­­rait répondre direc­­te­­ment. Nous préfé­­rons donc éviter de surchar­­ger le site avec de nombreux modules inutiles (oui, je parle notam­­ment de « SEO Check­­list »), et n’ins­­tal­­ler que ceux qui seront néces­­saires à vos besoins précis, en fonc­­tion de votre stra­­té­­gie. Éven­­tuel­­le­­ment, contac­­tez-nous pour en parler ;-)

Modules addi­tion­nels

Bien sûr, nous propo­sons d’autres modules dans la recette, comme ceux liées au bali­sage Schema.org ou à la créa­tion d’un fichier site­map.xml :

Capture d'écran de la page des modules Drupal

Mais aucun de ces modules addi­tion­nels n’est activé par défaut, pour vous lais­ser maître de votre stra­té­gie.

Plusieurs façons de faire les choses

Parce qu’il y a souvent avec Drupal de nombreuses solu­tions tech­niques menant au même résul­tat, c’est parfois contre-produc­tif d’en choi­sir une qui ne sera pas la plus adap­tée à votre projet. Par exemple, il y a au moins 3 façons d’im­plé­men­ter un bali­sage séman­tique du fil d’Ariane tout en respec­tant les stan­dards (pas de code dans un module person­na­lisé, unique­ment des modules issus de la commu­nauté si on peut) :

  • Si vous utili­sez déjà le module Schema.org Meta­tag, le sous-module Schema.org WebPage vous donne accès à la confi­gu­ra­tion pour le fil d’Ariane :
Capture d'écran de la configuration de Schema.org WebPage
  • L’uti­li­sa­tion d’un module dédié de gestion du fil d’Ariane four­nit parfois direc­te­ment le bali­sage séman­tique, c’est le cas de Easy Bread­crumb, par exemple :
Capture d'écran de la configuration du module Easy Breadcrumb
  • Enfin, il est possible de simple­ment modi­fier le template consa­cré au fil d’Ariane (bread­crumb.html.twig) :
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
  {% for item in breadcrumb %}
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
      {% if item.url %}
        <a itemscope itemtype="http://schema.org/Thing" itemprop="item" href="{{ item.url }}">
          <span itemprop="name">{{ item.text }}</span>
        </a>
      {% else %}
        <span itemprop="name">{{ item.text }}</span>
      {% endif %}
      <meta itemprop="position" content="{{ loop.index }}" />
    </li>
  {% endfor %}
</ol>

Yoast ou pas Yoast ?

Les personnes fami­­lières de Word­­press connaissent proba­­ble­­ment le plugin Yoast qui permet de guider l’équipe de rédac­­tion du site sur l’uti­­li­­sa­­tion de mots-clés au sein du contenu des pages. Si cette approche paraît un peu simpliste aujour­­d’hui, cela peut consti­­­tuer une première étape d’aide pour des équipes qui ne seraient que peu formées.

Ce module « Yoast » existe égale­ment au sein de la commu­­­nauté Drupal sous le nom « Real-time SEO for Drupal ». Mais il n’est malheu­­­reu­­­se­­­ment pas compa­­­tible avec le « Layout Buil­­­der » à l’heure actuelle. Nous lui préfé­­­rons donc Yoast Analy­­sis qui se base lui sur des modes d’af­­­fi­­­chage de Drupal et permet donc beau­­­coup plus de liberté :

Image
Capture d'écran du module Drupal Yoast Analysis

Que fait la commu­­nauté aujour­­d’hui ?

La commu­­nauté Drupal a lancé en 2024 une initia­­tive « Drupal CMS » four­­nis­­sant un Drupal déjà pré-confi­­guré pour une majo­­rité de besoins. Dans le cadre de cette initia­­tive, ils ont natu­­rel­­le­­ment proposé une confi­­gu­­ra­­tion pour le réfé­­ren­­ce­­ment, et vous y retrou­­ve­­rez en partie ce que nous décri­­vons dans cet article, notam­­ment sur la confi­­gu­­ra­­tion du module Pathauto.

Mais même la recette « basique » (dont vous pouvez consul­­ter le code ici) ne me satis­fait pas plei­ne­ment, notam­­ment parce qu’elle n’uti­­lise pas le module Meta­­tag. Cela reste néan­moins un bon exemple de confi­gu­ra­tion de recette, et pourra vous servir comme point de départ pour confi­­gu­­rer votre propre recette SEO. La recette avan­­cée, dispo­­nible dans le même dépôt, active beau­­coup (trop) de modules, et n’est proba­­ble­­ment pas un exemple à suivre sans réflexion préa­­lable.

Récu­pé­rer notre recette

Si vous souhai­tez consul­ter ou utili­ser notre recette, vous pouvez télé­char­ger le code ici.

Formations associées

Formations Drupal

Formation Drupal Administrateur

Paris Du 29 au 31 janvier 2025

Voir la Formation Drupal Administrateur

Formations Drupal

Formation Drupal Développeur

À distance (FOAD) Du 2 au 4 avril 2025

Voir la Formation Drupal Développeur

Actualités en lien

Migration d'un site Drupal 7 en Drupal 11

04/04/2024

Trucs, astuces et "bouts" de code pour migrer votre site web de Drupal 7 à Drupal 11. Compte-rendu d'une conférence donnée au Drupalcamp Rennes 2024.

Voir l'article
Image
Encart D7 vers Drupal 11

Du nouveau dans notre gamme de forma­tions Drupal

03/04/2024

Maîtri­sez le CMS Drupal de bout en bout avec notre panel complet de forma­tions couvrant la migra­tion (notre petite dernière), l’ad­mi­nis­tra­tion, le déve­lop­pe­ment et l’in­té­gra­tion Drupal. Pour deve­nir expert, plon­gez dans l’uni­vers Drupal !
Voir l'article
Image
Formation Migration Drupal 10

Makina Corpus, parte­naire du Drupal­Camp 2024

06/03/2024

Nous sommes fiers d’an­non­cer que Makina Corpus est le spon­sor du Drupal­Camp à Rennes. Notre expert vous y propose une confé­rence « migrer de Drupal 7 à Drupal 10 ».

Voir l'article
Image
Encart article DrupalCamp 2024

Inscription à la newsletter

Nous vous avons convaincus