🔍 SEOIntermédiaire PS 1.6 PS 1.7 PS 8.x

Personnaliser la balise H1 des fiches produits PrestaShop

Ajoutez un champ H1 personnalisé sur vos fiches produits PrestaShop pour un contrôle SEO total. Override, import CSV et bonnes pratiques pour 1.6 à 8.x.

En bref : Ajoutez un champ H1 personnalisé et multilingue à vos fiches produits PrestaShop en combinant une colonne SQL dans ps_product_lang, un override de la classe Product et un override de AdminImportController pour l'import CSV en masse. Compatible de PrestaShop 1.6 à 8.x.

Publié le 21 mars 2026 6 min de lecture Alexandre Carette

Pourquoi personnaliser la balise H1 de vos produits PrestaShop

Par défaut, PrestaShop utilise le nom du produit comme balise H1 sur la fiche produit. C'est logique d'un point de vue fonctionnel, mais c'est souvent un frein côté SEO : le nom commercial d'un produit ne correspond pas toujours à la requête que tape un internaute sur Google.

Prenons un exemple concret. Votre produit s'appelle *"Modèle Élégance 2024"* dans votre catalogue. C'est le nom que vos clients connaissent. Mais la requête SEO à cibler serait plutôt *"Robe de soirée longue noire taille grande"*. Sans H1 personnalisé, vous êtes coincé.

L'objectif de ce guide est d'ajouter un champ H1 dédié, multilingue et importable par CSV à vos fiches produits PrestaShop, de la version 1.6 jusqu'à la 8.x.

Architecture de la solution

La modification repose sur trois piliers :

  1. **Base de données** — ajout d'une colonne `h1_prod` dans `ps_product_lang`
  2. **Modèle objet** — override de la classe `Product` pour déclarer le nouveau champ
  3. **Back-office** — affichage du champ dans le formulaire d'édition produit
  4. **Import CSV** — override de `AdminImportController` pour mapper le champ à l'import
  5. **Template front** — affichage du H1 personnalisé à la place du nom produit
  6. Étape 1 : Ajouter la colonne en base de données

    Avant toute modification de code, il faut créer le champ dans la table ps_product_lang. C'est une table multilingue, donc chaque produit aura un H1 par langue.

    
    ALTER TABLE `ps_product_lang`
    ADD COLUMN `h1_prod` TEXT DEFAULT NULL
    AFTER `description_short`;
    

    Attention : remplacez le préfixe ps_ par celui de votre installation si vous l'avez modifié. Vérifiez-le dans config/settings.inc.php (1.6) ou dans le fichier .env / parameters.php (1.7+/8.x).

    Ce champ est volontairement de type TEXT et non VARCHAR pour laisser de la marge, même si en pratique un H1 ne devrait jamais dépasser 70 caractères.

    Étape 2 : Override de la classe Product

    Le modèle objet de PrestaShop doit connaître ce nouveau champ pour le lire et l'écrire automatiquement.

    PrestaShop 1.6

    Créez le fichier override/classes/Product.php :

    
    <?php
    
    class Product extends ProductCore
    {
        /** @var string Balise H1 personnalisée (multilingue) */
        public $h1_prod;
    
        public function __construct(
            $id_product = null,
            $full = false,
            $id_lang = null,
            $id_shop = null,
            Context $context = null
        ) {
            self::$definition['fields']['h1_prod'] = [
                'type' => self::TYPE_HTML,
                'lang' => true,
                'validate' => 'isCleanHtml',
                'size' => 255,
            ];
    
            parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
        }
    }
    

    PrestaShop 1.7 / 8.x

    Le système d'override fonctionne toujours, mais PrestaShop 8.x encourage l'utilisation de modules avec des hooks pour modifier le formulaire produit. La classe Product peut néanmoins être overridée de la même manière.

    Pour une approche plus pérenne en 8.x, privilégiez un module qui utilise :

    • Le hook `actionProductFormBuilderModifier` pour ajouter le champ au formulaire Symfony
    • Le hook `actionAfterUpdateProductFormHandler` pour sauvegarder la valeur
    • La définition du champ dans l'override `Product.php` reste identique
    
    <?php
    // modules/monmodule/src/Form/ProductH1FormModifier.php
    
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    
    class ProductH1FormModifier
    {
        public function modify($builder, array $data): void
        {
            $builder->get('seo')->add('h1_prod', TextType::class, [
                'label' => 'H1 personnalisé',
                'required' => false,
                'attr' => [
                    'placeholder' => 'Laissez vide pour utiliser le nom du produit',
                    'maxlength' => 255,
                ],
            ]);
        }
    }
    

    Point critique : après avoir créé un override, supprimez le fichier var/cache/dev/class_index.php et var/cache/prod/class_index.php (en 1.6 : cache/class_index.php). Sans cette étape, PrestaShop ne détectera pas votre override.

    Étape 3 : Afficher le champ dans le back-office (1.6)

    En PrestaShop 1.6, le formulaire produit est géré par des fichiers .tpl. Pour ajouter le champ H1 dans l'onglet "Informations" :

    Créez le fichier override/controllers/admin/templates/products/informations.tpl en copiant l'original depuis controllers/admin/templates/products/informations.tpl, puis ajoutez après le champ du nom produit :

    
    <div class="form-group">
        <label class="control-label col-lg-3" for="h1_prod_{$id_lang}">
            <span class="label-tooltip" data-toggle="tooltip" title="{l s='Balise H1 personnalisée pour le SEO. Laissez vide pour utiliser le nom du produit.'}">
                {l s='H1 personnalisé'}
            </span>
        </label>
        <div class="col-lg-5">
            {foreach from=$languages item=language}
                <div class="translatable-field lang-{$language.id_lang}"
                     {if $language.id_lang != $defaultFormLanguage}style="display:none"{/if}>
                    <input type="text"
                           id="h1_prod_{$language.id_lang}"
                           name="h1_prod_{$language.id_lang}"
                           class="form-control"
                           value="{$product->h1_prod[$language.id_lang]|escape:'html':'UTF-8'}"
                           maxlength="255" />
                </div>
            {/foreach}
        </div>
    </div>
    

    Étape 4 : Import CSV du H1 personnalisé

    Pour les catalogues volumineux, saisir chaque H1 à la main est impensable. L'override de AdminImportController permet d'ajouter le champ H1 dans le mapping de l'import CSV.

    PrestaShop 1.6

    Créez override/controllers/admin/AdminImportController.php :

    
    <?php
    
    class AdminImportController extends AdminImportControllerCore
    {
        public function __construct()
        {
            parent::__construct();
    
            $this->available_fields += [
                'h1_prod' => ['label' => $this->l('H1 personnalisé')],
            ];
        }
    }
    

    Dans votre fichier CSV, ajoutez une colonne h1_prod avec les valeurs souhaitées. Lors de l'import, le champ apparaîtra dans la liste de mapping et sera automatiquement sauvegardé grâce à la définition ajoutée dans la classe Product.

    PrestaShop 8.x

    En version 8.x, l'import utilise toujours le même mécanisme sous-jacent. L'override de AdminImportController fonctionne, mais si vous avez opté pour un module, vous pouvez aussi utiliser le hook actionProductImportFieldsModifier pour enregistrer le champ proprement.

    Étape 5 : Afficher le H1 personnalisé en front-office

    La dernière étape consiste à afficher le H1 personnalisé sur la fiche produit côté client.

    PrestaShop 1.6 (Smarty)

    Dans votre thème, fichier themes/votre-theme/product.tpl, remplacez :

    
    <h1>{$product->name}</h1>
    

    par :

    
    <h1>{if $product->h1_prod}{$product->h1_prod}{else}{$product->name}{/if}</h1>
    

    PrestaShop 1.7 / 8.x

    Le produit doit être enrichi via le hook actionPresentProduct ou filterProductContent pour transmettre le champ au template :

    
    public function hookActionPresentProduct(array $params): void
    {
        $product = new Product((int) $params['product']['id_product'], false, Context::getContext()->language->id);
    
        if (!empty($product->h1_prod)) {
            $params['presentedProduct']['h1_custom'] = $product->h1_prod;
        }
    }
    

    Puis dans themes/votre-theme/templates/catalog/product.tpl :

    
    <h1>{if isset($product.h1_custom) && $product.h1_custom}{$product.h1_custom}{else}{$product.name}{/if}</h1>
    

    Appliquer le même principe aux catégories

    La même technique s'applique aux pages catégories en ajoutant un champ h1_cat dans ps_category_lang et en overridant la classe Category. La démarche est strictement identique :

    1. `ALTER TABLE ps_category_lang ADD COLUMN h1_cat TEXT DEFAULT NULL;`
    2. Override de `Category.php` avec la définition du champ
    3. Modification du template catégorie en front
    4. Cela permet d'avoir des H1 de catégorie orientés SEO (ex : *"Chaussures de randonnée homme imperméables"*) tout en gardant un nom de catégorie court dans le menu (*"Randonnée Homme"*).

      Bonnes pratiques SEO pour vos H1

      • **Un seul H1 par page** — c'est la règle fondamentale. Vérifiez que votre thème ne génère pas un second H1 (logo, sidebar, etc.)
      • **Inclure le mot-clé principal** en début de H1 quand c'est naturel
      • **70 caractères maximum** — au-delà, l'impact SEO diminue et l'affichage peut être tronqué
      • **H1 différent du title** — le `` cible Google, le H1 cible le lecteur humain. Variez les formulations</li> <li>**Ne pas dupliquer** — chaque page doit avoir un H1 unique. L'import CSV facilite l'audit en masse</li> <li>**Tester avec Screaming Frog** ou un crawler similaire pour détecter les H1 manquants, dupliqués ou trop longs</li> </ul> <h2>Vider le cache après modification</h2> <p>Après chaque modification d'override, pensez à :</p> <pre><code class="language-bash"> # PrestaShop 1.6 rm -f cache/class_index.php # PrestaShop 1.7 / 8.x rm -rf var/cache/* # ou via le back-office : Paramètres avancés > Performances > Vider le cache </code></pre> <p>Sans cette étape, vos modifications ne seront tout simplement pas prises en compte.</p></div><div class="mt-10 flex flex-wrap gap-2"><!--[--><span class="text-xs font-medium px-3 py-1 rounded-full bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-slate-400"> #h1</span><span class="text-xs font-medium px-3 py-1 rounded-full bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-slate-400"> #seo-onpage</span><span class="text-xs font-medium px-3 py-1 rounded-full bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-slate-400"> #override</span><span class="text-xs font-medium px-3 py-1 rounded-full bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-slate-400"> #import-csv</span><span class="text-xs font-medium px-3 py-1 rounded-full bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-slate-400"> #fiche-produit</span><span class="text-xs font-medium px-3 py-1 rounded-full bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-slate-400"> #balise-titre</span><!--]--></div><section class="mt-14"><h2 id="questions-frequentes" class="text-2xl font-bold text-gray-800 dark:text-white mb-2"> Questions fréquentes </h2><p class="text-sm text-gray-500 dark:text-slate-400 mb-6">Tout ce que vous devez savoir sur ce sujet.</p><dl class="space-y-3"><!--[--><div class="bg-white dark:bg-slate-900 border border-gray-100 dark:border-slate-800 rounded-xl shadow-sm overflow-hidden"><dt><button type="button" class="w-full flex items-center justify-between gap-4 px-6 py-4 text-left hover:bg-gray-50 dark:hover:bg-slate-800 transition-colors" aria-expanded="false"><span class="text-sm font-semibold text-gray-800 dark:text-white">Comment ajouter un champ H1 personnalisé sur les fiches produits PrestaShop ?</span><svg class="w-5 h-5 text-primary-500 shrink-0 transition-transform duration-300" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button></dt><dd class="px-6 pb-5 text-sm text-gray-600 dark:text-slate-300 leading-relaxed border-t border-gray-50 dark:border-slate-800" style="display:none;"><p class="pt-4">Il faut intervenir à trois niveaux : ajouter une colonne h1_prod dans la table ps_product_lang via SQL, créer un override de la classe Product pour déclarer le champ dans la définition ObjectModel, puis modifier le template back-office (1.6) ou utiliser un hook Symfony (8.x) pour afficher le champ dans le formulaire d'édition produit. N'oubliez pas de supprimer le fichier class_index.php après chaque override.</p></dd></div><div class="bg-white dark:bg-slate-900 border border-gray-100 dark:border-slate-800 rounded-xl shadow-sm overflow-hidden"><dt><button type="button" class="w-full flex items-center justify-between gap-4 px-6 py-4 text-left hover:bg-gray-50 dark:hover:bg-slate-800 transition-colors" aria-expanded="false"><span class="text-sm font-semibold text-gray-800 dark:text-white">Peut-on importer les balises H1 en masse via CSV dans PrestaShop ?</span><svg class="w-5 h-5 text-primary-500 shrink-0 transition-transform duration-300" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button></dt><dd class="px-6 pb-5 text-sm text-gray-600 dark:text-slate-300 leading-relaxed border-t border-gray-50 dark:border-slate-800" style="display:none;"><p class="pt-4">Oui, en créant un override de AdminImportController qui ajoute le champ h1_prod dans la liste des champs disponibles à l'import. Ajoutez ensuite une colonne h1_prod dans votre fichier CSV. Lors de l'import, le champ apparaîtra dans le mapping et sera automatiquement enregistré en base grâce à la définition dans la classe Product.</p></dd></div><div class="bg-white dark:bg-slate-900 border border-gray-100 dark:border-slate-800 rounded-xl shadow-sm overflow-hidden"><dt><button type="button" class="w-full flex items-center justify-between gap-4 px-6 py-4 text-left hover:bg-gray-50 dark:hover:bg-slate-800 transition-colors" aria-expanded="false"><span class="text-sm font-semibold text-gray-800 dark:text-white">Le H1 personnalisé fonctionne-t-il avec PrestaShop 8.x ?</span><svg class="w-5 h-5 text-primary-500 shrink-0 transition-transform duration-300" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button></dt><dd class="px-6 pb-5 text-sm text-gray-600 dark:text-slate-300 leading-relaxed border-t border-gray-50 dark:border-slate-800" style="display:none;"><p class="pt-4">Oui. Le système d'override de la classe Product reste fonctionnel en PrestaShop 8.x. En revanche, pour le formulaire back-office, il est recommandé d'utiliser un module avec les hooks Symfony (actionProductFormBuilderModifier) plutôt qu'un override de template .tpl, car le back-office 8.x utilise le framework Symfony pour le formulaire produit.</p></dd></div><div class="bg-white dark:bg-slate-900 border border-gray-100 dark:border-slate-800 rounded-xl shadow-sm overflow-hidden"><dt><button type="button" class="w-full flex items-center justify-between gap-4 px-6 py-4 text-left hover:bg-gray-50 dark:hover:bg-slate-800 transition-colors" aria-expanded="false"><span class="text-sm font-semibold text-gray-800 dark:text-white">Pourquoi avoir un H1 différent du nom de produit en e-commerce ?</span><svg class="w-5 h-5 text-primary-500 shrink-0 transition-transform duration-300" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button></dt><dd class="px-6 pb-5 text-sm text-gray-600 dark:text-slate-300 leading-relaxed border-t border-gray-50 dark:border-slate-800" style="display:none;"><p class="pt-4">Le nom commercial d'un produit est souvent court et orienté marque (ex : Modèle Élégance), alors que les internautes recherchent des termes descriptifs (ex : robe de soirée longue noire). Un H1 personnalisé permet de cibler la requête SEO sans modifier le nom du produit dans le catalogue, les factures ou les emails de commande.</p></dd></div><div class="bg-white dark:bg-slate-900 border border-gray-100 dark:border-slate-800 rounded-xl shadow-sm overflow-hidden"><dt><button type="button" class="w-full flex items-center justify-between gap-4 px-6 py-4 text-left hover:bg-gray-50 dark:hover:bg-slate-800 transition-colors" aria-expanded="false"><span class="text-sm font-semibold text-gray-800 dark:text-white">Faut-il aussi personnaliser le H1 des pages catégories PrestaShop ?</span><svg class="w-5 h-5 text-primary-500 shrink-0 transition-transform duration-300" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button></dt><dd class="px-6 pb-5 text-sm text-gray-600 dark:text-slate-300 leading-relaxed border-t border-gray-50 dark:border-slate-800" style="display:none;"><p class="pt-4">Absolument. Le même principe s'applique en ajoutant un champ h1_cat dans ps_category_lang et en overridant la classe Category. Cela permet d'avoir un nom de catégorie court dans le menu de navigation tout en affichant un H1 optimisé SEO sur la page catégorie elle-même.</p></dd></div><div class="bg-white dark:bg-slate-900 border border-gray-100 dark:border-slate-800 rounded-xl shadow-sm overflow-hidden"><dt><button type="button" class="w-full flex items-center justify-between gap-4 px-6 py-4 text-left hover:bg-gray-50 dark:hover:bg-slate-800 transition-colors" aria-expanded="false"><span class="text-sm font-semibold text-gray-800 dark:text-white">Quel est l'impact sur les performances d'ajouter un override Product ?</span><svg class="w-5 h-5 text-primary-500 shrink-0 transition-transform duration-300" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button></dt><dd class="px-6 pb-5 text-sm text-gray-600 dark:text-slate-300 leading-relaxed border-t border-gray-50 dark:border-slate-800" style="display:none;"><p class="pt-4">L'impact est négligeable. L'override ajoute simplement un champ à la définition ObjectModel, ce qui génère une colonne supplémentaire dans les requêtes SQL de chargement produit. Le surcoût est de l'ordre de quelques octets par requête. Assurez-vous simplement de vider le cache après la mise en place pour que le class_index soit regénéré correctement.</p></dd></div><!--]--></dl></section><div class="mt-14 rounded-2xl overflow-hidden border border-gray-100 dark:border-slate-800 shadow-sm"><div class="flex flex-col sm:flex-row"><div class="sm:w-56 shrink-0 bg-gray-900 text-white flex flex-col items-center justify-center p-8 text-center gap-4"><div class="w-14 h-14 rounded-2xl bg-primary-500/20 flex items-center justify-center"><svg class="w-7 h-7 text-primary-400" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.6"><path stroke-linecap="round" stroke-linejoin="round" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path></svg></div><div><p class="font-bold text-lg leading-snug">Un projet PrestaShop ?</p><p class="text-sm text-gray-400 mt-1">Discutons-en directement.</p></div><div class="mt-2 pt-3 border-t border-white/10 w-full text-center"><div class="text-warning-400 tracking-widest text-sm">★★★★★</div><p class="text-xs text-gray-300 mt-0.5">193 projets livrés</p></div></div><div class="flex-1 p-8 bg-white dark:bg-slate-900"><form class="space-y-4"><div><label class="block text-xs font-medium text-gray-500 dark:text-slate-400 mb-1" for="contact-email">Votre adresse e-mail</label><input id="contact-email" value="" type="email" required placeholder="vous@exemple.com" class="w-full rounded-xl border border-gray-200 dark:border-slate-700 bg-gray-50 dark:bg-slate-800 px-4 py-2.5 text-sm text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-primary-400"></div><div><label class="block text-xs font-medium text-gray-500 dark:text-slate-400 mb-1" for="contact-msg">Votre message</label><textarea id="contact-msg" rows="4" class="w-full rounded-xl border border-gray-200 dark:border-slate-700 bg-gray-50 dark:bg-slate-800 px-4 py-2.5 text-sm text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-primary-400 resize-none">Bonjour Alexandre, J'ai lu votre article "Personnaliser la balise H1 des fiches produits PrestaShop". Je souhaite vous contacter pour…</textarea></div><button type="submit" class="w-full rounded-xl bg-primary-600 hover:bg-primary-700 text-white font-semibold py-3 text-sm transition-colors"> Démarrer mon projet </button><p class="text-center text-xs text-gray-500 dark:text-slate-400">Gratuit & sans engagement — réponse sous 24h</p></form></div></div></div><div class="mt-10 space-y-4"><!----><div class="mb-4"><div class="flex items-center gap-2 mb-3"><svg class="w-4 h-4 text-primary-500" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25"></path></svg><h3 class="text-sm font-bold text-gray-800 dark:text-white">Lire sur le blog</h3></div><div class="grid gap-2"><!--[--><a href="/blog/seo/referencement/guide-complet-prestashop-2026" class="group flex items-center gap-3 p-3 rounded-xl border border-gray-100 dark:border-slate-800 hover:border-primary-200 dark:hover:border-primary-500/20 transition-all"><span class="text-sm text-gray-700 dark:text-slate-300 group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors truncate">Référencement PrestaShop 2026 : le guide complet SEO + IA</span><svg class="w-4 h-4 text-gray-300 ml-auto shrink-0 group-hover:text-primary-500 group-hover:translate-x-1 transition-all" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"></path></svg></a><a href="/blog/seo/referencement/seo-google-classique-prestashop" class="group flex items-center gap-3 p-3 rounded-xl border border-gray-100 dark:border-slate-800 hover:border-primary-200 dark:hover:border-primary-500/20 transition-all"><span class="text-sm text-gray-700 dark:text-slate-300 group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors truncate">SEO Google classique pour PrestaShop : 7 leviers techniques</span><svg class="w-4 h-4 text-gray-300 ml-auto shrink-0 group-hover:text-primary-500 group-hover:translate-x-1 transition-all" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"></path></svg></a><a href="/blog/seo/referencement/aio-geo-intelligence-artificielle-prestashop" class="group flex items-center gap-3 p-3 rounded-xl border border-gray-100 dark:border-slate-800 hover:border-primary-200 dark:hover:border-primary-500/20 transition-all"><span class="text-sm text-gray-700 dark:text-slate-300 group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors truncate">AIO et GEO pour PrestaShop : optimiser pour les moteurs IA</span><svg class="w-4 h-4 text-gray-300 ml-auto shrink-0 group-hover:text-primary-500 group-hover:translate-x-1 transition-all" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"></path></svg></a><!--]--></div></div><div class="grid grid-cols-1 sm:grid-cols-2 gap-4"><a href="/blog" class="flex items-center gap-3 p-4 rounded-xl border border-gray-100 dark:border-slate-800 hover:border-primary-200 dark:hover:border-primary-500/20 hover:shadow-md transition-all group"><div class="w-10 h-10 rounded-xl bg-primary-50 dark:bg-primary-500/10 flex items-center justify-center shrink-0"><svg class="w-5 h-5 text-primary-600 dark:text-primary-400" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"></path></svg></div><div><p class="text-sm font-semibold text-gray-900 dark:text-white group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors">Blog technique</p><p class="text-xs text-gray-500 dark:text-slate-400">Articles approfondis sur l'e-commerce headless</p></div></a><a href="/tarifs" class="flex items-center gap-3 p-4 rounded-xl border border-gray-100 dark:border-slate-800 hover:border-accent-200 dark:hover:border-accent-500/20 hover:shadow-md transition-all group"><div class="w-10 h-10 rounded-xl bg-accent-50 dark:bg-accent-500/10 flex items-center justify-center shrink-0"><svg class="w-5 h-5 text-accent-600 dark:text-accent-400" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 21v-7.5a.75.75 0 01.75-.75h3a.75.75 0 01.75.75V21m-4.5 0H2.36m11.14 0H18m0 0h3.64m-1.39 0V9.349m-16.5 11.65V9.35m0 0a3.001 3.001 0 003.75-.615A2.993 2.993 0 009.75 9.75c.896 0 1.7-.393 2.25-1.016a2.993 2.993 0 002.25 1.016c.896 0 1.7-.393 2.25-1.016a3.001 3.001 0 003.75.614m-16.5 0a3.004 3.004 0 01-.621-4.72L4.318 3.44A1.5 1.5 0 015.378 3h13.243a1.5 1.5 0 011.06.44l1.19 1.189a3 3 0 01-.621 4.72m-13.5 8.65h3.75a.75.75 0 00.75-.75V13.5a.75.75 0 00-.75-.75H6.75a.75.75 0 00-.75.75v3.15c0 .415.336.75.75.75z"></path></svg></div><div><p class="text-sm font-semibold text-gray-900 dark:text-white group-hover:text-accent-600 dark:group-hover:text-accent-400 transition-colors">Mes prestations</p><p class="text-xs text-gray-500 dark:text-slate-400">Audit, Sprint, Régie — du temps d'expert, votre code</p></div></a></div></div><!----><div id="auteur" class="mt-12 pt-8 border-t border-gray-200 dark:border-slate-700"><div class="flex items-start gap-6"><img src="/alexandre-carette-96.webp" alt="Alexandre Carette" class="w-20 h-20 rounded-full object-cover shrink-0 shadow-sm" loading="lazy" onerror="this.style.display='none'"><div><p class="font-bold text-gray-900 dark:text-white text-lg">Alexandre Carette</p><p class="text-sm text-primary-700 dark:text-primary-400 font-medium mb-2">Expert PrestaShop & Architecture E-commerce</p><p class="text-sm text-gray-500 dark:text-slate-400 leading-relaxed"> Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants. </p><div class="mt-3 flex flex-wrap gap-2"><a href="mailto:contact@alexandrecarette.fr" class="inline-flex items-center gap-1.5 text-xs text-primary-600 dark:text-primary-400 bg-primary-50 dark:bg-primary-500/10 rounded-full px-3 py-1.5 hover:bg-primary-100 dark:hover:bg-primary-500/20 transition-colors font-medium"> contact@alexandrecarette.fr </a><a href="/expertise" class="inline-flex items-center gap-1.5 text-xs text-gray-700 dark:text-slate-300 bg-gray-100 dark:bg-slate-800 rounded-full px-3 py-1.5 hover:bg-gray-200 dark:hover:bg-slate-700 transition-colors"> ← Tous les articles </a></div></div></div></div></article><!----></div></div><!--]--></main><!----><footer class="relative overflow-hidden text-gray-300" style="background-color:var(--color-footer-bg, #0f172a);"><!----><div class="absolute inset-0 pointer-events-none" aria-hidden="true"><div class="absolute -top-40 left-[10%] w-[500px] h-[500px] bg-primary-600/[0.07] rounded-full blur-[150px]"></div><div class="absolute -bottom-40 right-[5%] w-[400px] h-[400px] bg-accent-500/[0.05] rounded-full blur-[120px]"></div></div><!----><!----><div class="max-w-6xl mx-auto px-4 sm:px-6 py-12"><div class="grid-cols-1 lg:grid-cols-4 grid gap-10"><div class="space-y-5"><a href="/" class="inline-flex items-center gap-2 group" aria-label="Retour à l\"><img width="192" height="48" data-nuxt-img sizes="(max-width: 640px) 192px, 240px" srcset="/_ipx/f_webp&q_80&fit_inside&s_192x48/logo-ac.svg 192w, /_ipx/f_webp&q_80&fit_inside&s_240x60/logo-ac.svg 240w, /_ipx/f_webp&q_80&fit_inside&s_384x96/logo-ac.svg 384w, /_ipx/f_webp&q_80&fit_inside&s_480x120/logo-ac.svg 480w" onerror="this.setAttribute('data-error', 1)" alt="Alexandre Carette" class="h-12 w-auto object-contain" loading="lazy" src="/_ipx/f_webp&q_80&fit_inside&s_480x120/logo-ac.svg"></a><!----><!----><div class="space-y-2 text-sm"><!----><!----><!----><!----></div><div class="flex items-center gap-3 pt-1"><!--[--><a href="https://www.linkedin.com/in/alexandre-carette/" target="_blank" rel="noopener noreferrer" aria-label="linkedin" class="w-9 h-9 rounded-lg flex items-center justify-center transition-colors bg-gray-700 hover:bg-primary-600 text-gray-300 hover:text-white"><svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg></a><a href="https://www.malt.fr/profile/alexandrecarette" target="_blank" rel="noopener noreferrer" aria-label="malt" class="w-9 h-9 rounded-lg flex items-center justify-center transition-colors bg-gray-700 hover:bg-primary-600 text-gray-300 hover:text-white"><svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="10" fill="none" stroke="currentColor" stroke-width="2"></circle><text x="12" y="16" text-anchor="middle" font-size="12" font-weight="bold" fill="currentColor">M</text></svg></a><a href="https://github.com/prest4cafe" target="_blank" rel="noopener noreferrer" aria-label="github" class="w-9 h-9 rounded-lg flex items-center justify-center transition-colors bg-gray-700 hover:bg-primary-600 text-gray-300 hover:text-white"><svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg></a><!--]--></div></div><div class="grid-cols-2 lg:grid-cols-4 col-span-1 lg:col-span-3 grid gap-8"><!--[--><div><h2 class="text-xs font-semibold uppercase tracking-widest mb-4 text-gray-400">Plateforme</h2><ul class="space-y-2"><!--[--><li><a href="/tarifs" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Tarifs <!----></a></li><li><a href="/ambassadeur" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Devenir Ambassadeur <!----></a></li><li><a href="/modules" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Méthode <!----></a></li><li><a href="https://codemyshop.com" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">CodeMyShop (open-source) <!----></a></li><!--]--></ul></div><div><h2 class="text-xs font-semibold uppercase tracking-widest mb-4 text-gray-400">Le Synedre</h2><ul class="space-y-2"><!--[--><li><a href="/synedre" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">L'histoire <!----></a></li><li><a href="https://synedre.com/fr/constitution" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Constitution <!----></a></li><li><a href="https://synedre.com/fr/agents" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">L'équipe <!----></a></li><li><a href="/reacteur" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Le réacteur en direct <!----></a></li><li><a href="https://synedre.com/fr/drill" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Le Drill (entraînement) <!----></a></li><li><a href="https://synedre.com/fr/agents" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Les agents IA <!----></a></li><li><a href="https://synedre.com/fr/conduite" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">La Conduite <!----></a></li><li><a href="https://synedre.com/fr/charte" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Charte plateforme <!----></a></li><!--]--></ul></div><div><h2 class="text-xs font-semibold uppercase tracking-widest mb-4 text-gray-400">Ressources</h2><ul class="space-y-2"><!--[--><li><a href="/blog" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Blog <!----></a></li><li><a href="/academy" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Academy <!----></a></li><li><a href="/expertise" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Expertise PrestaShop <!----></a></li><li><a href="/flywheel" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Flywheel <!----></a></li><li><a href="/manifeste" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Manifeste <!----></a></li><!--]--></ul></div><div><h2 class="text-xs font-semibold uppercase tracking-widest mb-4 text-gray-400">À propos</h2><ul class="space-y-2"><!--[--><li><a href="/a-propos" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Alexandre Carette <!----></a></li><li><a href="https://synedre.com/fr/presse" target="_blank" rel="noopener noreferrer" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Dossier de presse <!----></a></li><li><a href="/contact" class="text-sm flex items-center gap-1.5 transition-colors text-gray-400 hover:text-primary-400">Contact <!----></a></li><!--]--></ul></div><!--]--></div><!----></div></div><div class="border-t border-gray-700"><div class="max-w-6xl mx-auto px-4 sm:px-6 py-4 flex flex-col sm:flex-row items-center justify-between gap-3"><p class="text-xs">© 2026 ac-hub — Tous droits réservés</p><nav class="flex items-center gap-4 flex-wrap justify-center"><!--[--><!--]--><div class="text-xs"></div><!----></nav></div></div></footer></div><span></span></div></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{posthogKey:"",posthogHost:"https://eu.i.posthog.com",apiBase:"http://localhost:8080/api",psFrontUrl:"https://alexandrecarette.fr",clientId:"ac-hub",brandName:"Alexandre Carette",supportEmail:"",contactEmail:"",ownerName:"",ownerAvatar:"",favicon:"/favicon.svg",displayTimeZone:"",b2bMode:false,commerceMode:"b2c",catalogueIndexable:false,sitemapProductLocales:[],facetedNav:false,plateSearch:false,plateCountry:"FR",plateCountries:"",pwaEnabled:false,pwaName:"",pwaShortName:"",pwaThemeColor:"#ffffff",pwaBackgroundColor:"#ffffff",hubLoginUrl:"",cmsVersion:"0.2.8",i18nLocales:["fr"],floatingWhatsapp:{phone:"33632872787",desktop:true},dictionaryEnabled:false,domains:["alexandrecarette.fr","www.alexandrecarette.fr"],brandTone:"professionnel mais accessible — clair, direct, sans jargon",editorial:{brand:"Alexandre Carette — CodeMyShop (consultant e-commerce B2B)",target:"dirigeants PME, responsables e-commerce, artisans digitaux",tone:"expert, pédagogue, premium. Vouvoiement."},brandColor:"#4F46E5",calendlyUrl:"https://calendly.com/contact-alexandrecarette/30min?utm_source=site-alexandrecarette&utm_content=accueil",hideBrandSignature:true,brandSignatureIcon:"/synedre.svg",brandSignatureAlt:"Synedre","nuxt-scripts":{version:"",prefix:"/_scripts",defaultScriptOptions:{trigger:"onNuxtReady"},googleStaticMapsProxy:"",endpoints:{}}},app:{baseURL:"/",buildId:"5ddd7f18-8ae5-4c29-ae5a-9bc06a731ee1",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__">[["ShallowReactive",1],{"data":2,"state":260,"once":1113,"_errors":1114,"serverRendered":21,"path":32},["ShallowReactive",3],{"theme-db":4,"alexandrecarette-hero-data":23,"$fOxsGgYM02v0aJrnC36aTUWENxCDomhty1nyRCJ-f3r8":30,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":33,"$fiqSypzsJu4zANk5JcFEzEIRJjUIuEoWYvWFm7XpF6Ww":111,"megamenu-contexts-ac-hub":153,"$fnYZFE-Ln7YzsP4p0Ckp1b_ubCfJlBifuro3djYzO51g":155,"header-db":169,"megamenu":183,"footer-db":242},{"theme":5},{"colors":6,"typography":14,"ui":18,"defaultColorMode":22},{"primary":7,"secondary":8,"background":9,"foreground":10,"muted":11,"headerBg":12,"footerBg":13,"topBarBg":10,"topBarText":12},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":15,"fontUrl":16,"baseFontSize":17},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":19,"contentWidth":20,"shadow":21},"lg","7xl",true,"light",{"capa":24,"malt":27,"legal":28,"links":29},{"state":25,"trimester":26,"missionsOpen":26,"missionsMax":26,"nextTrimester":26},"fallback",null,{"url":26,"rating":26,"reviewsCount":26},{"siret":26,"status":26,"city":26},{"linkedin":26,"github":26},{"ok":21,"alternates":31},{"fr":32},"\u002Fexpertise\u002Fprestashop\u002Fseo\u002Fh1-personnalise-fiches-produits-prestashop",{"columns":34},[35,52,79,98],{"title":36,"position":37,"links":38},"Plateforme",1,[39,43,46,49],{"label":40,"href":41,"external":42},"Tarifs","\u002Ftarifs",false,{"label":44,"href":45,"external":42},"Devenir Ambassadeur","\u002Fambassadeur",{"label":47,"href":48,"external":42},"Méthode","\u002Fmodules",{"label":50,"href":51,"external":21},"CodeMyShop (open-source)","https:\u002F\u002Fcodemyshop.com",{"title":53,"position":54,"links":55},"Le Synedre",2,[56,59,62,65,68,71,73,76],{"label":57,"href":58,"external":42},"L'histoire","\u002Fsynedre",{"label":60,"href":61,"external":21},"Constitution","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconstitution",{"label":63,"href":64,"external":21},"L'équipe","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fagents",{"label":66,"href":67,"external":42},"Le réacteur en direct","\u002Freacteur",{"label":69,"href":70,"external":21},"Le Drill (entraînement)","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fdrill",{"label":72,"href":64,"external":21},"Les agents IA",{"label":74,"href":75,"external":21},"La Conduite","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconduite",{"label":77,"href":78,"external":21},"Charte plateforme","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fcharte",{"title":80,"position":81,"links":82},"Ressources",3,[83,86,89,92,95],{"label":84,"href":85,"external":42},"Blog","\u002Fblog",{"label":87,"href":88,"external":42},"Academy","\u002Facademy",{"label":90,"href":91,"external":42},"Expertise PrestaShop","\u002Fexpertise",{"label":93,"href":94,"external":42},"Flywheel","\u002Fflywheel",{"label":96,"href":97,"external":42},"Manifeste","\u002Fmanifeste",{"title":99,"position":100,"links":101},"À propos",4,[102,105,108],{"label":103,"href":104,"external":42},"Alexandre Carette","\u002Fa-propos",{"label":106,"href":107,"external":21},"Dossier de presse","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fpresse",{"label":109,"href":110,"external":42},"Contact","\u002Fcontact",{"title":112,"slug":113,"metaDescription":114,"category":115,"tags":116,"difficulty":123,"psVersions":124,"content":128,"faq":129,"tldr":148,"readingTime":149,"generatedAt":150,"publishDate":150,"relatedArticles":151,"sourceCategory":152},"Personnaliser la balise H1 des fiches produits PrestaShop","h1-personnalise-fiches-produits-prestashop","Ajoutez un champ H1 personnalisé sur vos fiches produits PrestaShop pour un contrôle SEO total. Override, import CSV et bonnes pratiques pour 1.6 à 8.x.","seo",[117,118,119,120,121,122],"h1","seo-onpage","override","import-csv","fiche-produit","balise-titre","intermediaire",[125,126,127],"1.6","1.7","8.x","\u003Ch2>Pourquoi personnaliser la balise H1 de vos produits PrestaShop\u003C\u002Fh2>\n\u003Cp>Par défaut, PrestaShop utilise le \u003Cstrong>nom du produit\u003C\u002Fstrong> comme balise H1 sur la fiche produit. C'est logique d'un point de vue fonctionnel, mais c'est souvent un frein côté SEO : le nom commercial d'un produit ne correspond pas toujours à la requête que tape un internaute sur Google.\u003C\u002Fp>\n\u003Cp>Prenons un exemple concret. Votre produit s'appelle *\"Modèle Élégance 2024\"* dans votre catalogue. C'est le nom que vos clients connaissent. Mais la requête SEO à cibler serait plutôt *\"Robe de soirée longue noire taille grande\"*. Sans H1 personnalisé, vous êtes coincé.\u003C\u002Fp>\n\u003Cp>L'objectif de ce guide est d'ajouter un \u003Cstrong>champ H1 dédié, multilingue et importable par CSV\u003C\u002Fstrong> à vos fiches produits PrestaShop, de la version 1.6 jusqu'à la 8.x.\u003C\u002Fp>\n\u003Ch2>Architecture de la solution\u003C\u002Fh2>\n\u003Cp>La modification repose sur trois piliers :\u003C\u002Fp>\n\u003Col>\n\u003Cli>**Base de données** — ajout d'une colonne `h1_prod` dans `ps_product_lang`\u003C\u002Fli>\n\u003Cli>**Modèle objet** — override de la classe `Product` pour déclarer le nouveau champ\u003C\u002Fli>\n\u003Cli>**Back-office** — affichage du champ dans le formulaire d'édition produit\u003C\u002Fli>\n\u003Cli>**Import CSV** — override de `AdminImportController` pour mapper le champ à l'import\u003C\u002Fli>\n\u003Cli>**Template front** — affichage du H1 personnalisé à la place du nom produit\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Étape 1 : Ajouter la colonne en base de données\u003C\u002Fh2>\n\u003Cp>Avant toute modification de code, il faut créer le champ dans la table \u003Ccode>ps_product_lang\u003C\u002Fcode>. C'est une table multilingue, donc chaque produit aura un H1 par langue.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sql\">\nALTER TABLE `ps_product_lang`\nADD COLUMN `h1_prod` TEXT DEFAULT NULL\nAFTER `description_short`;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\u003Cp>\u003Cstrong>Attention :\u003C\u002Fstrong> remplacez le préfixe \u003Ccode>ps_\u003C\u002Fcode> par celui de votre installation si vous l'avez modifié. Vérifiez-le dans \u003Ccode>config\u002Fsettings.inc.php\u003C\u002Fcode> (1.6) ou dans le fichier \u003Ccode>.env\u003C\u002Fcode> \u002F \u003Ccode>parameters.php\u003C\u002Fcode> (1.7+\u002F8.x).\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>Ce champ est volontairement de type \u003Ccode>TEXT\u003C\u002Fcode> et non \u003Ccode>VARCHAR\u003C\u002Fcode> pour laisser de la marge, même si en pratique un H1 ne devrait jamais dépasser 70 caractères.\u003C\u002Fp>\n\u003Ch2>Étape 2 : Override de la classe Product\u003C\u002Fh2>\n\u003Cp>Le modèle objet de PrestaShop doit connaître ce nouveau champ pour le lire et l'écrire automatiquement.\u003C\u002Fp>\n\u003Ch3>PrestaShop 1.6\u003C\u002Fh3>\n\u003Cp>Créez le fichier \u003Ccode>override\u002Fclasses\u002FProduct.php\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n<?php\n\nclass Product extends ProductCore\n{\n \u002F** @var string Balise H1 personnalisée (multilingue) *\u002F\n public $h1_prod;\n\n public function __construct(\n $id_product = null,\n $full = false,\n $id_lang = null,\n $id_shop = null,\n Context $context = null\n ) {\n self::$definition['fields']['h1_prod'] = [\n 'type' => self::TYPE_HTML,\n 'lang' => true,\n 'validate' => 'isCleanHtml',\n 'size' => 255,\n ];\n\n parent::__construct($id_product, $full, $id_lang, $id_shop, $context);\n }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>PrestaShop 1.7 \u002F 8.x\u003C\u002Fh3>\n\u003Cp>Le système d'override fonctionne toujours, mais PrestaShop 8.x encourage l'utilisation de \u003Cstrong>modules\u003C\u002Fstrong> avec des hooks pour modifier le formulaire produit. La classe Product peut néanmoins être overridée de la même manière.\u003C\u002Fp>\n\u003Cp>Pour une approche plus pérenne en 8.x, privilégiez un module qui utilise :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Le hook `actionProductFormBuilderModifier` pour ajouter le champ au formulaire Symfony\u003C\u002Fli>\n\u003Cli>Le hook `actionAfterUpdateProductFormHandler` pour sauvegarder la valeur\u003C\u002Fli>\n\u003Cli>La définition du champ dans l'override `Product.php` reste identique\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-php\">\n<?php\n\u002F\u002F modules\u002Fmonmodule\u002Fsrc\u002FForm\u002FProductH1FormModifier.php\n\nuse Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType;\n\nclass ProductH1FormModifier\n{\n public function modify($builder, array $data): void\n {\n $builder->get('seo')->add('h1_prod', TextType::class, [\n 'label' => 'H1 personnalisé',\n 'required' => false,\n 'attr' => [\n 'placeholder' => 'Laissez vide pour utiliser le nom du produit',\n 'maxlength' => 255,\n ],\n ]);\n }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\u003Cp>\u003Cstrong>Point critique :\u003C\u002Fstrong> après avoir créé un override, supprimez le fichier \u003Ccode>var\u002Fcache\u002Fdev\u002Fclass_index.php\u003C\u002Fcode> et \u003Ccode>var\u002Fcache\u002Fprod\u002Fclass_index.php\u003C\u002Fcode> (en 1.6 : \u003Ccode>cache\u002Fclass_index.php\u003C\u002Fcode>). Sans cette étape, PrestaShop ne détectera pas votre override.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>Étape 3 : Afficher le champ dans le back-office (1.6)\u003C\u002Fh2>\n\u003Cp>En PrestaShop 1.6, le formulaire produit est géré par des fichiers \u003Ccode>.tpl\u003C\u002Fcode>. Pour ajouter le champ H1 dans l'onglet \"Informations\" :\u003C\u002Fp>\n\u003Cp>Créez le fichier \u003Ccode>override\u002Fcontrollers\u002Fadmin\u002Ftemplates\u002Fproducts\u002Finformations.tpl\u003C\u002Fcode> en copiant l'original depuis \u003Ccode>controllers\u002Fadmin\u002Ftemplates\u002Fproducts\u002Finformations.tpl\u003C\u002Fcode>, puis ajoutez après le champ du nom produit :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n<div class=\"form-group\">\n <label class=\"control-label col-lg-3\" for=\"h1_prod_{$id_lang}\">\n <span class=\"label-tooltip\" data-toggle=\"tooltip\" title=\"{l s='Balise H1 personnalisée pour le SEO. Laissez vide pour utiliser le nom du produit.'}\">\n {l s='H1 personnalisé'}\n <\u002Fspan>\n <\u002Flabel>\n <div class=\"col-lg-5\">\n {foreach from=$languages item=language}\n <div class=\"translatable-field lang-{$language.id_lang}\"\n {if $language.id_lang != $defaultFormLanguage}style=\"display:none\"{\u002Fif}>\n <input type=\"text\"\n id=\"h1_prod_{$language.id_lang}\"\n name=\"h1_prod_{$language.id_lang}\"\n class=\"form-control\"\n value=\"{$product->h1_prod[$language.id_lang]|escape:'html':'UTF-8'}\"\n maxlength=\"255\" \u002F>\n <\u002Fdiv>\n {\u002Fforeach}\n <\u002Fdiv>\n<\u002Fdiv>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Étape 4 : Import CSV du H1 personnalisé\u003C\u002Fh2>\n\u003Cp>Pour les catalogues volumineux, saisir chaque H1 à la main est impensable. L'override de \u003Ccode>AdminImportController\u003C\u002Fcode> permet d'ajouter le champ H1 dans le mapping de l'import CSV.\u003C\u002Fp>\n\u003Ch3>PrestaShop 1.6\u003C\u002Fh3>\n\u003Cp>Créez \u003Ccode>override\u002Fcontrollers\u002Fadmin\u002FAdminImportController.php\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n<?php\n\nclass AdminImportController extends AdminImportControllerCore\n{\n public function __construct()\n {\n parent::__construct();\n\n $this->available_fields += [\n 'h1_prod' => ['label' => $this->l('H1 personnalisé')],\n ];\n }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Dans votre fichier CSV, ajoutez une colonne \u003Ccode>h1_prod\u003C\u002Fcode> avec les valeurs souhaitées. Lors de l'import, le champ apparaîtra dans la liste de mapping et sera automatiquement sauvegardé grâce à la définition ajoutée dans la classe \u003Ccode>Product\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>PrestaShop 8.x\u003C\u002Fh3>\n\u003Cp>En version 8.x, l'import utilise toujours le même mécanisme sous-jacent. L'override de \u003Ccode>AdminImportController\u003C\u002Fcode> fonctionne, mais si vous avez opté pour un module, vous pouvez aussi utiliser le hook \u003Ccode>actionProductImportFieldsModifier\u003C\u002Fcode> pour enregistrer le champ proprement.\u003C\u002Fp>\n\u003Ch2>Étape 5 : Afficher le H1 personnalisé en front-office\u003C\u002Fh2>\n\u003Cp>La dernière étape consiste à afficher le H1 personnalisé sur la fiche produit côté client.\u003C\u002Fp>\n\u003Ch3>PrestaShop 1.6 (Smarty)\u003C\u002Fh3>\n\u003Cp>Dans votre thème, fichier \u003Ccode>themes\u002Fvotre-theme\u002Fproduct.tpl\u003C\u002Fcode>, remplacez :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n<h1>{$product->name}<\u002Fh1>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>par :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n<h1>{if $product->h1_prod}{$product->h1_prod}{else}{$product->name}{\u002Fif}<\u002Fh1>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>PrestaShop 1.7 \u002F 8.x\u003C\u002Fh3>\n\u003Cp>Le produit doit être enrichi via le hook \u003Ccode>actionPresentProduct\u003C\u002Fcode> ou \u003Ccode>filterProductContent\u003C\u002Fcode> pour transmettre le champ au template :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\npublic function hookActionPresentProduct(array $params): void\n{\n $product = new Product((int) $params['product']['id_product'], false, Context::getContext()->language->id);\n\n if (!empty($product->h1_prod)) {\n $params['presentedProduct']['h1_custom'] = $product->h1_prod;\n }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Puis dans \u003Ccode>themes\u002Fvotre-theme\u002Ftemplates\u002Fcatalog\u002Fproduct.tpl\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n<h1>{if isset($product.h1_custom) && $product.h1_custom}{$product.h1_custom}{else}{$product.name}{\u002Fif}<\u002Fh1>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Appliquer le même principe aux catégories\u003C\u002Fh2>\n\u003Cp>La même technique s'applique aux pages catégories en ajoutant un champ \u003Ccode>h1_cat\u003C\u002Fcode> dans \u003Ccode>ps_category_lang\u003C\u002Fcode> et en overridant la classe \u003Ccode>Category\u003C\u002Fcode>. La démarche est strictement identique :\u003C\u002Fp>\n\u003Col>\n\u003Cli>`ALTER TABLE ps_category_lang ADD COLUMN h1_cat TEXT DEFAULT NULL;`\u003C\u002Fli>\n\u003Cli>Override de `Category.php` avec la définition du champ\u003C\u002Fli>\n\u003Cli>Modification du template catégorie en front\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Cela permet d'avoir des H1 de catégorie orientés SEO (ex : *\"Chaussures de randonnée homme imperméables\"*) tout en gardant un nom de catégorie court dans le menu (*\"Randonnée Homme\"*).\u003C\u002Fp>\n\u003Ch2>Bonnes pratiques SEO pour vos H1\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>**Un seul H1 par page** — c'est la règle fondamentale. Vérifiez que votre thème ne génère pas un second H1 (logo, sidebar, etc.)\u003C\u002Fli>\n\u003Cli>**Inclure le mot-clé principal** en début de H1 quand c'est naturel\u003C\u002Fli>\n\u003Cli>**70 caractères maximum** — au-delà, l'impact SEO diminue et l'affichage peut être tronqué\u003C\u002Fli>\n\u003Cli>**H1 différent du title** — le `\u003Ctitle>` cible Google, le H1 cible le lecteur humain. Variez les formulations\u003C\u002Fli>\n\u003Cli>**Ne pas dupliquer** — chaque page doit avoir un H1 unique. L'import CSV facilite l'audit en masse\u003C\u002Fli>\n\u003Cli>**Tester avec Screaming Frog** ou un crawler similaire pour détecter les H1 manquants, dupliqués ou trop longs\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Vider le cache après modification\u003C\u002Fh2>\n\u003Cp>Après chaque modification d'override, pensez à :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# PrestaShop 1.6\nrm -f cache\u002Fclass_index.php\n\n# PrestaShop 1.7 \u002F 8.x\nrm -rf var\u002Fcache\u002F*\n# ou via le back-office : Paramètres avancés > Performances > Vider le cache\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Sans cette étape, vos modifications ne seront tout simplement pas prises en compte.\u003C\u002Fp>",[130,133,136,139,142,145],{"q":131,"a":132},"Comment ajouter un champ H1 personnalisé sur les fiches produits PrestaShop ?","Il faut intervenir à trois niveaux : ajouter une colonne h1_prod dans la table ps_product_lang via SQL, créer un override de la classe Product pour déclarer le champ dans la définition ObjectModel, puis modifier le template back-office (1.6) ou utiliser un hook Symfony (8.x) pour afficher le champ dans le formulaire d'édition produit. N'oubliez pas de supprimer le fichier class_index.php après chaque override.",{"q":134,"a":135},"Peut-on importer les balises H1 en masse via CSV dans PrestaShop ?","Oui, en créant un override de AdminImportController qui ajoute le champ h1_prod dans la liste des champs disponibles à l'import. Ajoutez ensuite une colonne h1_prod dans votre fichier CSV. Lors de l'import, le champ apparaîtra dans le mapping et sera automatiquement enregistré en base grâce à la définition dans la classe Product.",{"q":137,"a":138},"Le H1 personnalisé fonctionne-t-il avec PrestaShop 8.x ?","Oui. Le système d'override de la classe Product reste fonctionnel en PrestaShop 8.x. En revanche, pour le formulaire back-office, il est recommandé d'utiliser un module avec les hooks Symfony (actionProductFormBuilderModifier) plutôt qu'un override de template .tpl, car le back-office 8.x utilise le framework Symfony pour le formulaire produit.",{"q":140,"a":141},"Pourquoi avoir un H1 différent du nom de produit en e-commerce ?","Le nom commercial d'un produit est souvent court et orienté marque (ex : Modèle Élégance), alors que les internautes recherchent des termes descriptifs (ex : robe de soirée longue noire). Un H1 personnalisé permet de cibler la requête SEO sans modifier le nom du produit dans le catalogue, les factures ou les emails de commande.",{"q":143,"a":144},"Faut-il aussi personnaliser le H1 des pages catégories PrestaShop ?","Absolument. Le même principe s'applique en ajoutant un champ h1_cat dans ps_category_lang et en overridant la classe Category. Cela permet d'avoir un nom de catégorie court dans le menu de navigation tout en affichant un H1 optimisé SEO sur la page catégorie elle-même.",{"q":146,"a":147},"Quel est l'impact sur les performances d'ajouter un override Product ?","L'impact est négligeable. L'override ajoute simplement un champ à la définition ObjectModel, ce qui génère une colonne supplémentaire dans les requêtes SQL de chargement produit. Le surcoût est de l'ordre de quelques octets par requête. Assurez-vous simplement de vider le cache après la mise en place pour que le class_index soit regénéré correctement.","Ajoutez un champ H1 personnalisé et multilingue à vos fiches produits PrestaShop en combinant une colonne SQL dans ps_product_lang, un override de la classe Product et un override de AdminImportController pour l'import CSV en masse. Compatible de PrestaShop 1.6 à 8.x.",6,"2026-03-21T14:46:08.000Z",[],"Online sales and SEO",{"contexts":154},[],{"academy":156,"blog":157,"expertise":168},[],[158,162,165],{"title":159,"url":160,"score":37,"type":161},"Référencement PrestaShop 2026 : le guide complet SEO + IA","\u002Fblog\u002Fseo\u002Freferencement\u002Fguide-complet-prestashop-2026","blog",{"title":163,"url":164,"score":37,"type":161},"SEO Google classique pour PrestaShop : 7 leviers techniques","\u002Fblog\u002Fseo\u002Freferencement\u002Fseo-google-classique-prestashop",{"title":166,"url":167,"score":37,"type":161},"AIO et GEO pour PrestaShop : optimiser pour les moteurs IA","\u002Fblog\u002Fseo\u002Freferencement\u002Faio-geo-intelligence-artificielle-prestashop",[],{"header":170},{"logo":171,"topBar":176,"contactEmail":179,"contactPhone":26,"features":180,"navBar":26,"headerLinks":182,"storesHref":26},{"src":172,"alt":173,"text":103,"href":174,"class":175},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":26,"messageMobile":26,"showLanguages":42,"align":177,"languages":178},"left",[],"contact@alexandrecarette.fr",{"showSearch":42,"showWishlist":42,"showLogin":21,"showContact":42,"showCart":42,"showQuoteButton":21,"showBlogLink":42,"showContactLink":42,"showGiftcardLink":42,"showStoresLink":42,"stickyHeader":21,"staticHeader":42,"headerLayout":181},"inline",{},{"items":184},[185,194,199,204,211,218,225,230,236],{"id":186,"type":187,"label":188,"href":91,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":191,"barVisible":21,"children":192,"psChildren":193},41,"link",{"fr":189},"Expertise","picto",0,[],[],{"id":195,"type":187,"label":196,"href":85,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":37,"barVisible":21,"children":197,"psChildren":198},42,{"fr":84},[],[],{"id":200,"type":187,"label":201,"href":48,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":54,"barVisible":21,"children":202,"psChildren":203},43,{"fr":47},[],[],{"id":205,"type":187,"label":206,"href":208,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":81,"barVisible":21,"children":209,"psChildren":210},49,{"fr":207},"Modules gratuits","\u002Fmodules-libres",[],[],{"id":212,"type":187,"label":213,"href":215,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":100,"barVisible":21,"children":216,"psChildren":217},44,{"fr":214},"Outils IA","\u002Foutils-ia",[],[],{"id":219,"type":187,"label":220,"href":41,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":221,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":222,"barVisible":21,"children":223,"psChildren":224},45,{"fr":40},{"highlight":21},5,[],[],{"id":226,"type":187,"label":227,"href":88,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":149,"barVisible":21,"children":228,"psChildren":229},46,{"fr":87},[],[],{"id":231,"type":187,"label":232,"href":104,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":233,"barVisible":21,"children":234,"psChildren":235},47,{"fr":99},7,[],[],{"id":237,"type":187,"label":238,"href":110,"icon":26,"iconRole":190,"description":26,"badge":26,"groupTitle":26,"groupKey":26,"style":26,"gridColumns":26,"cssClass":26,"psCategoryId":26,"psProductId":26,"showPsChildren":42,"position":239,"barVisible":21,"children":240,"psChildren":241},48,{"fr":109},8,[],[],{"footer":243},{"theme":244,"description":26,"hours":26,"logo":245,"contact":246,"social":247,"bottomBar":257,"newsletter":258},"dark",{"src":172,"href":174,"alt":103},{"email":26,"phone":26,"address":26,"cta":26},[248,251,254],{"platform":249,"href":250,"label":249},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":252,"href":253,"label":252},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":255,"href":256,"label":255},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":26},{"show":42,"title":26,"description":26,"placeholder":26,"ctaLabel":26,"consentText":259},"J'accepte de recevoir par e-mail les actualités de CodeMyShop et d'Alexandre Carette : nouveaux modules libres, astuces PrestaShop, SEO et performance. Je peux me désinscrire à tout moment grâce au lien présent dans chaque message.",["Reactive",261],{"$srootSegmentMaps":262,"$si18n_marches":464,"$sclient_db_config":467,"$sblog_root_id":516,"$sblog_categories":517,"$sfeature_flags":690,"$sfeature_flags_loaded":21,"$shub_employee_lang":26,"$sactive_lang":466,"$soss_translations":1062,"$soss_translations_loaded":21,"$stranslations_scope":1069,"$soss_translations_lang":466,"$sps_flags":1070,"$stheme_builder_override":26,"$stheme_dirty":42,"$sdark_mode":42,"$sauth_user":26,"$sauth_loading":42,"$sauth_force_employee":42,"$sedit_mode":42,"$sinsitu-logged-in":42,"$scookie_consent":26,"$sconsent_trackers":1073,"$sed_hp":1074,"$sed_sections":1075,"$sed_theme":1102,"$sed_header":1105,"$sed_footer":1106,"$sed_panel":26,"$sed_dirty":42,"$sed_saving":42,"$sed_init":42,"$sed_status":1107,"$sheader_builder_override":26,"$sheader_db_resolved":26,"$sheader_dirty":42,"$smegamenu_builder_override":26,"$smegamenu_resolved":26,"$smegamenu_dirty":42,"$swishlist-lists":1108,"$swishlist-loaded":42,"$swishlist-loading":42,"$scustomer-auth":26,"$scustomer-auth-loading":42,"$scart-drawer-open":42,"$scart-drawer-origin":1109,"$sserver-cart":26,"$slocal-cart":1110,"$scart-loading":42,"$scart-id":26,"$spromo-attente":26,"$spromo-attente-erreur":26,"$scart-hydrated":42,"$scart-error":26,"$squote-drawer-open":42,"$squote-cart":1111,"$sfooter_builder_override":26,"$sfooter_dirty":42,"$sed_db_footer_columns":1112,"$soss_translations_partial":21},{"translations":263,"reverse":322,"paths":347,"canonicalFr":348,"source":463},{"en":264,"de":287,"es":310,"it":317},{"produit":265,"blog":161,"recherche":266,"contact":267,"catalogue":268,"page":269,"avis":270,"inscription":271,"connexion":272,"panier":273,"commander":274,"paiement":275,"mon-compte":276,"mot-de-passe-oublie":277,"reinitialiser-mot-de-passe":278,"devis":279,"favoris":280,"evenements":281,"cartes-cadeaux":282,"rdv":283,"promotions":284,"nouveautes":285,"recherche-vehicule":286},"product","search","contact","catalog","page","reviews","register","login","cart","checkout","payment","my-account","forgot-password","reset-password","quote","wishlist","events","gift-cards","appointment","prices-drop","new-products","vehicle-search",{"produit":288,"blog":161,"recherche":289,"contact":290,"catalogue":291,"page":292,"avis":293,"inscription":294,"connexion":295,"panier":296,"commander":297,"paiement":298,"mon-compte":299,"mot-de-passe-oublie":300,"reinitialiser-mot-de-passe":301,"devis":302,"favoris":303,"evenements":304,"cartes-cadeaux":305,"rdv":306,"promotions":307,"nouveautes":308,"recherche-vehicule":309},"produkt","suche","kontakt","katalog","seite","bewertungen","registrieren","anmelden","warenkorb","kasse","zahlung","mein-konto","passwort-vergessen","passwort-zuruecksetzen","angebot","wunschliste","veranstaltungen","geschenkkarten","termin","angebote","neuheiten","fahrzeugsuche",{"produit":311,"blog":161,"recherche":312,"contact":313,"catalogue":314,"page":315,"avis":316},"producto","buscar","contacto","catalogo","pagina","opiniones",{"produit":318,"blog":161,"recherche":319,"contact":320,"catalogue":314,"page":315,"avis":321},"prodotto","ricerca","contatto","recensioni",{"en":323,"de":344,"es":345,"it":346},{"product":324,"blog":161,"search":325,"contact":267,"catalog":326,"page":269,"reviews":327,"register":328,"login":329,"cart":330,"checkout":331,"payment":332,"my-account":333,"forgot-password":334,"reset-password":335,"quote":336,"wishlist":337,"events":338,"gift-cards":339,"appointment":340,"prices-drop":341,"new-products":342,"vehicle-search":343},"produit","recherche","catalogue","avis","inscription","connexion","panier","commander","paiement","mon-compte","mot-de-passe-oublie","reinitialiser-mot-de-passe","devis","favoris","evenements","cartes-cadeaux","rdv","promotions","nouveautes","recherche-vehicule",{"produkt":324,"blog":161,"suche":325,"kontakt":267,"katalog":326,"seite":269,"bewertungen":327,"registrieren":328,"anmelden":329,"warenkorb":330,"kasse":331,"zahlung":332,"mein-konto":333,"passwort-vergessen":334,"passwort-zuruecksetzen":335,"angebot":336,"wunschliste":337,"veranstaltungen":338,"geschenkkarten":339,"termin":340,"angebote":341,"neuheiten":342,"fahrzeugsuche":343},{"producto":324,"blog":161,"buscar":325,"contacto":267,"catalogo":326,"pagina":269,"opiniones":327},{"prodotto":324,"blog":161,"ricerca":325,"contatto":267,"catalogo":326,"pagina":269,"recensioni":327},{},[324,161,325,267,326,269,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462],"a-propos","bienvenue-sur-le-blog-dalexandre-carette","commande","conditions-utilisation","confidentialite","devops--automatisation--cron-python-open-module-level","devops--docker--docker-compose-prestashop-production","devops--docker--docker-e-commerce-conteneurs-boutique","devops--docker--hebergement-prestashop-vps-ovh-configuration-production","devops--methode--auditer-vitesse-correction-stack","devops--methode--changer-nom-domaine-prestashop-redirections-301","devops--methode--migration-serveur-prestashop-zero-downtime","devops--methode--plan-reprise-activite-pra-sauvegarde-prestashop","e-commerce--architecture--migration-shopify-prestashop-headless","e-commerce--architecture--prestashop-vs-shopify-comparatif-2026","e-commerce--developpement--facettes-catalogue-b2b-algolia","e-commerce--positionnement--agroalimentaire-b2b-5-briques-saas","intelligence-artificielle--automatisation--comment-creer-workflow-agentique-tutoriel-pas-pas","intelligence-artificielle--automatisation--diviser-49x-tokens-claude-code","intelligence-artificielle--automatisation--harnais-agent-ia-production-fiabilite","intelligence-artificielle--automatisation--ia-ecommerce-7-automatisations-ca","intelligence-artificielle--automatisation--surveiller-memoire-ia-temps-reel","intelligence-artificielle--automatisation--synedre-chantier-autonome-ecommerce","livraison","mentions-legales","nouveaux-produits","paiement-securise","prestashop--architecture--docker-headless-multi-conteneurs","prestashop--architecture--hub-pro-headless-nuxt-docker","prestashop--architecture--mdm-grossiste-food-prestashop","prestashop--architecture--prestashop-headless-nuxt-nextjs-souverainete","prestashop--architecture--prestashop-headless-nuxt-separation-front-back","prestashop--architecture--sylius-rachat-prestashop-headless-souverainete","prestashop--architecture--webservices-nuxt-integration-headless","prestashop--developpement--api-webservice-prestashop-guide-complet","prestashop--developpement--changer-nom-domaine-seo","prestashop--developpement--cicd-github-actions-headless-nuxt","prestashop--developpement--headless-vs-shopify-comparatif","prestashop--developpement--jquery-dans-prestashop-8-9-pourquoi-il-reste-comment-maitriser","prestashop--developpement--pipeline-seo-claude-python","prestashop--performance--cache-http-microcaching-nginx-prestashop","prestashop--performance--core-web-vitals-prestashop-pagespeed-95","prestashop--performance--docker-vps-deploy-production","prestashop--performance--lenteur-prestashop-methode-audit-optimisation","prestashop--performance--optimisation-sql-index-mariadb-prestashop-ttfb","prestashop--performance--page-blanche-prestashop-diagnostiquer-corriger-erreur-500","prestashop--performance--prestashop-hosting-ovh-guide-complet-ecommercants","recuperation-mot-de-passe","securite--cybersecurite--kevin-mitnick-hacker-agent-ia-securite-ecommerce","securite--cybersecurite--openclaw-prestashop-securite-alternative","securite--cybersecurite--prestashop-pirate-detecter-contenir-reprendre-main","seo--automatisation--donnees-structurees-schema-org-prestashop","seo--automatisation--infrastructure-seo-relation-bots","seo--automatisation--pipeline-automatise-resultats","seo--referencement--aio-geo-intelligence-artificielle-prestashop","seo--referencement--balises-h1-maillage-interne-prestashop-themes","seo--referencement--declinaisons-multiples-duplicate-content-prestashop","seo--referencement--google-aio-optimisation-boutique-prestashop-ia","seo--referencement--guide-complet-prestashop-2026","seo--referencement--referencement-naturel-prestashop-leviers-techniques","seo--referencement--seo-google-classique-prestashop","seo--referencement--strategie-contenu-seo-ecommerce-methode","strategie--architecture--usine-a-navires-industrialized-vertical-software","strategie--flywheel--aida-tunnel-conversion-1898","strategie--flywheel--content-intelligence-ia-publication","strategie--flywheel--ecommerce-2026-boutique-media","strategie--intelligence-artificielle--4-ia-lisent-constitution-synedre-une-seule-comprend","strategie--intelligence-artificielle--agent-ia-generaliste-vs-multi-agents-specialistes","strategie--intelligence-artificielle--agents-ia-base-de-donnees-pas-fichiers","strategie--intelligence-artificielle--allegorie-caverne-ia-incertitude-synedre","strategie--intelligence-artificielle--automates-synedre-mecanique-invisible-agents-ia","strategie--intelligence-artificielle--bases-donnees-ia-pipelines-logs-vides","strategie--intelligence-artificielle--cadre-cognitif-synedre-methode-pensee","strategie--intelligence-artificielle--ceo-ia-conseil-multi-agents-vs-assistant-unique","strategie--intelligence-artificielle--chatgpt-critique-synedre-valide-architecture","strategie--intelligence-artificielle--cicatriser-ia-externes-ouroboros-informationnel","strategie--intelligence-artificielle--claude-code-ai-first-france-usa","strategie--intelligence-artificielle--corbie-synedre-b2c-agents-ia-personnels","strategie--intelligence-artificielle--creer-agent-ia-pas-wrapper","strategie--intelligence-artificielle--drill-entrainement-agents-ia-synedre","strategie--intelligence-artificielle--drill-fondateur-premiere-epreuve-score","strategie--intelligence-artificielle--dust-chatgpt-synedre-comparatif","strategie--intelligence-artificielle--failles-agents-ia-synedre-reponse","strategie--intelligence-artificielle--ia-france-retard-opportunite","strategie--intelligence-artificielle--le-synedre-orchestration-multi-agents-ia","strategie--intelligence-artificielle--memoire-corvides-synedre-base-donnees-ia","strategie--intelligence-artificielle--mouseion-drill-humains-ia-synedre","strategie--intelligence-artificielle--ouroboros-destructeur-vs-informationnel-pipeline-ia","strategie--intelligence-artificielle--rag-vs-academy-ia-culture-entreprise","strategie--intelligence-artificielle--revops-ia-agents-vs-stack-saas-souverainete","strategie--intelligence-artificielle--service-design-ia-3-agents-auditent-theme-ecommerce","strategie--intelligence-artificielle--synedre-vs-langraph-autogen-crewai-orchestration-agents-ia","strategie--intelligence-artificielle--synedre-vs-openclaw-gouvernance-agents-ia","strategie--intelligence-artificielle--wikidata-knowledge-graph-llm-strategie-seo","strategie--intelligence-artificielle--workflows-agentiques-autonomes-agents-ia-nuit","strategie--positionnement--aio-artificial-intelligence-optimization-ecommerce","strategie--positionnement--build-in-public-ai-first-academy-mentors","strategie--positionnement--gatekeepers-ecommerce-liberation","strategie--positionnement--ia-detruit-modele-publicitaire","strategie--positionnement--ocean-bleu-ecommerce-guerre-prix","strategie--positionnement--ocean-bleu-ecommerce-ia-2026","strategie--positionnement--ouroboros-numerique-serpent-sumerien-synedre","strategie--positionnement--paas-souverain-vs-saas-ecommerce-donnees","strategie--positionnement--portraits-ia-harcourt-annees-folles","strategie--positionnement--prestashop-headless-vs-wordpress-ecommerce","strategie--positionnement--proteger-marque-europeenne-euipo-sans-avocat","strategie--positionnement--recruter-coco-brand-guardian-ia","strategie--positionnement--recruter-equipe-ia-solo-builder","strategie--positionnement--recuperer-donnees-forum-prestashop-souverainete","strategie--positionnement--reunion-equipe-ia-20-erreurs-20-regles","strategie--positionnement--solo-unicorn-sam-altman-2026","strategie--positionnement--triptyque-souverain-fondateur-media-boutique","strategie--positionnement--web-vivant-commentaires-ia-moderation","tech--architecture--revolution-soap","db",{"installe":21,"ouverts":465},[466],"fr",{"faq":468,"theme":505,"domain":509,"clientId":513,"features":514,"contactEmail":179,"defaultColorMode":22,"gscSiteUrl":515},[469,472,475,478,481,484,487,490,493,496,499,502],{"reponse":470,"question":471},"L'architecture Headless sépare le moteur e-commerce (PrestaShop via API REST) de l'interface (Nuxt 4, SSR). Résultat : des performances 3× supérieures en Core Web Vitals, une liberté de design totale, et la possibilité d'intégrer l'IA nativement dans le parcours d'achat. Je le recommande car je l'ai éprouvé sur +10 ans de projets : la maîtrise technique est entière, les données restent chez vous.","Qu'est-ce que l'architecture PrestaShop Headless et pourquoi la recommandez-vous ?",{"reponse":473,"question":474},"Dans le cadre d'une mission, j'intègre l'IA comme un outil de production, pas un gadget. Concrètement : génération automatique de fiches produit optimisées SEO, transcréation multilingue adaptée culturellement (FR\u002FEN\u002FDE), publication sociale automatisée, scripts vidéo Shorts, nurturing client. Tout est orchestré depuis un Hub centralisé avec suivi FinOps des coûts IA en temps réel — que vous voyez à chaque livraison.","Comment intégrez-vous l'IA dans un projet e-commerce ?",{"reponse":476,"question":477},"Mon conseil est clair : les solutions SaaS comme Shopify offrent une mise en route rapide, mais vous cèdent votre infrastructure, vos données et une part de votre CA. Avec PrestaShop Headless, vous êtes propriétaire du code, des données et de l'infrastructure. Pas de dépendance plateforme, souveraineté RGPD, liberté technique totale pour scaler et intégrer l'IA. Je prends en charge la migration ou le build complet dans le cadre d'un forfait ou d'une régie au TJM.","Pourquoi PrestaShop Headless plutôt que Shopify ou WooCommerce ?",{"reponse":479,"question":480},"Tout commence par un premier échange de 30 min pour cadrer votre besoin. Je vous remets ensuite un devis (forfait ou régie au TJM) avec des jalons clairs et sans surprise. Une fois accepté, je réalise la mission ; à la livraison, le code et les accès vous appartiennent intégralement. Pas d'abonnement, pas de dépendance : vous repartez autonomes.","Comment se déroule une mission avec vous ?",{"reponse":482,"question":483},"Le SSR (Server-Side Rendering) via Nuxt 4 garantit un HTML complet pour les crawlers Google et les LLM (ChatGPT, Perplexity). J'optimise les Core Web Vitals, la structure des URLs, le maillage interne, le balisage Schema.org (Product, FAQ, Person) et l'architecture de contenu pour maximiser le trafic organique et la visibilité dans les réponses IA.","Comment fonctionne le SEO technique sur une architecture Headless ?",{"reponse":485,"question":486},"Le tarif est calé sur la nature de la mission (audit, refonte, accompagnement long, build complet) et discuté en début de relation. Chaque mission démarre par un audit technique gratuit de 30 minutes pour cadrer le besoin, suivi d'un devis détaillé avec jalons clairs et sans surprise. +10 ans d'expertise, 193 projets livrés et une maîtrise complète de la stack (PrestaShop, Nuxt 4, Docker, IA).","Quel est votre tarif et comment se structure une mission ?",{"reponse":488,"question":489},"Oui, dans le cadre d'une mission. Je déploie des infrastructures containerisées (Docker, Nginx, Redis, PM2) sur VPS souverain français, avec CI\u002FCD GitHub Actions et déploiements Zero-Downtime. Vos données restent en France, conformément au RGPD. À la livraison, vous maîtrisez votre stack : je vous forme et vous remets la documentation d'exploitation.","Prenez-vous en charge l'infrastructure et le DevOps ?",{"reponse":491,"question":492},"Oui — c'est l'une de mes spécialités. Je développe des modules PrestaShop sur mesure dans le cadre d'une mission (forfait ou régie). CRM, génération IA de contenu, catalogue headless, automatisations métier : chaque module est sécurisé, documenté et vous appartient intégralement à la livraison. Pas de catalogue produit : chaque module est conçu pour votre besoin précis.","Développez-vous des modules PrestaShop sur mesure ?",{"reponse":494,"question":495},"Je configure une boucle d'analyse qui croise trois sources que vous possédez : vos logs serveur, votre Google Search Console via API, et les comportements visiteurs via Matomo auto-hébergé sur votre VPS. L'IA identifie le contenu manquant — requêtes sans page, pages à faible conversion — et le génère. Zéro donnée ne transite par des serveurs tiers. Le coût IA est suivi token par token et vous est reporté.","Comment l'IA identifie-t-elle le contenu à produire pour mon site ?",{"reponse":497,"question":498},"Basé à Metz (Grand Est), j'accompagne des entreprises dans toute la France. Audit initial en visio, suivi de projet en temps réel, et déploiements automatisés. La distance n'est jamais un frein — 119 avis 5 étoiles sur Malt en témoignent.","Acceptez-vous des clients partout en France ?",{"reponse":500,"question":501},"Le forfait convient aux périmètres bien définis : refonte, module précis, audit. Le prix et le délai sont fixés à l'avance, sans surprise. La régie (au TJM) convient aux missions évolutives : accompagnement technique long, sprints itératifs, roadmap ouverte. Dans les deux cas, le code vous appartient à la livraison et je n'impose aucun abonnement ni dépendance.","Quelle différence entre une mission au forfait et une mission en régie (TJM) ?",{"reponse":503,"question":504},"Cliquez sur \"Réserver un appel\" pour un échange gratuit de 30 minutes. J'analyse vos enjeux e-commerce, votre stack actuelle et les opportunités d'optimisation SEO et IA. Aucun engagement — juste un diagnostic clair et actionnable.","Comment réserver un premier échange pour discuter de mon projet ?",{"ui":506,"colors":507,"typography":508},{"shadow":21,"borderRadius":19},{"muted":11,"primary":7,"footerBg":12,"headerBg":12,"topBarBg":10,"secondary":8,"background":9,"foreground":10,"topBarText":12},{"fontUrl":16,"fontFamily":15},[510,511,512],"alexandrecarette.fr","www.alexandrecarette.fr","localhost","ac-hub",{"showLogin":21,"showSearch":42,"showContact":42,"headerLayout":181,"showWishlist":42,"stickyHeader":42},"https:\u002F\u002Falexandrecarette.fr\u002F",554,[518,553,580,608,627,639,662,677],{"id":519,"key":520,"keyFr":520,"name":521,"description":522,"metaTitle":523,"metaDescription":524,"position":37,"subcategories":525},555,"strategie","Stratégie","Positionnement, Flywheel, architecture business B2B.","Stratégie — Blog Alexandre Carette","Articles stratégie e-commerce : positionnement, Flywheel, modèles B2B, architecture business.",[526,533,540,546],{"id":527,"key":528,"keyFr":528,"name":529,"description":530,"metaTitle":531,"metaDescription":532,"position":37},563,"intelligence-artificielle","Intelligence artificielle","Stratégie IA appliquée aux marques artisan.","Stratégie IA — Blog Alexandre Carette","Intégrer l'IA dans une stratégie de marque B2B e-commerce.",{"id":534,"key":535,"keyFr":535,"name":536,"description":537,"metaTitle":538,"metaDescription":539,"position":54},564,"positionnement","Positionnement","Posture, marque, différenciation.","Positionnement — Blog Alexandre Carette","Positionnement de marque B2B e-commerce : différenciation, posture, narration.",{"id":541,"key":542,"keyFr":542,"name":93,"description":543,"metaTitle":544,"metaDescription":545,"position":81},565,"flywheel","Modèle Flywheel appliqué au e-commerce.","Flywheel — Blog Alexandre Carette","Construire un Flywheel e-commerce : Média × Boutique × Communauté.",{"id":547,"key":548,"keyFr":548,"name":549,"description":550,"metaTitle":551,"metaDescription":552,"position":100},566,"architecture","Architecture","Architecture stratégique et modèles business.","Architecture stratégique — Blog Alexandre Carette","Architecture business : modèles, chaîne de valeur, décisions structurelles.",{"id":554,"key":555,"keyFr":555,"name":556,"description":557,"metaTitle":558,"metaDescription":559,"position":54,"subcategories":560},556,"prestashop","PrestaShop","Architecture, développement et performance PrestaShop.","PrestaShop — Blog Alexandre Carette","Articles PrestaShop : architecture headless, développement de modules, performance, CI\u002FCD.",[561,566,573],{"id":562,"key":548,"keyFr":548,"name":549,"description":563,"metaTitle":564,"metaDescription":565,"position":37},567,"Architecture PrestaShop headless.","Architecture PrestaShop — Blog Alexandre Carette","Architecture PrestaShop headless : Nuxt, Docker, orchestration.",{"id":567,"key":568,"keyFr":568,"name":569,"description":570,"metaTitle":571,"metaDescription":572,"position":54},568,"developpement","Développement","Développement de modules et thèmes PrestaShop.","Développement PrestaShop — Blog Alexandre Carette","Développer un module PrestaShop : hooks, ObjectModel, bonnes pratiques.",{"id":574,"key":575,"keyFr":575,"name":576,"description":577,"metaTitle":578,"metaDescription":579,"position":81},569,"performance","Performance","Optimisation et scalabilité PrestaShop.","Performance PrestaShop — Blog Alexandre Carette","Performance PrestaShop : cache, Smarty, ObjectModel, monitoring.",{"id":581,"key":582,"keyFr":582,"name":583,"description":584,"metaTitle":585,"metaDescription":586,"position":81,"subcategories":587},557,"devops","DevOps","Docker, CI\u002FCD, méthode et infrastructure.","DevOps — Blog Alexandre Carette","Articles DevOps : Docker, orchestration, CI\u002FCD, méthode et infrastructure e-commerce.",[588,595,601],{"id":589,"key":590,"keyFr":590,"name":591,"description":592,"metaTitle":593,"metaDescription":594,"position":37},570,"docker","Docker","Containerisation et orchestration Docker.","Docker — Blog Alexandre Carette","Docker pour e-commerce : containerisation, réseaux, volumes, orchestration.",{"id":596,"key":597,"keyFr":597,"name":47,"description":598,"metaTitle":599,"metaDescription":600,"position":54},571,"methode","Méthode DevOps, workflows, gouvernance.","Méthode DevOps — Blog Alexandre Carette","Méthode DevOps : workflows Git, gouvernance, rituels, cicatrices.",{"id":602,"key":603,"keyFr":603,"name":604,"description":605,"metaTitle":606,"metaDescription":607,"position":81},582,"automatisation","Automatisation","Automatisation des opérations : tâches planifiées, scripts, pipelines.","Automatisation DevOps — Blog Alexandre Carette","Automatisation DevOps : tâches planifiées, scripts Python, pipelines de production.",{"id":609,"key":115,"keyFr":115,"name":610,"description":611,"metaTitle":612,"metaDescription":613,"position":100,"subcategories":614},558,"Référencement - SEO","Référencement naturel et automatisation éditoriale.","SEO — Blog Alexandre Carette","Articles SEO : référencement, contenu programmatique, automatisation éditoriale, maillage interne.",[615,622],{"id":616,"key":617,"keyFr":617,"name":618,"description":619,"metaTitle":620,"metaDescription":621,"position":37},572,"referencement","Référencement","SEO on-page, technique, maillage interne.","Référencement — Blog Alexandre Carette","Référencement naturel : on-page, technique, maillage interne, FAQ JSON-LD.",{"id":623,"key":603,"keyFr":603,"name":604,"description":624,"metaTitle":625,"metaDescription":626,"position":54},573,"SEO programmatique et usine à contenu.","SEO automatisé — Blog Alexandre Carette","SEO programmatique : pipelines de contenu, rédaction assistée, usine à articles.",{"id":628,"key":528,"keyFr":528,"name":629,"description":630,"metaTitle":631,"metaDescription":632,"position":222,"subcategories":633},559,"Intelligence Artificielle","LLMs, agents, automatisation intelligente.","Intelligence Artificielle — Blog Alexandre Carette","Articles IA : LLMs, agents Claude, automatisation, pipelines éditoriaux pilotés par l'intelligence artificielle.",[634],{"id":635,"key":603,"keyFr":603,"name":604,"description":636,"metaTitle":637,"metaDescription":638,"position":37},574,"Automatisation pilotée par IA.","Automatisation IA — Blog Alexandre Carette","Automatisation pilotée par LLMs : agents, workflows, pipelines intelligents.",{"id":640,"key":641,"keyFr":641,"name":642,"description":643,"metaTitle":644,"metaDescription":645,"position":149,"subcategories":646},560,"e-commerce","E-commerce","Architecture et positionnement e-commerce.","E-commerce — Blog Alexandre Carette","Articles e-commerce : architecture, positionnement, modèles de marque, marketplaces.",[647,652,657],{"id":648,"key":548,"keyFr":548,"name":549,"description":649,"metaTitle":650,"metaDescription":651,"position":37},575,"Architecture e-commerce B2B.","Architecture e-commerce — Blog Alexandre Carette","Architecture e-commerce : multi-tenant, headless, single-product.",{"id":653,"key":535,"keyFr":535,"name":536,"description":654,"metaTitle":655,"metaDescription":656,"position":54},576,"Positionnement marque e-commerce.","Positionnement e-commerce — Blog Alexandre Carette","Positionnement de marque e-commerce : artisan, premium, communautaire.",{"id":658,"key":568,"keyFr":568,"name":569,"description":659,"metaTitle":660,"metaDescription":661,"position":81},581,"Développement e-commerce : catalogue, recherche, intégrations.","Développement e-commerce — Blog Alexandre Carette","Développement e-commerce : catalogue, recherche à facettes, intégrations techniques.",{"id":663,"key":664,"keyFr":664,"name":665,"description":666,"metaTitle":667,"metaDescription":668,"position":233,"subcategories":669},561,"securite","Sécurité","Cybersécurité, hardening, conformité.","Sécurité — Blog Alexandre Carette","Articles sécurité : cybersécurité e-commerce, hardening, conformité, gestion des secrets.",[670],{"id":671,"key":672,"keyFr":672,"name":673,"description":674,"metaTitle":675,"metaDescription":676,"position":37},577,"cybersecurite","Cybersécurité","Cybersécurité appliquée au e-commerce.","Cybersécurité — Blog Alexandre Carette","Cybersécurité e-commerce : bots, secrets, hardening, détection.",{"id":678,"key":679,"keyFr":679,"name":680,"description":681,"metaTitle":682,"metaDescription":683,"position":239,"subcategories":684},562,"tech","Tech","Architecture technique et infrastructure.","Tech — Blog Alexandre Carette","Articles tech : architecture logicielle, infrastructure, outillage développeur.",[685],{"id":686,"key":548,"keyFr":548,"name":549,"description":687,"metaTitle":688,"metaDescription":689,"position":37},578,"Architecture logicielle générale.","Architecture tech — Blog Alexandre Carette","Architecture logicielle : patterns, abstractions, composition.",[691,697,706,713,719,725,730,735,741,749,754,759,765,770,776,786,793,799,805,811,816,823,829,835,841,847,853,859,864,870,876,881,886,891,896,903,909,914,920,925,930,937,942,948,954,961,967,972,977,983,989,995,1001,1006,1013,1019,1025,1031,1037,1043,1049,1055],{"id":692,"name":693,"description":694,"icon":695,"category":326,"monthlyPrice":191,"status":696,"enabled":42},"catalogue.silo_facets","Filtres facettes catalogue","Sidebar de filtres par origine et allergènes sur les pages catégorie silo","????","beta",{"id":698,"name":699,"description":700,"icon":701,"category":702,"monthlyPrice":205,"status":703,"badge":704,"route":705,"enabled":21},"youtube-studio","YouTube Studio","Storyboards data-driven avec prompts 3D Pixar. L'IA analyse vos vraies données PS pour écrire le script.","🎬","content","stable","Premium","\u002Fhub\u002Fmarketing\u002Fyoutube",{"id":707,"name":708,"description":709,"icon":710,"category":702,"monthlyPrice":191,"status":703,"badge":711,"route":712,"enabled":21},"social-studio","Studio Social (Shorts)","Scripts vidéo 60s adaptés à votre avatar client. Export clipboard, WhatsApp, email.","📱","Inclus","\u002Fhub\u002Fmarketing\u002Fstudio",{"id":714,"name":715,"description":716,"icon":717,"category":702,"monthlyPrice":191,"status":703,"badge":711,"route":718,"enabled":21},"blog-ia","Blog IA Automatisé","Publication automatique d'articles SEO longue traîne. 3+ articles\u002Fsemaine sans intervention humaine.","✨","\u002Fhub\u002Fautoblog",{"id":720,"name":721,"description":722,"icon":723,"category":702,"monthlyPrice":191,"status":696,"badge":724,"enabled":21},"blog-podcast","Podcast","Génération audio (TTS) à partir de l'article.","🎙️","Beta",{"id":726,"name":727,"description":728,"icon":729,"category":702,"monthlyPrice":191,"status":696,"badge":724,"enabled":21},"blog-linkedin","LinkedIn","Adaptation automatique de l'article en post LinkedIn.","💼",{"id":731,"name":732,"description":733,"icon":734,"category":702,"monthlyPrice":191,"status":696,"badge":724,"enabled":21},"blog-reels","Reels","Découpage en script Reels \u002F Shorts pour réseaux sociaux.","🎞️",{"id":736,"name":737,"description":738,"icon":739,"category":702,"monthlyPrice":191,"status":703,"badge":711,"route":740,"enabled":42},"hub-translations","Traductions IA","Workspace multilingue Hub : sélection de chaînes (ps_translation + tables _lang PS), génération de prompt IA enrichi par un profil culturel par langue, réinjection des traductions JSON en un clic.","🌐","\u002Fhub\u002Ftranslations",{"id":742,"name":743,"description":744,"icon":745,"category":746,"monthlyPrice":191,"status":703,"badge":747,"route":748,"enabled":42},"lead.capa","Lead CAPA","Cost per acquisition tracking on each lead. Computed from ad spend \u002F channel + UTMs + conversion attribution.","💰","enterprise-feature","Enterprise","\u002Fhub\u002Fleads",{"id":750,"name":751,"description":752,"icon":753,"category":746,"monthlyPrice":191,"status":703,"badge":747,"route":748,"enabled":42},"lead.ca","Lead Revenue Attribution","Revenue attributed to each lead (LTV, CA total). Linked to orders + customer journey.","📈",{"id":755,"name":756,"description":757,"icon":758,"category":746,"monthlyPrice":191,"status":703,"badge":747,"route":748,"enabled":42},"lead.scoring","Lead AI Scoring","Predictive lead scoring based on behavior + firmographics. AI ranks hot vs cold leads.","🧠",{"id":760,"name":761,"description":762,"icon":763,"category":746,"monthlyPrice":191,"status":703,"badge":747,"route":764,"enabled":42},"sav.sla","SAV SLA Tracking","Track SLA compliance on after-sales tickets. Auto-escalate breaches.","⏱️","\u002Fhub\u002Fsav",{"id":766,"name":767,"description":768,"icon":769,"category":746,"monthlyPrice":191,"status":703,"badge":747,"route":764,"enabled":42},"sav.sentiment","SAV Sentiment Analysis","AI sentiment analysis on customer responses. Surface unhappy customers before they churn.","🎭",{"id":771,"name":772,"description":773,"icon":774,"category":746,"monthlyPrice":191,"status":703,"badge":747,"route":775,"enabled":42},"subscription.churn","Subscription Churn Prediction","AI churn risk score per active subscription. Surface at-risk renewals before billing cycle.","📉","\u002Fhub\u002Fsubscriptions",{"id":777,"name":778,"description":779,"icon":780,"category":781,"monthlyPrice":782,"status":783,"badge":784,"route":785,"enabled":21},"fin-payments","Paiements & Rapprochements","Suivi paiements, rapprochement bancaire automatisé, relances impayés.","💳","finance",29,"planned","Bientôt","\u002Fhub\u002Ffinance\u002Fpayments",{"id":787,"name":788,"description":789,"icon":790,"category":781,"monthlyPrice":791,"status":783,"badge":784,"route":792,"enabled":21},"fin-tva-fec","TVA & Export FEC","Déclarations TVA, export FEC conforme (obligation légale FR), intrastat.","📋",19,"\u002Fhub\u002Ffinance\u002Ftva",{"id":794,"name":795,"description":796,"icon":797,"category":781,"monthlyPrice":191,"status":783,"badge":784,"route":798,"enabled":21},"fin-refunds","Remboursements & Avoirs","Gestion unifiée des avoirs, remboursements partiels, notes de crédit.","↩️","\u002Fhub\u002Ffinance\u002Frefunds",{"id":800,"name":801,"description":802,"icon":803,"category":781,"monthlyPrice":782,"status":783,"badge":784,"route":804,"enabled":21},"fin-treasury","Trésorerie","Prévisionnel de trésorerie, encaissements, décaissements, reporting cashflow.","🏦","\u002Fhub\u002Ffinance\u002Ftreasury",{"id":806,"name":807,"description":808,"icon":809,"category":781,"monthlyPrice":191,"status":696,"route":810,"enabled":21},"fin-invoicing","Facturation","Devis, factures (one-shot + abonnements), relances automatiques. Remplace Tiime, 100% souverain.","🧾","\u002Fhub\u002Ffinance\u002Finvoicing",{"id":812,"name":813,"description":814,"icon":803,"category":781,"monthlyPrice":191,"status":696,"route":815,"enabled":21},"fin-bank","Relevé bancaire","Sync DSP2\u002FOpen Banking et consultation des lignes de compte (N26, Powens...). Rapprochement manuel facture\u002Fdépense.","\u002Fhub\u002Ffinance\u002Fbank",{"id":817,"name":818,"description":819,"icon":820,"category":821,"monthlyPrice":782,"status":696,"badge":784,"route":822,"enabled":21},"food-traceability","Traçabilité & Lots","Suivi sanitaire lot par lot : fournisseur, DLC, clients livrés. Rappel en 1 clic.","🧬","food","\u002Fhub\u002Fpim\u002Ftraceability",{"id":824,"name":825,"description":826,"icon":827,"category":821,"monthlyPrice":791,"status":696,"badge":784,"route":828,"enabled":21},"food-expiry","DLC & Décotes Auto","Gestion dates de péremption et décotes automatiques sur produits à date courte.","⏳","\u002Fhub\u002Fpim\u002Fexpiry",{"id":830,"name":831,"description":832,"icon":833,"category":821,"monthlyPrice":782,"status":696,"badge":784,"route":834,"enabled":21},"food-b2b-pricing","Grilles Tarifaires B2B","Prix par segment client, volume ou contrat négocié. Multi-niveaux, multi-devises.","💶","\u002Fhub\u002Fcrm\u002Fpricing",{"id":836,"name":837,"description":838,"icon":839,"category":821,"monthlyPrice":791,"status":696,"badge":784,"route":840,"enabled":21},"food-catch-weight","Poids Variable","Catching weight : facture ajustée au poids réel à la préparation. Indispensable frais et fruits secs.","⚖️","\u002Fhub\u002Flogistique\u002Fcatch-weight",{"id":842,"name":843,"description":844,"icon":845,"category":821,"monthlyPrice":191,"status":696,"badge":784,"route":846,"enabled":21},"food-legal-labels","Origines & Calibres","Mentions légales obligatoires (origine, calibre, catégorie) sur fiches et documents commerciaux.","🏷️","\u002Fhub\u002Fpim\u002Flegal-labels",{"id":848,"name":849,"description":850,"icon":851,"category":821,"monthlyPrice":191,"status":696,"badge":784,"route":852,"enabled":21},"food-freight-free","Franco de Port","Règles de livraison gratuite configurables par montant, poids, volume ou nombre de palettes.","🚚","\u002Fhub\u002Fcrm\u002Ffreight",{"id":854,"name":855,"description":856,"icon":857,"category":821,"monthlyPrice":791,"status":696,"badge":784,"route":858,"enabled":21},"food-quick-order","Commande Rapide","Matrice de commande type tableau : saisie masse SKU+qty, import CSV, re-commande en 1 clic.","⚡","\u002Fhub\u002Fcrm\u002Fquick-order",{"id":860,"name":861,"description":862,"icon":769,"category":821,"monthlyPrice":782,"status":703,"badge":784,"route":863,"enabled":21},"food-impersonate","Mode Commercial","Le commercial passe commande \"en tant que\" le client. Journal d'audit RGPD, session 2h max.","\u002Fhub\u002Fcrm\u002Fimpersonate",{"id":865,"name":866,"description":867,"icon":868,"category":821,"monthlyPrice":205,"status":696,"badge":784,"route":869,"enabled":21},"food-routing","Tournées de Livraison","Regroupement commandes par secteur, feuille de route chauffeur, optimisation ordre de passage.","🗺️","\u002Fhub\u002Flogistique\u002Ftournees",{"id":871,"name":872,"description":873,"icon":753,"category":874,"monthlyPrice":191,"status":703,"badge":711,"route":875,"enabled":21},"growth-simulator","Simulateur de Croissance","Modélisez vos KPIs (CA, panier moyen, conversion, CAC) et obtenez un plan d'action IA en 3 leviers.","growth","\u002Fhub\u002Fgrowth\u002Fsimulator",{"id":877,"name":878,"description":879,"icon":745,"category":874,"monthlyPrice":191,"status":703,"badge":711,"route":880,"enabled":21},"ambassador","Programme Ambassadeur","RevShare 15% récurrent. Jauge Cost-to-Profit, introduction VIP, suivi des filleuls.","\u002Fhub\u002Fgrowth\u002Fambassador",{"id":882,"name":883,"description":884,"icon":753,"category":885,"monthlyPrice":191,"status":703,"badge":711,"enabled":21},"gsc-showcase","SEO Showcase","Graphique Google Search Console en homepage — preuve sociale des résultats SEO clients avec métriques et courbe.","homepage",{"id":887,"name":888,"description":889,"icon":890,"category":885,"monthlyPrice":191,"status":703,"badge":711,"enabled":21},"workflow","Workflow Flywheel","Section homepage 4 étapes : Du Foncier à la Flywheel exponentielle. Stepper visuel avec bordure animée.","🔄",{"id":892,"name":893,"description":894,"icon":895,"category":885,"monthlyPrice":191,"status":703,"enabled":42},"home-banners","Bannières Home","Row 3 colonnes avec image background, overlay texte et CTA — éditable depuis le builder homepage.","?",{"id":897,"name":898,"description":899,"icon":900,"category":901,"monthlyPrice":191,"status":703,"badge":711,"route":902,"enabled":21},"avatars","Labo Avatars","Classification IA des visiteurs avec CRUD complet. Personnalisez l'affichage B2B\u002FB2C par profil.","👁️","intelligence","\u002Fhub\u002Fai\u002Favatars",{"id":904,"name":905,"description":906,"icon":907,"category":901,"monthlyPrice":191,"status":783,"badge":784,"route":908,"enabled":21},"bi-sales","Ventes & CA","Rapports de ventes, CA, panier moyen, conversion, top produits.","💹","\u002Fhub\u002Fbi\u002Fsales",{"id":910,"name":911,"description":912,"icon":913,"category":901,"monthlyPrice":191,"status":696,"enabled":21},"crm-leads-stack-detection","Détection stack web des leads","Affiche la pile technique du site internet de chaque lead. Réservé au vaisseau-mère AC.","TS",{"id":915,"name":916,"description":917,"icon":918,"category":901,"monthlyPrice":791,"status":783,"badge":784,"route":919,"enabled":21},"bi-cohorts","Cohortes Clients","Analyse de rétention, LTV, churn par cohorte, segmentation RFM.","👥","\u002Fhub\u002Fbi\u002Fcohorts",{"id":921,"name":922,"description":923,"icon":753,"category":901,"monthlyPrice":191,"status":783,"badge":784,"route":924,"enabled":21},"bi-matomo","Matomo Analytics","Dashboard Matomo intégré — trafic, sources, pages, conversions, souveraineté des données.","\u002Fhub\u002Fbi\u002Fmatomo",{"id":926,"name":927,"description":928,"icon":929,"category":901,"monthlyPrice":191,"status":703,"enabled":21},"crm-leads-generation-detection","Génération du dirigeant","Affiche l'âge \u002F génération (Jeune \u002F Pivot \u002F Senior) du dirigeant légal RNE — exploitable pour cibler les profils repreneurs récents.","👤",{"id":281,"name":931,"description":932,"icon":933,"category":934,"monthlyPrice":782,"status":703,"badge":935,"route":936,"enabled":21},"Module Événements","Gestion d'événements physiques et online. Inscriptions, capacité, marketing automatisé.","📅","logistique","Add-on","\u002Fhub\u002Flogistique\u002Fevents",{"id":938,"name":939,"description":940,"icon":941,"category":934,"monthlyPrice":791,"status":783,"badge":784,"enabled":21},"excel-export","Export Excel Commandes","Exportez vos commandes en fichier Excel pour votre comptabilité. Colonnes personnalisables.","📊",{"id":943,"name":944,"description":945,"icon":946,"category":934,"monthlyPrice":191,"status":703,"badge":711,"route":947,"enabled":21},"wms-warehouses","Entrepôts","Visualisez vos entrepôts (ps_warehouse natif PS) avec adresses, références stockées et quantités physiques. Indispensable multi-sites.","🏬","\u002Fhub\u002Flogistique\u002Fwarehouses",{"id":949,"name":950,"description":951,"icon":952,"category":934,"monthlyPrice":191,"status":703,"badge":711,"route":953,"enabled":21},"wms-store-locator","Boutiques","Store locator : vos points de vente physiques (ps_store natif PS) avec adresse, horaires, géolocalisation et lien Maps. Affiché sur la carte publique du site.","🏪","\u002Fhub\u002Flogistique\u002Fstores",{"id":955,"name":956,"description":957,"icon":958,"category":959,"monthlyPrice":191,"status":703,"badge":711,"route":960,"enabled":21},"broadcast","Broadcast Center","Campagnes multi-canal Email, WhatsApp et SMS avec IA. Générez des messages adaptés au ton de votre marque en un clic.","📡","marketing","\u002Fhub\u002Fmarketing\u002Fbroadcast",{"id":962,"name":963,"description":964,"icon":965,"category":959,"monthlyPrice":191,"status":703,"badge":711,"route":966,"enabled":21},"transcreation","Transcréation IA","Adaptez vos fiches produit, articles et catégories à la psychologie d'achat de chaque marché (FR, EN, DE).","🌍","\u002Fhub\u002Fmarketing\u002Flocalization",{"id":968,"name":969,"description":970,"icon":890,"category":959,"monthlyPrice":205,"status":703,"badge":704,"route":971,"enabled":21},"nurturing","Nurturing Studio","Séquences automatisées multi-canal générées par IA. Onboarding, relance, upsell — timeline visuelle.","\u002Fhub\u002Fmarketing\u002Fnurturing",{"id":973,"name":974,"description":975,"icon":941,"category":959,"monthlyPrice":191,"status":703,"badge":711,"route":976,"enabled":21},"seo-console","SEO Console","Audit de cannibalisation, import Google Search Console, optimisation URLs, monitoring 404 et stratégie IA SEO.","\u002Fhub\u002Fmarketing\u002Fseo-console",{"id":978,"name":979,"description":980,"icon":981,"category":959,"monthlyPrice":791,"status":783,"badge":784,"route":982,"enabled":21},"pim-cross-sell","Cross-sell \u002F Upsell","Moteur de recommandations IA, règles manuelles, bundles intelligents.","🔀","\u002Fhub\u002Fproducts\u002Fcross-sell",{"id":984,"name":985,"description":986,"icon":987,"category":959,"monthlyPrice":791,"status":783,"badge":784,"route":988,"enabled":21},"pim-search-boost","Recherche & Tri","Moteur de recherche boosté, synonymes, tri personnalisé, merchandising par catégorie.","🔍","\u002Fhub\u002Fproducts\u002Fsearch-boost",{"id":990,"name":991,"description":992,"icon":993,"category":959,"monthlyPrice":782,"status":783,"badge":784,"route":994,"enabled":21},"pim-ab-testing","A\u002FB Testing","Expériences sur fiches produit, prix, covers, CTA — mesure du lift statistique.","🔬","\u002Fhub\u002Fproducts\u002Fab-testing",{"id":996,"name":997,"description":998,"icon":999,"category":959,"monthlyPrice":791,"status":783,"badge":784,"route":1000,"enabled":21},"pim-merchandising","Merchandising","Orchestration commerciale du catalogue : ordre des produits par catégorie (drag-and-drop), règles auto (marge, stock, fraîcheur DLC, CA 30j), badges et mises en avant.","🎯","\u002Fhub\u002Fproducts\u002Fmerchandising",{"id":1002,"name":1003,"description":1004,"icon":1005,"category":959,"monthlyPrice":191,"status":696,"enabled":42},"ac_giftcard","Cartes cadeaux","Vente de cartes cadeaux PDF imprimables et envoi email avec message personnalisé. Code unique, validité 1 an, espace BO de gestion.","🎁",{"id":1007,"name":1008,"description":1009,"icon":1010,"category":1011,"monthlyPrice":191,"status":783,"badge":784,"route":1012,"enabled":21},"prm-suppliers","Fournisseurs","Annuaire fournisseurs, conditions d'achat, contacts, scoring qualité.","🏭","procurement","\u002Fhub\u002Fprocurement\u002Fsuppliers",{"id":1014,"name":1015,"description":1016,"icon":1017,"category":1011,"monthlyPrice":791,"status":783,"badge":784,"route":1018,"enabled":21},"prm-purchase-orders","Bons de Commande Achat","Création et suivi des PO fournisseurs, réception partielle, validation multi-niveaux.","📝","\u002Fhub\u002Fprocurement\u002Fpurchase-orders",{"id":1020,"name":1021,"description":1022,"icon":1023,"category":1011,"monthlyPrice":782,"status":783,"badge":784,"route":1024,"enabled":21},"prm-restock","Réassort IA","Suggestions d'achat IA basées sur la vitesse de vente, saisonnalité, délais fournisseurs.","🤖","\u002Fhub\u002Fprocurement\u002Frestock",{"id":1026,"name":1027,"description":1028,"icon":1029,"category":1030,"monthlyPrice":191,"status":696,"enabled":42},"chatbot","Chatbot conversationnel","Bouton flottant + entonnoirs scénarisés (B2B\u002Fcommande\u002Fproduit\u002Fparler à un humain) qui qualifient le visiteur et créent un lead dans le pipeline. Négo réelle email\u002FWhatsApp depuis le hub.","💬","support",{"id":1032,"name":1033,"description":1034,"icon":1035,"category":1030,"monthlyPrice":191,"status":783,"badge":784,"route":1036,"enabled":21},"support-inbox","Inbox Unifiée","Emails, WhatsApp, formulaires — boîte unifiée conversationnelle multi-canal.","📥","\u002Fhub\u002Fsupport\u002Finbox",{"id":1038,"name":1039,"description":1040,"icon":1041,"category":1030,"monthlyPrice":791,"status":783,"badge":784,"route":1042,"enabled":21},"support-tickets","Tickets & Helpdesk","Tickets avec SLA, catégorisation IA, escalade, base de connaissance.","🎫","\u002Fhub\u002Fsupport\u002Ftickets",{"id":1044,"name":1045,"description":1046,"icon":1047,"category":1030,"monthlyPrice":791,"status":783,"badge":784,"route":1048,"enabled":21},"support-rma","Retours & RMA","Workflow retours produits (RMA), remboursement\u002Féchange, contrôle qualité.","📦","\u002Fhub\u002Fsupport\u002Frma",{"id":1050,"name":1051,"description":1052,"icon":1053,"category":1030,"monthlyPrice":191,"status":783,"badge":784,"route":1054,"enabled":21},"support-reviews","Avis Clients & UGC","Collecte avis post-achat, modération, UGC photo\u002Fvidéo, rich snippets SEO.","⭐","\u002Fhub\u002Fsupport\u002Freviews",{"id":1056,"name":1057,"description":1058,"icon":1059,"category":1060,"monthlyPrice":191,"status":696,"badge":724,"route":1061,"enabled":21},"finops","FinOps AI Queue","File d'attente IA avec estimation pre-flight, comptage de tokens, coûts réels et télémétrie Flywheel.","⚙️","system","\u002Fhub\u002Fsystem\u002Fai-queue",{"common.open_cart":1063,"common.open_quote":1064,"common.back_home":1065,"common.main_navigation":1066,"auth.login_button":1067,"common.open_menu":1068},"Ouvrir le panier","Ouvrir le devis","Retour à l\\","Navigation principale","Se connecter","Ouvrir le menu","public",{"PS_B2B_ENABLE":1071,"CMS_COMMERCE_MODE":1071,"PS_CATALOG_MODE":1071,"PS_GUEST_CHECKOUT_ENABLED":1072,"PS_PWA_INSTALL_BANNER":1072,"PS_PRICE_ROUND_UP":1071,"PRO_SITE_URL":1071,"CHECKOUT_PHONE_REQUIRED":1071},"0","1",[],{},[1076,1081,1084,1087,1089,1092,1095,1097,1100],{"type":1077,"visibility":1078},"hero",{"avatars":1079,"mode":1080},[],"show",{"type":1082,"visibility":1083},"features",{"avatars":1079,"mode":1080},{"type":1085,"visibility":1086},"categories",{"avatars":1079,"mode":1080},{"type":281,"visibility":1088},{"avatars":1079,"mode":1080},{"type":1090,"visibility":1091},"testimonials",{"avatars":1079,"mode":1080},{"type":1093,"visibility":1094},"about",{"avatars":1079,"mode":1080},{"type":161,"visibility":1096},{"avatars":1079,"mode":1080},{"type":1098,"visibility":1099},"faq",{"avatars":1079,"mode":1080},{"type":252,"visibility":1101},{"avatars":1079,"mode":1080},{"colors":1103},{"primary":1104},"#2563eb",{},{},"idle",[],"ajout",[],[],[],["Set"],["ShallowReactive",1115],{"theme-db":-1,"header-db":-1,"$fOxsGgYM02v0aJrnC36aTUWENxCDomhty1nyRCJ-f3r8":-1,"megamenu-contexts-ac-hub":-1,"megamenu":-1,"$fiqSypzsJu4zANk5JcFEzEIRJjUIuEoWYvWFm7XpF6Ww":-1,"alexandrecarette-hero-data":-1,"footer-db":-1,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":-1,"$fnYZFE-Ln7YzsP4p0Ckp1b_ubCfJlBifuro3djYzO51g":-1}]</script></body></html>