[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$frNz4EXmBvQEw-DDkqJlmTT8S7KK4smiuKuvz-n-obEw":22,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":61,"megamenu":142,"header-db":198,"footer-db":211,"$fkCLkWmSHl4r8ACjniepq67kxyUXNX9y81YdHOMua3qI":227},{"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":56,"readingTime":57,"generatedAt":58,"publishDate":58,"relatedArticles":59,"sourceCategory":60},"Intégrer un widget externe dans votre thème PrestaShop","integrer-widget-externe-theme-prestashop","Guide complet pour intégrer un widget tiers (avis, chat, tracking) dans un thème PrestaShop via les fichiers TPL, hooks et bonnes pratiques.","developpement",[28,29,30,31,32,33],"widget","tpl","theme","smarty","hooks","integration","debutant",[36,37,38],"1.6","1.7","8.x","\u003Ch1>Intégrer un widget externe dans votre thème PrestaShop\u003C\u002Fh1>\n\u003Cp>L'intégration de widgets tiers — chat en ligne, avis clients, pixels de tracking, bandeau de cookies — est l'une des demandes les plus fréquentes en e-commerce. Sur PrestaShop, cette opération repose sur la modification des fichiers templates (\u003Ccode>.tpl\u003C\u002Fcode> en Smarty, ou \u003Ccode>.twig\u003C\u002Fcode> depuis PrestaShop 8.x pour le back-office) et sur la bonne compréhension du système de hooks.\u003C\u002Fp>\n\u003Cp>Voici la méthode professionnelle pour intégrer proprement n'importe quel snippet externe sans compromettre la maintenabilité de votre boutique.\u003C\u002Fp>\n\u003Ch2>Comprendre l'architecture des templates PrestaShop\u003C\u002Fh2>\n\u003Cp>Avant de coller un script dans un fichier au hasard, il faut comprendre comment PrestaShop construit ses pages.\u003C\u002Fp>\n\u003Cp>Chaque page visible par vos visiteurs est générée à partir de fichiers templates situés dans le dossier de votre thème :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\n\u002Fthemes\u002Fvotre-theme\u002F\n├── templates\u002F\n│   ├── layouts\u002F\n│   │   └── layout-both-columns.tpl   # Structure globale\n│   ├── _partials\u002F\n│   │   ├── head.tpl                   # Balises &lt;head&gt;\n│   │   ├── header.tpl                 # En-tête du site\n│   │   └── footer.tpl                 # Pied de page\n│   ├── index.tpl                      # Page d'accueil\n│   ├── catalog\u002F\n│   │   └── product.tpl                # Fiche produit\n│   └── checkout\u002F\n│       └── cart.tpl                   # Panier\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Sur \u003Cstrong>PrestaShop 1.6\u003C\u002Fstrong>, la structure est légèrement différente : les fichiers se trouvent directement à la racine du dossier du thème (\u003Ccode>\u002Fthemes\u002Fvotre-theme\u002Fheader.tpl\u003C\u002Fcode>, \u003Ccode>footer.tpl\u003C\u002Fcode>, etc.).\u003C\u002Fp>\n\u003Ch3>Quel fichier modifier selon le type de widget ?\u003C\u002Fh3>\n\u003Ctr>\u003Cth>Type de widget\u003C\u002Fth>\u003Cth>Fichier cible\u003C\u002Fth>\u003Cth>Emplacement dans le HTML\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Pixel de tracking (Analytics, Meta)\u003C\u002Fth>\u003Cth>`head.tpl`\u003C\u002Fth>\u003Cth>Juste avant `\u003C\u002Fhead>`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Chat en ligne (Crisp, Tawk.to)\u003C\u002Fth>\u003Cth>`footer.tpl`\u003C\u002Fth>\u003Cth>Juste avant `\u003C\u002Fbody>`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Avis clients (Trustpilot, Avis Vérifiés)\u003C\u002Fth>\u003Cth>`product.tpl`\u003C\u002Fth>\u003Cth>Après la description produit\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Bandeau cookies (Axeptio, Tarteaucitron)\u003C\u002Fth>\u003Cth>`footer.tpl` ou `head.tpl`\u003C\u002Fth>\u003Cth>Selon la documentation du service\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Widget personnalisé (formulaire, carte)\u003C\u002Fth>\u003Cth>Template de la page concernée\u003C\u002Fth>\u003Cth>À l'endroit souhaité\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ch2>Méthode 1 : insertion directe dans le template (rapide)\u003C\u002Fh2>\n\u003Cp>Cette méthode convient pour un widget simple qui doit apparaître sur toutes les pages.\u003C\u002Fp>\n\u003Ch3>Étape 1 : accéder aux fichiers du thème\u003C\u002Fh3>\n\u003Cp>Connectez-vous à votre serveur via \u003Cstrong>FTP\u003C\u002Fstrong> (FileZilla, WinSCP) ou via le \u003Cstrong>gestionnaire de fichiers\u003C\u002Fstrong> de votre hébergeur. Naviguez jusqu'au dossier de votre thème actif.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\u003Cstrong>Cas particulier — PrestaShop Cloud :\u003C\u002Fstrong> si vous utilisez l'offre cloud de PrestaShop, l'accès FTP est restreint. Vérifiez dans votre tableau de bord cloud si un accès SFTP est proposé, ou utilisez le module \"HTML personnalisé\" comme alternative.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch3>Étape 2 : identifier le bon fichier\u003C\u002Fh3>\n\u003Cp>Pour un widget de type chat ou script global, ouvrez \u003Ccode>footer.tpl\u003C\u002Fcode> (PrestaShop 1.7\u002F8.x : \u003Ccode>themes\u002Fvotre-theme\u002Ftemplates\u002F_partials\u002Ffooter.tpl\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Ch3>Étape 3 : coller le snippet\u003C\u002Fh3>\n\u003Cp>Insérez le code JavaScript fourni par le service tiers juste avant la balise de fermeture :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{* Widget chat - Ajouté le JJ\u002FMM\u002FAAAA *}\n&lt;script&gt;\n  \u002F\u002F Coller ici le snippet fourni par le service\n  (function() {\n    var s = document.createElement('script');\n    s.src = 'https:\u002F\u002Fwidget.example.com\u002Floader.js';\n    s.async = true;\n    document.head.appendChild(s);\n  })();\n&lt;\u002Fscript&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Conseil :\u003C\u002Fstrong> ajoutez toujours un commentaire Smarty \u003Ccode>{* ... *}\u003C\u002Fcode> indiquant la date et l'objet du widget. Vous vous remercierez dans six mois.\u003C\u002Fp>\n\u003Ch2>Méthode 2 : utiliser les hooks PrestaShop (recommandée)\u003C\u002Fh2>\n\u003Cp>L'insertion directe fonctionne, mais elle a un défaut majeur : lors d'une mise à jour du thème, vos modifications sont écrasées. La méthode professionnelle consiste à utiliser le \u003Cstrong>système de hooks\u003C\u002Fstrong> via un module.\u003C\u002Fp>\n\u003Ch3>Créer un micro-module d'intégration\u003C\u002Fh3>\n\u003Cp>Créez un module dédié qui injecte votre widget via un hook. Voici un squelette fonctionnel :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n&lt;?php\n\u002F**\n * Module d'intégration de widget externe\n *\u002F\nclass MyWidgetIntegration extends Module\n{\n    public function __construct()\n    {\n        $this-&gt;name = 'mywidgetintegration';\n        $this-&gt;version = '1.0.0';\n        $this-&gt;author = 'Votre nom';\n        $this-&gt;tab = 'front_office_features';\n        $this-&gt;need_instance = 0;\n        $this-&gt;bootstrap = true;\n\n        parent::__construct();\n\n        $this-&gt;displayName = $this-&gt;l('Mon Widget');\n        $this-&gt;description = $this-&gt;l('Intègre le widget XYZ sur la boutique.');\n    }\n\n    public function install()\n    {\n        return parent::install()\n            && $this-&gt;registerHook('displayFooterBefore')\n            && $this-&gt;registerHook('displayHeader');\n    }\n\n    \u002F**\n     * Injection dans le &lt;head&gt; (CSS, meta)\n     *\u002F\n    public function hookDisplayHeader()\n    {\n        \u002F\u002F Charger un CSS si nécessaire\n        $this-&gt;context-&gt;controller-&gt;addCSS($this-&gt;_path . 'views\u002Fcss\u002Fwidget.css');\n    }\n\n    \u002F**\n     * Injection avant le footer (widget visible)\n     *\u002F\n    public function hookDisplayFooterBefore()\n    {\n        return $this-&gt;display(__FILE__, 'views\u002Ftemplates\u002Fhook\u002Fwidget.tpl');\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Hooks les plus utiles pour les widgets\u003C\u002Fh3>\n\u003Ctr>\u003Cth>Hook\u003C\u002Fth>\u003Cth>Position\u003C\u002Fth>\u003Cth>Usage typique\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`displayHeader`\u003C\u002Fth>\u003Cth>`\u003Chead>`\u003C\u002Fth>\u003Cth>Scripts de tracking, CSS\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`displayTop`\u003C\u002Fth>\u003Cth>Haut de page\u003C\u002Fth>\u003Cth>Bandeau promotionnel\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`displayFooterBefore`\u003C\u002Fth>\u003Cth>Avant le footer\u003C\u002Fth>\u003Cth>Chat, widgets flottants\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`displayFooter`\u003C\u002Fth>\u003Cth>Dans le footer\u003C\u002Fth>\u003Cth>Liens, badges de confiance\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`displayProductAdditionalInfo`\u003C\u002Fth>\u003Cth>Fiche produit\u003C\u002Fth>\u003Cth>Avis, badges\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`displayAfterBodyOpeningTag`\u003C\u002Fth>\u003Cth>Après `\u003Cbody>`\u003C\u002Fth>\u003Cth>Tag managers\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ch3>Avantages de la méthode par module\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>**Résistant aux mises à jour** : le module survit à un changement de thème\u003C\u002Fli>\n\u003Cli>**Activable\u002Fdésactivable** : un clic dans le back-office suffit\u003C\u002Fli>\n\u003Cli>**Configurable** : ajoutez une page de configuration pour stocker la clé API du widget\u003C\u002Fli>\n\u003Cli>**Réutilisable** : transférable sur d'autres boutiques\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Méthode 3 : le module \"HTML personnalisé\" (sans code)\u003C\u002Fh2>\n\u003Cp>Si vous n'êtes pas à l'aise avec le code, PrestaShop propose nativement le module \u003Cstrong>\"Bloc de texte personnalisé\"\u003C\u002Fstrong> (ou équivalent selon la version). Il permet d'injecter du HTML\u002FJavaScript dans un hook sans toucher aux fichiers.\u003C\u002Fp>\n\u003Col>\n\u003Cli>Allez dans **Modules > Module Manager**\u003C\u002Fli>\n\u003Cli>Recherchez \"HTML\" ou \"Texte personnalisé\"\u003C\u002Fli>\n\u003Cli>Configurez le module en collant votre snippet\u003C\u002Fli>\n\u003Cli>Choisissez le hook de destination (footer, header, etc.)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Cette méthode est limitée mais suffisante pour un pixel de tracking ou un widget simple.\u003C\u002Fp>\n\u003Ch2>Bonnes pratiques pour l'intégration de widgets\u003C\u002Fh2>\n\u003Ch3>Performance : chargement asynchrone obligatoire\u003C\u002Fh3>\n\u003Cp>Un widget externe mal intégré peut ralentir votre boutique de plusieurs secondes. Assurez-vous que le script est chargé en \u003Cstrong>asynchrone\u003C\u002Fstrong> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-html\">\n&lt;!-- ✅ Bon : chargement asynchrone --&gt;\n&lt;script src=\"https:\u002F\u002Fwidget.example.com\u002Floader.js\" async defer&gt;&lt;\u002Fscript&gt;\n\n&lt;!-- ❌ Mauvais : bloque le rendu de la page --&gt;\n&lt;script src=\"https:\u002F\u002Fwidget.example.com\u002Floader.js\"&gt;&lt;\u002Fscript&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>RGPD : conditionner le chargement au consentement\u003C\u002Fh3>\n\u003Cp>Depuis le RGPD, tout widget qui dépose des cookies (analytics, chat, réseaux sociaux) doit être conditionné au consentement de l'utilisateur. Utilisez un gestionnaire de consentement comme Tarteaucitron ou Axeptio :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-javascript\">\n\u002F\u002F Exemple avec Tarteaucitron\ntarteaucitron.services.monWidget = {\n    key: 'monWidget',\n    type: 'support',\n    name: 'Mon Widget',\n    needConsent: true,\n    cookies: ['_widget_session'],\n    js: function () {\n        \u002F\u002F Code de chargement du widget\n    }\n};\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Thème enfant : protéger vos modifications\u003C\u002Fh3>\n\u003Cp>Si vous optez pour la méthode 1 (modification directe des TPL), travaillez impérativement dans un \u003Cstrong>thème enfant\u003C\u002Fstrong> pour que vos modifications survivent aux mises à jour :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-yaml\">\n# config\u002Ftheme.yml du thème enfant\nparent: classic\nname: mon-theme-enfant\ndisplay_name: Mon Thème Personnalisé\nversion: 1.0.0\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Déboguer un widget qui ne s'affiche pas\u003C\u002Fh2>\n\u003Cp>Si votre widget reste invisible après intégration, vérifiez ces points dans l'ordre :\u003C\u002Fp>\n\u003Col>\n\u003Cli>**Console du navigateur** (F12) : erreurs JavaScript ? Ressource bloquée par CORS ?\u003C\u002Fli>\n\u003Cli>**Cache PrestaShop** : videz le cache dans **Paramètres avancés > Performances**\u003C\u002Fli>\n\u003Cli>**Cache Smarty** : désactivez la compilation forcée pendant le développement\u003C\u002Fli>\n\u003Cli>**Content Security Policy** : votre serveur bloque-t-il les scripts externes via les en-têtes CSP ?\u003C\u002Fli>\n\u003Cli>**Position du hook** : vérifiez dans **Design > Positions** que votre module est bien greffé sur le bon hook\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# Vider le cache manuellement si le back-office est inaccessible\nrm -rf var\u002Fcache\u002Fprod\u002F*\nrm -rf var\u002Fcache\u002Fdev\u002F*\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Résumé : quelle méthode choisir ?\u003C\u002Fh2>\n\u003Ctr>\u003Cth>Critère\u003C\u002Fth>\u003Cth>TPL direct\u003C\u002Fth>\u003Cth>Module dédié\u003C\u002Fth>\u003Cth>HTML personnalisé\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Rapidité de mise en place\u003C\u002Fth>\u003Cth>⭐⭐⭐\u003C\u002Fth>\u003Cth>⭐\u003C\u002Fth>\u003Cth>⭐⭐⭐\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Résistance aux mises à jour\u003C\u002Fth>\u003Cth>⭐\u003C\u002Fth>\u003Cth>⭐⭐⭐\u003C\u002Fth>\u003Cth>⭐⭐\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Flexibilité\u003C\u002Fth>\u003Cth>⭐⭐\u003C\u002Fth>\u003Cth>⭐⭐⭐\u003C\u002Fth>\u003Cth>⭐\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Niveau technique requis\u003C\u002Fth>\u003Cth>Moyen\u003C\u002Fth>\u003Cth>Élevé\u003C\u002Fth>\u003Cth>Faible\u003C\u002Fth>\u003C\u002Ftr>\n\u003Cp>Pour une intégration pérenne et professionnelle, la \u003Cstrong>méthode par module\u003C\u002Fstrong> reste la référence. Pour un besoin ponctuel ou un test rapide, l'édition directe du TPL dans un thème enfant fait parfaitement l'affaire.\u003C\u002Fp>",[41,44,47,50,53],{"q":42,"a":43},"Comment intégrer un widget de chat sur toutes les pages de ma boutique PrestaShop ?","Le plus simple est d'insérer le snippet JavaScript du widget dans le fichier footer.tpl de votre thème (themes\u002Fvotre-theme\u002Ftemplates\u002F_partials\u002Ffooter.tpl sur PrestaShop 1.7\u002F8.x), juste avant la balise de fermeture. Assurez-vous d'utiliser l'attribut async pour ne pas ralentir le chargement de vos pages. Pour une solution plus pérenne, créez un module qui se greffe sur le hook displayFooterBefore.",{"q":45,"a":46},"Mes modifications dans les fichiers TPL disparaissent après une mise à jour du thème, que faire ?","C'est le comportement normal : les mises à jour écrasent les fichiers du thème. Deux solutions : soit vous travaillez dans un thème enfant (recommandé pour les modifications TPL), soit vous créez un module PrestaShop dédié qui injecte votre widget via le système de hooks. Le module est indépendant du thème et survivra à toutes les mises à jour.",{"q":48,"a":49},"Puis-je intégrer un widget sans accès FTP sur PrestaShop Cloud ?","Oui, utilisez le module natif 'Bloc de texte personnalisé' ou un module similaire disponible dans le back-office. Il permet de coller du code HTML et JavaScript dans un hook sans modifier les fichiers du thème. Vérifiez également si votre offre cloud propose un accès SFTP dans le tableau de bord.",{"q":51,"a":52},"Où placer un pixel de tracking (Google Analytics, Meta Pixel) dans PrestaShop ?","Les pixels de tracking doivent être placés dans la section \u003Chead> de votre site. Sur PrestaShop 1.7\u002F8.x, modifiez le fichier head.tpl ou utilisez le hook displayHeader dans un module. Pensez à conditionner le chargement au consentement RGPD de l'utilisateur via un gestionnaire de cookies comme Tarteaucitron.",{"q":54,"a":55},"Mon widget externe ralentit ma boutique PrestaShop, comment l'optimiser ?","Trois actions essentielles : 1) Chargez le script en mode asynchrone avec les attributs async ou defer. 2) Retardez le chargement du widget après l'événement DOMContentLoaded si possible. 3) Utilisez un gestionnaire de consentement qui ne charge le widget qu'après acceptation des cookies, ce qui améliore le temps de chargement initial pour tous les visiteurs qui n'ont pas encore donné leur consentement.","Pour intégrer un widget externe dans PrestaShop, trois méthodes existent : l'édition directe des fichiers TPL du thème (rapide mais fragile), la création d'un module dédié avec hooks (pérenne et professionnel), ou l'utilisation du module HTML personnalisé (sans code). La méthode par module est recommandée pour sa résistance aux mises à jour et sa flexibilité.",6,"2026-03-21T15:39:25.000Z",[],"Utilisation de PrestaShop : configuration et difficultés",{"columns":62},[63,79,109,130],{"title":64,"links":65},"Plateforme",[66,70,73,76],{"label":67,"href":68,"external":69},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":71,"href":72,"external":69},"Devenir Ambassadeur","\u002Fambassadeur",{"label":74,"href":75,"external":69},"Modules PrestaShop","\u002Fmodules",{"label":77,"href":78,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":80,"links":81},"Le Synedre",[82,85,88,91,94,97,100,103,106],{"label":83,"href":84,"external":69},"L'histoire","\u002Fsynedre",{"label":86,"href":87,"external":69},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":89,"href":90,"external":69},"L'équipe","\u002Fequipe",{"label":92,"href":93,"external":69},"Le réacteur en direct","\u002Freacteur",{"label":95,"href":96,"external":69},"Le Drill (entraînement)","\u002Fdrill",{"label":98,"href":99,"external":69},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":101,"href":102,"external":69},"Les agents IA","\u002Fagents-ia",{"label":104,"href":105,"external":69},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":107,"href":108,"external":69},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":110,"links":111},"Ressources",[112,115,118,121,124,127],{"label":113,"href":114,"external":69},"Blog","\u002Fblog",{"label":116,"href":117,"external":69},"Academy","\u002Facademy",{"label":119,"href":120,"external":69},"Dictionnaire","\u002Fdictionnaire",{"label":122,"href":123,"external":69},"Expertise PrestaShop","\u002Fexpertise",{"label":125,"href":126,"external":69},"Flywheel","\u002Fflywheel",{"label":128,"href":129,"external":69},"Manifeste","\u002Fmanifeste",{"title":131,"links":132},"À propos",[133,136,139],{"label":134,"href":135,"external":69},"Alexandre Carette","\u002Fa-propos",{"label":137,"href":138,"external":69},"Dossier de presse","\u002Fpresse",{"label":140,"href":141,"external":69},"Contact","\u002Fcontact",{"items":143},[144,153,159,165,173,181,187,192],{"id":145,"type":146,"label":147,"href":123,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":150,"children":151,"psChildren":152},41,"link",{"fr":148},"Expertise",null,0,[],[],{"id":154,"type":146,"label":155,"href":114,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":156,"children":157,"psChildren":158},42,{"fr":113},1,[],[],{"id":160,"type":146,"label":161,"href":75,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":162,"children":163,"psChildren":164},43,{"fr":74},2,[],[],{"id":166,"type":146,"label":167,"href":169,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":170,"children":171,"psChildren":172},44,{"fr":168},"Outils IA","\u002Foutils-ia",3,[],[],{"id":174,"type":146,"label":175,"href":68,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":177,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":178,"children":179,"psChildren":180},45,{"fr":176},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":182,"type":146,"label":183,"href":117,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":184,"children":185,"psChildren":186},46,{"fr":116},5,[],[],{"id":188,"type":146,"label":189,"href":135,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":57,"children":190,"psChildren":191},47,{"fr":131},[],[],{"id":193,"type":146,"label":194,"href":141,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":69,"position":195,"children":196,"psChildren":197},48,{"fr":140},7,[],[],{"header":199},{"logo":200,"topBar":205,"contactEmail":208,"features":209,"navBar":149},{"src":201,"alt":202,"text":134,"href":203,"class":204},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":149,"showLanguages":69,"align":206,"languages":207},"left",[],"contact@alexandrecarette.fr",{"showSearch":69,"showWishlist":69,"showLogin":20,"showContact":69,"showCart":69,"stickyHeader":20,"headerLayout":210},"inline",{"footer":212},{"theme":213,"description":149,"hours":149,"logo":214,"contact":215,"social":216,"bottomBar":226},"dark",{"src":201,"href":203,"alt":134},{"email":149,"phone":149,"address":149,"cta":149},[217,220,223],{"platform":218,"href":219,"label":218},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":221,"href":222,"label":221},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":224,"href":225,"label":224},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":149},{"academy":228,"blog":229,"expertise":240},[],[230,234,237],{"title":231,"url":232,"score":156,"type":233},"PrestaShop headless avec Nuxt 3 : pourquoi séparer back et front","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-separation-front-back","blog",{"title":235,"url":236,"score":156,"type":233},"PrestaShop headless : Nuxt 3, pas Next.js — le choix souverain","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-nextjs-souverainete",{"title":238,"url":239,"score":156,"type":233},"Sylius rachète PrestaShop : ce que ça change pour vous","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fsylius-rachat-prestashop-headless-souverainete",[]]