Magento Magento Open Source & Adobe Commerce

Ajouter le GARAN-Label et la mention légale de garantie dans Magento 2

Deux tâches, deux mécanismes : une mention commune à tout le site via un bloc CMS et le layout XML, et un GARAN-Label par produit via un attribut produit. Les deux fonctionnent avec les moyens natifs de Magento, sous Luma comme sous Hyvä.

Au 11 septembre 2026, Magento Open Source et Adobe Commerce n'intègrent aucune fonctionnalité native pour la mention légale de garantie ou le GARAN-Label. Plusieurs extensions du marketplace couvrent le sujet. Cette page montre comment faire avec les moyens du bord, pour que vous puissiez décider si une extension vous est vraiment nécessaire. Il s'agit d'une recommandation basée sur la situation actuelle du marché, pas d'un conseil juridique.

Deux tâches, deux mécanismes

Mention légale de garantie : pour tout le site

Identique pour chaque produit, mais différente selon la langue. En termes Magento : un bloc CMS par store view, inséré une seule fois dans le layout de la page produit.

Télécharger la mention dans les 24 langues de l'UE →

GARAN-Label : par produit

Différent pour chaque modèle (marque, modèle, durée de garantie), identique dans toutes les langues. En termes Magento : un attribut produit à portée globale, affiché par un petit template sur la fiche produit.

Duquel des deux avez-vous besoin ? →

Mention légale de garantie : bloc CMS plus layout XML

  1. Sous Content > Blocks, créez un bloc avec l'identifiant legal-guarantee-notice et téléversez l'image de la mention dans la langue de ce store view.
  2. Créez un bloc par langue, tous avec le même identifiant, et affectez chacun aux store views correspondants. Magento résout l'identifiant par store view, le layout n'a donc besoin que d'une seule référence.
  3. Insérez le bloc dans la page produit avec une mise à jour de layout dans votre thème :
<!-- app/design/frontend/Vendor/theme/Magento_Catalog/layout/catalog_product_view.xml -->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
  <body>
    <referenceContainer name="product.info.main">
      <block class="Magento\Cms\Block\Block" name="legal.guarantee.notice" after="product.info.overview">
        <arguments>
          <argument name="block_id" xsi:type="string">legal-guarantee-notice</argument>
        </arguments>
      </block>
    </referenceContainer>
  </body>
</page>

Pas d'accès au thème ? Le même résultat est possible sans code : sous Content > Widgets, créez un widget de type « CMS Static Block », choisissez la mise à jour de layout « Catalog Product View » et un conteneur dans la zone de contenu principale. Page Builder permet aussi de modifier le contenu du bloc lui-même, pratique si c'est le marketing plutôt que le développement qui maintient la mention.

GARAN-Label : créer l'attribut produit

Sous Stores > Attributes > Product, ajoutez un nouvel attribut avec ces réglages :

Attribute code garan_label_url En minuscules, sans espaces. Vous y ferez référence dans les templates et les fichiers d'import.
Catalog input type Text Field Contient l'URL du PNG auto-hébergé. Voir la FAQ pour savoir pourquoi pas une Media Image.
Scope Global Le label est neutre en langue : marque, modèle et durée sont identiques dans chaque store view. Une portée globale signifie une valeur, une ligne d'import par référence.
Visible on Catalog Pages on Storefront No Sinon l'URL brute apparaît dans l'onglet « More Information ». Vous affichez l'image vous-même à la place.
Attribute set Tous les jeux contenant des produits sous garantie Sous Stores > Attributes > Attribute Set, glissez l'attribut dans un groupe de chaque jeu concerné. Les produits d'un jeu sans l'attribut ne peuvent pas stocker de valeur.

La décision de portée est celle qui compte pour une configuration en 24 langues : la mention diffère par store view et vit dans des blocs CMS ; le label est global et vit dans un seul attribut. Confondre les deux est la source la plus fréquente de problèmes d'import par la suite.

Afficher le label sur la fiche produit

Vous avez trois options, de la plus à la moins maîtrisée :

  1. Template plus layout XML. Ajoutez à votre thème un petit template qui affiche l'image quand l'attribut est renseigné, et référencez-le dans catalog_product_view.xml à côté du bloc de la mention. Fonctionne sous Luma et Hyvä ; seul le balisage diffère.
  2. Page Builder ou bloc CMS avec un snippet dynamique. Convient pour la mention ; pas pour le label par produit, car un bloc statique ne peut pas lire l'attribut du produit courant sans code personnalisé.
  3. Widget. Même limite que les blocs CMS pour les données par produit. Bien pour la mention, pas pour le label.
<?php /** @var \Magento\Catalog\Block\Product\View $block */
$labelUrl = $block->getProduct()->getData('garan_label_url'); ?>
<?php if ($labelUrl): ?>
  <div class="garan-label">
    <img src="<?= $block->escapeUrl($labelUrl) ?>"
         alt="<?= $block->escapeHtmlAttr(__('Étiquette de garantie UE (GARAN) pour ce produit')) ?>"
         loading="lazy" />
  </div>
<?php endif; ?>

Règles de placement

  • Sur la fiche produit, dans la zone d'information près de l'image et du prix, pas dans la galerie d'images.
  • En couleur et à une taille lisible. Ne le réduisez pas à une icône.
  • Visible sans interaction : pas au survol, pas uniquement dans un onglet, pas uniquement sur une page liée.
  • Utilisez la version PNG. Pourquoi le PNG plutôt que le SVG →

Remplir l'attribut en masse par import CSV

Pour un grand catalogue, vous ne remplissez pas l'attribut produit par produit. Générez les labels en masse, hébergez les fichiers PNG sur votre propre serveur ou CDN et importez les URL avec l'import produit natif de Magento, sous System > Data Transfer > Import :

  • Entity type : Products. Import behavior : Add/Update.
  • Le fichier n'a besoin que de deux colonnes : sku et garan_label_url. Toutes les autres données produit restent intactes.
  • L'attribut doit exister avant l'import. Une colonne correspondant à un attribut inconnu n'est pas appliquée.
sku,garan_label_url
GSR18V-55-BLUE,https://cdn.example.com/garan/bosch-gsr-18v-55.png
GSR18V-55-BLACK,https://cdn.example.com/garan/bosch-gsr-18v-55.png
DHP486Z,https://cdn.example.com/garan/makita-dhp486.png

Le piège de la portée multi-store : si vous avez créé l'attribut avec une portée store view, les lignes sans colonne store_view_code n'écrivent que dans la portée par défaut, et certains store views peuvent conserver une ancienne valeur. Avec la portée globale recommandée ci-dessus, la colonne est inutile et le problème ne se pose pas.

Le traitement CSV de GARAN-Label vous donne la marque, le modèle et l'URL du label par ligne ; le rapprocher de votre liste de références se fait avec une simple RECHERCHEV dans n'importe quel tableur. Comment fonctionne le traitement en masse et ce qu'il coûte →

Cache : rafraîchir après chaque mise à jour d'attribut

Le grand classique de Magento : l'import annonce un succès, l'admin affiche la nouvelle valeur, le front n'affiche toujours rien. Les pages produit sont servies depuis le cache pleine page, et un import ne les invalide pas de façon fiable.

  • Sous System > Cache Management, rafraîchissez les types de cache marqués comme invalidés, ou
  • en ligne de commande : bin/magento cache:clean full_page block_html, et
  • si vos indexeurs sont en « Update by Schedule », attendez le passage du cron ou déclenchez bin/magento indexer:reindex pour les indexeurs produit.

Avec Varnish ou Fastly devant la boutique, il en va de même pour le cache en périphérie. Faites du rafraîchissement du cache une étape de votre routine d'import, pas une réflexion après coup.

Rester synchronisé : cron plus API pour les catalogues qui évoluent

Si de nouveaux produits arrivent chaque semaine, l'aller-retour CSV manuel lasse vite. La version automatisée comporte trois parties :

  1. Un cron sélectionne les produits ayant une durée de garantie supérieure à deux ans et un garan_label_url vide.
  2. Pour chacun, il appelle l'API GARAN-Label avec la marque, le modèle et la durée, et stocke le PNG renvoyé sur votre propre espace de stockage.
  3. Il réécrit l'URL via l'API REST de Magento (PUT /V1/products/{sku} avec l'attribut personnalisé) ou directement via un repository dans un petit module, puis nettoie le cache de ce produit.

Les requêtes pour une combinaison qui a déjà un label renvoient le fichier existant sans consommer de crédit, le job peut donc tourner de manière idempotente. Référence API avec exemples de code →

Multi-store et multilingue : quelle mention pour quel store view

Le store view de Magento est l'unité naturelle pour la langue de la mention. Affectez le bloc CMS avec la mention en français aux store views français, celui en allemand aux store views allemands, et ainsi de suite. Si un store view dessert un pays dans une langue pour laquelle la mention n'existe pas, utilisez la langue officielle de l'UE de ce pays. Le GARAN-Label n'a pas besoin d'une telle correspondance : un label par modèle sert tous les store views.

Les boutiques avec un site web par pays et plusieurs store views par site devraient affecter les blocs au niveau du store view, pas du site web, afin qu'un site belge puisse afficher côte à côte les mentions en français et en néerlandais.

Comment générer les labels

Commencez par créer un compte gratuit sur GARAN-Label.com. Décidez ensuite comment générer les labels :

Petit catalogue

Mode manuel : indiquez la marque, le modèle et la durée de garantie, téléchargez le PNG, téléversez-le dans votre espace média et collez l'URL dans l'attribut.

Gros catalogue

Mode CSV pour la gamme existante, API pour les nouveautés. Les deux renvoient une URL par label, que vous hébergez vous-même et importez.

Guide de la génération en masse →

Prêt à étiqueter votre catalogue Magento ?

Inscrivez-vous gratuitement et testez le mode bac à sable avant de dépenser le moindre crédit.

Essai gratuit
FAQ

Questions fréquentes sur Magento 2

Ai-je besoin d'une extension Magento 2 pour le GARAN-Label ?

Non. Un bloc CMS plus une mise à jour de layout XML couvrent la mention légale de garantie, et un attribut produit plus un petit template couvrent le GARAN-Label. Des extensions existent et peuvent faire gagner du temps, mais rien ici n'en exige une.

Est-ce compatible avec le thème Hyvä ?

Oui. L'attribut, le bloc CMS et le layout XML sont indépendants du thème. Seul le fichier de template qui affiche l'image diffère : sous Hyvä, vous le placez dans votre thème enfant et utilisez des classes Tailwind à la place du balisage Luma.

L'attribut doit-il être une Media Image ou un champ texte contenant une URL ?

Un champ texte contenant l'URL du label auto-hébergé est le choix pragmatique. Un attribut Media Image ajoute un rôle d'image à la galerie produit, précisément là où le label ne doit pas apparaître, et il est plus difficile à remplir par import CSV.

Puis-je simplement afficher l'attribut dans l'onglet « More Information » ?

Pas comme unique emplacement. Le label doit être visible en couleur sur la fiche produit, et un onglet sur lequel le client doit d'abord cliquer est un point faible. Affichez-le dans la zone d'information principale du produit et laissez l'attribut en dehors de la liste automatique des attributs.

J'ai importé de nouvelles valeurs d'attribut, mais le front affiche toujours l'ancien état. Pourquoi ?

Le cache pleine page. Un import n'invalide pas de façon fiable les pages produit en cache. Rafraîchissez les types de cache invalidés sous System > Cache Management ou lancez bin/magento cache:clean full_page, et réindexez si vos indexeurs tournent par cron.

D'autres questions ? Voir toutes les FAQ →

Profitez de 5 % de réduction avec le code lors du paiement