[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fRkr0I_QPgv-HXKxDTLkDQhJ9TK-wH24D67zJ2ZpA_1o":22,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":64,"megamenu":145,"$fwipLZx9frFnxnKBQl0AYhzbANK3XGXIj2AQYtYZA29A":201,"footer-db":215,"header-db":233},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"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":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"title":23,"slug":24,"metaDescription":25,"category":26,"tags":27,"difficulty":34,"psVersions":35,"content":39,"faq":40,"tldr":59,"readingTime":60,"generatedAt":61,"publishDate":61,"relatedArticles":62,"sourceCategory":63},"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",[28,29,30,31,32,33],"h1","seo-onpage","override","import-csv","fiche-produit","balise-titre","intermediaire",[36,37,38],"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&lt;?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' =&gt; self::TYPE_HTML,\n            'lang' =&gt; true,\n            'validate' =&gt; 'isCleanHtml',\n            'size' =&gt; 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&lt;?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-&gt;get('seo')-&gt;add('h1_prod', TextType::class, [\n            'label' =&gt; 'H1 personnalisé',\n            'required' =&gt; false,\n            'attr' =&gt; [\n                'placeholder' =&gt; 'Laissez vide pour utiliser le nom du produit',\n                'maxlength' =&gt; 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&lt;div class=\"form-group\"&gt;\n    &lt;label class=\"control-label col-lg-3\" for=\"h1_prod_{$id_lang}\"&gt;\n        &lt;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.'}\"&gt;\n            {l s='H1 personnalisé'}\n        &lt;\u002Fspan&gt;\n    &lt;\u002Flabel&gt;\n    &lt;div class=\"col-lg-5\"&gt;\n        {foreach from=$languages item=language}\n            &lt;div class=\"translatable-field lang-{$language.id_lang}\"\n                 {if $language.id_lang != $defaultFormLanguage}style=\"display:none\"{\u002Fif}&gt;\n                &lt;input type=\"text\"\n                       id=\"h1_prod_{$language.id_lang}\"\n                       name=\"h1_prod_{$language.id_lang}\"\n                       class=\"form-control\"\n                       value=\"{$product-&gt;h1_prod[$language.id_lang]|escape:'html':'UTF-8'}\"\n                       maxlength=\"255\" \u002F&gt;\n            &lt;\u002Fdiv&gt;\n        {\u002Fforeach}\n    &lt;\u002Fdiv&gt;\n&lt;\u002Fdiv&gt;\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&lt;?php\n\nclass AdminImportController extends AdminImportControllerCore\n{\n    public function __construct()\n    {\n        parent::__construct();\n\n        $this-&gt;available_fields += [\n            'h1_prod' =&gt; ['label' =&gt; $this-&gt;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&lt;h1&gt;{$product-&gt;name}&lt;\u002Fh1&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>par :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n&lt;h1&gt;{if $product-&gt;h1_prod}{$product-&gt;h1_prod}{else}{$product-&gt;name}{\u002Fif}&lt;\u002Fh1&gt;\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()-&gt;language-&gt;id);\n\n    if (!empty($product-&gt;h1_prod)) {\n        $params['presentedProduct']['h1_custom'] = $product-&gt;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&lt;h1&gt;{if isset($product.h1_custom) && $product.h1_custom}{$product.h1_custom}{else}{$product.name}{\u002Fif}&lt;\u002Fh1&gt;\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 &gt; Performances &gt; 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>",[41,44,47,50,53,56],{"q":42,"a":43},"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":45,"a":46},"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":48,"a":49},"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":51,"a":52},"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":54,"a":55},"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":57,"a":58},"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",{"columns":65},[66,82,112,133],{"title":67,"links":68},"Plateforme",[69,73,76,79],{"label":70,"href":71,"external":72},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":74,"href":75,"external":72},"Devenir Ambassadeur","\u002Fambassadeur",{"label":77,"href":78,"external":72},"Modules PrestaShop","\u002Fmodules",{"label":80,"href":81,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":83,"links":84},"Le Synedre",[85,88,91,94,97,100,103,106,109],{"label":86,"href":87,"external":72},"L'histoire","\u002Fsynedre",{"label":89,"href":90,"external":72},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":92,"href":93,"external":72},"L'équipe","\u002Fequipe",{"label":95,"href":96,"external":72},"Le réacteur en direct","\u002Freacteur",{"label":98,"href":99,"external":72},"Le Drill (entraînement)","\u002Fdrill",{"label":101,"href":102,"external":72},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":104,"href":105,"external":72},"Les agents IA","\u002Fagents-ia",{"label":107,"href":108,"external":72},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":110,"href":111,"external":72},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":113,"links":114},"Ressources",[115,118,121,124,127,130],{"label":116,"href":117,"external":72},"Blog","\u002Fblog",{"label":119,"href":120,"external":72},"Academy","\u002Facademy",{"label":122,"href":123,"external":72},"Dictionnaire","\u002Fdictionnaire",{"label":125,"href":126,"external":72},"Expertise PrestaShop","\u002Fexpertise",{"label":128,"href":129,"external":72},"Flywheel","\u002Fflywheel",{"label":131,"href":132,"external":72},"Manifeste","\u002Fmanifeste",{"title":134,"links":135},"À propos",[136,139,142],{"label":137,"href":138,"external":72},"Alexandre Carette","\u002Fa-propos",{"label":140,"href":141,"external":72},"Dossier de presse","\u002Fpresse",{"label":143,"href":144,"external":72},"Contact","\u002Fcontact",{"items":146},[147,156,162,168,176,184,190,195],{"id":148,"type":149,"label":150,"href":126,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":152,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":153,"children":154,"psChildren":155},41,"link",{"fr":151},"Expertise",null,0,[],[],{"id":157,"type":149,"label":158,"href":117,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":152,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":159,"children":160,"psChildren":161},42,{"fr":116},1,[],[],{"id":163,"type":149,"label":164,"href":78,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":152,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":165,"children":166,"psChildren":167},43,{"fr":77},2,[],[],{"id":169,"type":149,"label":170,"href":172,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":152,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":173,"children":174,"psChildren":175},44,{"fr":171},"Outils IA","\u002Foutils-ia",3,[],[],{"id":177,"type":149,"label":178,"href":71,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":180,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":181,"children":182,"psChildren":183},45,{"fr":179},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":185,"type":149,"label":186,"href":120,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":152,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":187,"children":188,"psChildren":189},46,{"fr":119},5,[],[],{"id":191,"type":149,"label":192,"href":138,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":152,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":60,"children":193,"psChildren":194},47,{"fr":134},[],[],{"id":196,"type":149,"label":197,"href":144,"icon":152,"description":152,"badge":152,"groupTitle":152,"style":152,"gridColumns":152,"cssClass":152,"psCategoryId":152,"showPsChildren":72,"position":198,"children":199,"psChildren":200},48,{"fr":143},7,[],[],{"academy":202,"blog":203,"expertise":214},[],[204,208,211],{"title":205,"url":206,"score":159,"type":207},"Référencement PrestaShop 2026 : le guide complet SEO + IA","\u002Fblog\u002Fseo\u002Freferencement\u002Fguide-complet-prestashop-2026","blog",{"title":209,"url":210,"score":159,"type":207},"SEO Google classique pour PrestaShop : 7 leviers techniques","\u002Fblog\u002Fseo\u002Freferencement\u002Fseo-google-classique-prestashop",{"title":212,"url":213,"score":159,"type":207},"AIO et GEO pour PrestaShop : optimiser pour les moteurs IA","\u002Fblog\u002Fseo\u002Freferencement\u002Faio-geo-intelligence-artificielle-prestashop",[],{"footer":216},{"theme":217,"description":152,"hours":152,"logo":218,"contact":221,"social":222,"bottomBar":232},"dark",{"src":219,"href":220,"alt":137},"\u002Flogo-ac.svg","\u002F",{"email":152,"phone":152,"address":152,"cta":152},[223,226,229],{"platform":224,"href":225,"label":224},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":227,"href":228,"label":227},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":230,"href":231,"label":230},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":152},{"header":234},{"logo":235,"topBar":238,"contactEmail":241,"features":242,"navBar":152},{"src":219,"alt":236,"text":137,"href":220,"class":237},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":152,"showLanguages":72,"align":239,"languages":240},"left",[],"contact@alexandrecarette.fr",{"showSearch":72,"showWishlist":72,"showLogin":20,"showContact":72,"showCart":72,"stickyHeader":20,"headerLayout":243},"inline"]