Validé avec les templates de catégorie PrestaShop 1.7.6+, 8.x et 9.x, ainsi qu'avec le hook filterCategoryContent.

Dans PrestaShop, un seul champ remplit quatre rôles. Le nom de catégorie que vous saisissez dans Catalogue → Catégories devient le libellé du menu, le texte du fil d'Ariane, la valeur utilisée pour générer le slug de l'URL simplifiée (sauf si vous modifiez le champ URL simplifiée), et le titre H1 en haut de la page de catégorie. C'est pratique, jusqu'au moment où l'on se rend compte que le menu et le titre n'ont pas les mêmes besoins. Un libellé de menu doit être assez court pour tenir dans une barre de navigation et se comprendre en une demi-seconde. Un H1 est le signal thématique le plus fort que Google lit sur la page, et la première chose qu'un visiteur voit après avoir cliqué. Il doit être précis, descriptif et aligné sur l'intention de recherche. Forcer les deux à sortir d'un seul champ signifie qu'il y en a toujours un qui est sacrifié, et dans la plupart des boutiques, c'est le H1 qui perd.

Cet article se concentre précisément sur cet élément : le H1 visible sur une page de catégorie, pourquoi il devrait pouvoir différer du nom de la catégorie, et comment mettre en place cette séparation dans PrestaShop sans casser votre menu, votre fil d'Ariane ni vos URL. Le sujet est volontairement ciblé. La question plus large de la structure de votre arborescence de catégories pour le SEO mérite un article à part, voir la structure des catégories PrestaShop, tandis que la mise en page, les filtres et la description situés sous le titre sont traités dans les pages de catégorie qui convertissent. Ici, nous restons sur le titre lui-même.

Pourquoi PrestaShop lie le H1 au nom de la catégorie dès le départ

Ouvrez n'importe quel thème PrestaShop par défaut et regardez le template de catégorie (templates/catalog/listing/category.tpl, qui récupère ses données depuis CategoryController et l'objet category). Le H1 est rendu à partir de {$category.name}, exactement la même valeur que celle utilisée par ps_mainmenu pour le menu, par le fil d'Ariane du thème ou du cœur, et par le générateur d'URL simplifiées pour le slug. Le formulaire de catégorie standard ne propose pas de champ distinct "titre de page". PrestaShop a fait une hypothèse de simplification raisonnable : un nom court, réutilisé partout. Pour un petit catalogue avec des catégories évidentes, cette hypothèse tient la route et vous n'avez pas intérêt à la combattre.

Elle ne tient plus dès que votre nom de catégorie est un bon libellé, mais un mauvais titre. "Couteaux" est une excellente entrée de menu. Mais comme H1 d'une page que vous aimeriez positionner sur "couteaux de cuisine professionnels" et convertir auprès de chefs comme de particuliers passionnés, le seul mot "Couteaux" ne dit presque rien à Google qu'il ne puisse déjà deviner, et ne rassure pas le visiteur sur le fait qu'il a atterri au bon endroit. Vous ne pouvez pas résoudre cela en renommant la catégorie, car "Couteaux de cuisine professionnels pour particuliers & chefs" insère une phrase de 60 caractères dans votre barre de menu et votre fil d'Ariane, où elle se coupe, se tronque et donne une impression de bug sur mobile.

Ce que le H1 contrôle vraiment, et ce qu'il ne contrôle pas

Il vaut la peine d'être précis, car le H1 est souvent accusé ou crédité de choses qui ne relèvent pas de lui. Le H1 n'est pas le méta-titre (la ligne cliquable dans les résultats Google, définie par {$page.meta.title} / le champ Méta-titre de l'onglet SEO). Les deux doivent viser le même mot-clé principal, mais ils sont rédigés pour des usages différents. Le méta-titre doit se démarquer dans une SERP concurrentielle et reste limité au pixel près ; le H1 est lu après le clic, sur la page, avec plus de place pour être complet. Ce n'est pas non plus la description de catégorie, le bloc de texte enrichi affiché sous le titre, qui porte l'essentiel du travail de mots-clés et de réassurance. Les confondre est la raison la plus fréquente pour laquelle une modification de "SEO catégorie" déçoit.

ÉlémentSource PrestaShopVu parDoit être
Libellé du menunom de catégorie (ps_mainmenu)Chaque visiteur, sur chaque pageCourt, facile à scanner, adapté à la barre
Fil d'Arianenom de catégorie (fil d'Ariane thème/cœur)Visiteurs en cours de navigation + GoogleCourt, cohérent avec le menu
Slug d'URLlink-rewrite de la catégorieGoogle, personnes qui partagent des liensCourt, stable, propre côté mots-clés
Titre H1nom de catégorie (category.tpl)Google + le visiteur après le clicPrécis, aligné sur l'intention, descriptif
Méta-titremeta_title de l'onglet SEOInternautes dans Google (avant le clic)Centré sur le mot-clé, limité en pixels

Quatre de ces cinq éléments acceptent très bien de partager le nom court. Seul le H1 a un rôle réellement différent, et c'est précisément pour cela que c'est l'élément qui mérite d'être détaché du nom.

Pourquoi un H1 de catégorie sur mesure vaut l'effort

Concrètement, que vous apporte la séparation du H1 ? Trois avantages nets, sans toucher au menu.

  • Pertinence pour les requêtes de longue traîne. "Chaussures" en H1 entre en concurrence avec tout le monde. "Chaussures de running homme, légères et amortissantes" correspond à une requête réelle, moins concurrentielle et plus proche de l'achat. Le H1 a du poids précisément parce qu'il est le titre déclaré de la page ; un titre spécifique aligne la page sur les recherches qui convertissent vraiment.
  • Réassurance après le clic. Un visiteur qui recherche "produits d'entretien écologiques" et arrive sur une page titrée "Produits d'entretien écologiques. Sans substances chimiques & biodégradables" comprend immédiatement qu'il est au bon endroit. Une page titrée "Entretien" l'oblige à revérifier la navigation pour s'en assurer. Cette hésitation crée un risque de rebond que vous avez fabriqué sans raison.
  • Différenciation entre catégories soeurs. Si vous avez trois sous-catégories de chaussures de running, trois titres presque identiques "Chaussures de running" n'apprennent rien à Google sur la raison d'être de pages distinctes, la recette classique de la cannibalisation. Des H1 différenciés ("Chaussures de running légères pour l'entraînement marathon" vs "Chaussures de trail pour terrains accidentés" vs "Chaussures de running amortissantes pour un usage quotidien") donnent à chaque page sa propre raison d'exister. Faire correspondre le titre à la manière dont les gens recherchent réellement est une discipline à part entière, voir la recherche intelligente pour apprendre à identifier ces requêtes.

Comment séparer le H1 du nom dans PrestaShop

Il existe trois approches réalistes. Elles conviennent à des situations différentes, et aucune n'est mauvaise par principe.

ApprocheEffortRésiste aux mises à jour du thème/cœur ?Idéal lorsque…
Champ de titre du thème (si le vôtre en propose un)Aucun, il existe déjàLié à ce thèmeVotre thème expose déjà un champ de titre séparé et vous ne prévoyez pas de changer de thème.
Surcharge de template de category.tplMoyen, intervention développeurRisque. Duplique le thème, peut casser lors d'une mise à jourVous avez un développeur et seulement quelques catégories à gérer à la main.
Module H1 dédiéFaible, installer & configurerOui, s'accroche via les hooks, sans dupliquer le thèmeVous voulez contrôler le H1 par catégorie sur un vrai catalogue, depuis le back-office, et conserver ce contrôle après les mises à jour.

Avant d'installer un module, vérifiez l'option la plus simple : quelques thèmes PrestaShop exposent bien un champ de titre ou de "titre de page" séparé dans l'éditeur de catégorie. Ouvrez Catalogue → Catégories → [votre catégorie] et cherchez un champ distinct du Nom standard. S'il existe, vous avez déjà la fonctionnalité, utilisez-la, tout simplement.

Si ce n'est pas le cas, la question devient : faut-il surcharger le template ou ajouter le champ proprement ? Une surcharge de category.tpl fonctionne, mais elle duplique votre thème : la prochaine mise à jour du thème peut la supprimer silencieusement ou entrer en conflit avec elle, et elle ne vous donne aucun champ dans le back-office, vous modifiez une logique personnalisée au lieu de saisir un titre. C'est acceptable pour deux catégories ; cela ne passe pas à l'échelle d'un catalogue, et cela place un réglage SEO entre les mains d'un développeur au lieu de celles du marchand.

Pour voir exactement ce que vous modifieriez, voici la ligne concernée dans un thème par défaut templates/catalog/listing/category.tpl. Le titre est rendu directement depuis le nom de la catégorie :

{block name='page_title'}
  <h1 class="h1">{$category.name}</h1>
{/block}

Une surcharge manuelle consiste à copier ce fichier dans themes/your-theme/templates/catalog/listing/category.tpl et à coder en dur la logique par catégorie, par exemple :

{block name='page_title'}
  {if $category.id == 12}
    <h1 class="h1">Professional Kitchen Knives for Home Cooks &amp; Chefs</h1>
  {else}
    <h1 class="h1">{$category.name}</h1>
  {/if}
{/block}

Cela fonctionne, mais regardez ce que cela coûte : le titre se trouve maintenant dans un template conditionné par l'ID de catégorie, pas dans le back-office ; chaque nouvelle catégorie nécessitant un H1 personnalisé demande une nouvelle intervention développeur ; et la surcharge se trouve sur le chemin de mise à jour de votre thème. Acceptable pour une poignée de pages, impraticable comme politique de catalogue, et c'est précisément le manque que comble l'approche par ajout de champ ci-dessous.

Le faire proprement avec Custom Category H1

Page de catégorie PrestaShop avec un titre H1 SEO personnalisé alors que la catégorie s'appelle toujours Vêtements dans les menus et les URL
Custom Category H1 définit un titre de page plus long et orienté SEO sans renommer la catégorie dans les menus, le fil d'Ariane ou les URL.

L'approche module existe exactement pour ce cas : contrôler le H1 par catégorie, de manière gérable par un non-développeur, sans dupliquer le thème. Notre module Custom Category H1 ajoute le champ manquant au lieu de réutiliser un champ existant, un champ Titre H1 personnalisé apparaît directement après le champ Nom dans le formulaire de catégorie PrestaShop standard, là où vous vous attendez déjà à modifier le titre d'une catégorie. En coulisse, il remplace le H1 côté serveur via le hook filterCategoryContent avant le rendu de la page, et non via un remplacement JavaScript après chargement, afin que Google lise le titre prévu dès le premier crawl, sans flash de l'ancien texte. Ce que cela signifie pour vous : le menu, le fil d'Ariane et l'URL continuent d'utiliser le nom court de la catégorie sans changement ; seul le titre visible sur la page change.

Quelques points concrets deviennent importants dès que vous dépassez une seule catégorie :

  • Multilingue. Les valeurs de H1 sont définies par langue, de sorte qu'une boutique en EN/DE/FR/PL peut renseigner un titre correctement localisé pour chacune, et non une chaîne anglaise plaquée sur toutes les langues de la boutique.
  • Variables pour travailler à l'échelle du catalogue. Au lieu de rédiger des centaines de titres à la main, vous pouvez les modéliser : {category_name}, {nb_products}, {page}, {page_label} et {shop_name} sont résolus au moment du rendu, par exemple, une règle parente "{category_name}, {nb_products} produits en stock" se propage aux enfants, tout en conservant le nom propre de chaque catégorie.
  • Ciblage en masse avec règles de repli. Un écran dédié Surcharges H1 vous permet d'appliquer un titre ou un modèle à de nombreuses catégories via une sélection par règles, avec exceptions et aperçu des catégories concernées. Une catégorie sans surcharge reprend d'abord une surcharge parente, puis son propre nom de catégorie, ainsi, aucune page ne se retrouve jamais sans titre.
  • Un champ sur la page de catégorie, une règle ailleurs. Modifier le H1 d'une seule catégorie depuis son propre écran d'édition crée une surcharge directe uniquement pour cette catégorie ; vider le champ la fait revenir à la règle partagée ou parente applicable. Vous n'avez jamais à choisir entre "modifier une catégorie" et "gérer en masse", les deux modes de gestion coexistent.

Rédiger un H1 de catégorie qui mérite sa place

Le mécanisme ne fait que la moitié du travail ; encore faut-il que le titre soit bon. Quelques règles simples :

  • Commencez par le mot-clé principal, formulé comme un vrai titre. "Robes d'été femme, styles décontractés & élégants" se lit naturellement. "Femme robes été décontracté élégant acheter en ligne pas cher" relève du bourrage de mots-clés et sera perçu comme tel.
  • Restez approximativement sous les 70 caractères. Les titres plus longs perdent en impact et se coupent maladroitement, et comme une grande partie du trafic des pages de catégorie vient désormais du mobile, testez son rendu sur écran étroit avant de valider. (Plus d'informations sur cette contrainte dans le commerce mobile.)
  • Alignez le titre sur l'intention visée par la page, pas sur le terme le plus large possible. Si les données montrent que les internautes arrivent sur la page via "meilleures chaussures de running pour pieds plats", laissez le H1 reconnaître cette audience au lieu de revenir par défaut à "Chaussures de running".
  • Ne demandez pas au H1 de faire le travail de la description. Le titre pose le sujet en une ligne ; le bloc de description de catégorie situé dessous apporte la profondeur. Gardez le H1 comme titre, et laissez la description (ainsi que le reste de la page) porter le détail, voir les pages de catégorie qui convertissent pour cette couche.

La version en une phrase

PrestaShop réutilise votre nom de catégorie comme H1 parce que, pour une boutique simple, c'est le choix par défaut logique. Dès qu'un nom est un bon libellé de menu mais un mauvais titre de page, vous atteignez la limite de ce comportement, et la solution consiste à détacher uniquement le H1, en laissant le menu, le fil d'Ariane et l'URL utiliser le nom court pour lequel ils sont faits. Que vous le fassiez avec un champ fourni par le thème, une surcharge de template maîtrisée ou un module qui ajoute proprement le champ et l'applique à l'échelle du catalogue, le principe reste le même : laissez le titre être précis là où il est lu, et rester court là où il doit tenir.

Questions fréquentes

Modifier le H1 de catégorie change-t-il mon URL ou casse-t-il mon menu ?

Non, c'est tout l'intérêt de les séparer. Le slug d'URL vient du champ link-rewrite (URL simplifiée) de la catégorie, le libellé du menu et le fil d'Ariane viennent du nom de la catégorie, et seul le H1 visible change. Découpler le titre ne touche à aucun des trois autres éléments : les liens existants continuent de fonctionner et votre barre de navigation reste courte.

Le H1 est-il la même chose que le méta-titre défini dans l'onglet SEO ?

Non. Le méta-titre ({$page.meta.title}, défini dans l'onglet SEO de la catégorie) est la ligne cliquable dans les résultats Google et se lit avant le clic. Le H1 est le titre sur la page, lu après le clic. Ils doivent viser le même mot-clé principal, mais sont rédigés pour des usages différents. Le méta-titre est limité en pixels pour la SERP ; le H1 a plus de place pour être complet.

Un H1 personnalisé peut-il nuire au SEO s'il diffère du nom de la catégorie ?

Non. Google lit le H1 comme le sujet déclaré de la page ; un titre plus spécifique et aligné sur l'intention est généralement un avantage, pas une pénalité. Le nom reste présent dans le menu, le fil d'Ariane et l'URL : le signal de mot-clé n'est donc pas perdu, vous ajoutez de la précision au titre, sans la retirer du reste de la page.

Puis-je définir un H1 différent par langue ?

Avec une surcharge de template, il faudrait créer des branches selon la langue dans le template, ce qui devient vite lourd. Une approche basée sur un champ stocke le H1 par langue, comme le nom de catégorie : une boutique en EN/DE/FR/PL définit donc un titre correctement localisé pour chaque langue de la boutique, au lieu de coller une seule chaîne anglaise sur toutes les langues.

Que se passe-t-il pour une catégorie à laquelle je ne donne jamais de H1 personnalisé ?

Elle continue d'afficher son nom de catégorie comme titre, exactement comme PrestaShop le fait par défaut. Avec une approche par règles/surcharges, une catégorie sans surcharge propre reprend une surcharge parente, puis son propre nom, une page n'est donc jamais laissée sans titre, que vous l'ayez modifiée ou non.

À lire aussi

David Miller

David Miller

Fondateur, mypresta.rocks
À propos de l’auteur

David Miller est un spécialiste PrestaShop fort de plus de dix ans d'expérience concrète et le fondateur de mypresta.rocks, un studio de développement situé à Tychy, en Pologne. Il conçoit et maintient un catalogue de 159 modules PrestaShop, dont 21 suites « Revolution » couvrant le SEO, le checkout, la sécurité, la performance, le marketing, la recherche, le support et la gestion d'entrepôt, qui améliorent chaque jour de vraies boutiques, testés sur PrestaShop 1.7.8, 8.x et 9.x. Il assure également la maintenance de boutiques en production : son travail se juge donc sur des ventes réelles, pas sur des démos. Son expérience couvre l'ensemble du e-commerce. Performance, sécurité, SEO et marketing, et va au-delà de PrestaShop, jusqu'à WooCommerce, Shopify et les systèmes sur mesure. Sur le blog, il écrit sur la face technique de PrestaShop : ce que la plateforme fait vraiment, ce qui casse en production et quelles solutions tiennent dans la durée.

Partager cet article:

Commentaires

Aucun commentaire pour le moment. Soyez le premier !

Cet article vous a plu ?

Recevez nos derniers conseils, guides et mises à jour de modules dans votre boîte mail.

Vous pouvez vous désinscrire à tout moment. Vous trouverez pour cela nos informations de contact dans les conditions d'utilisation du site.

Chargement...
Retour en haut