[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":22,"$f30UmGP6Lb8q6pSDCdkzB78DZULfHh8RMzSDuoilzkxw":103,"megamenu":142,"header-db":198,"footer-db":211,"$fiStNm-olp1WtEfXp1W_qUTm69-DQlGP7QxUt8jSEMwc":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",{"columns":23},[24,40,70,91],{"title":25,"links":26},"Plateforme",[27,31,34,37],{"label":28,"href":29,"external":30},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":32,"href":33,"external":30},"Devenir Ambassadeur","\u002Fambassadeur",{"label":35,"href":36,"external":30},"Modules PrestaShop","\u002Fmodules",{"label":38,"href":39,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":41,"links":42},"Le Synedre",[43,46,49,52,55,58,61,64,67],{"label":44,"href":45,"external":30},"L'histoire","\u002Fsynedre",{"label":47,"href":48,"external":30},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":50,"href":51,"external":30},"L'équipe","\u002Fequipe",{"label":53,"href":54,"external":30},"Le réacteur en direct","\u002Freacteur",{"label":56,"href":57,"external":30},"Le Drill (entraînement)","\u002Fdrill",{"label":59,"href":60,"external":30},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":62,"href":63,"external":30},"Les agents IA","\u002Fagents-ia",{"label":65,"href":66,"external":30},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":68,"href":69,"external":30},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":71,"links":72},"Ressources",[73,76,79,82,85,88],{"label":74,"href":75,"external":30},"Blog","\u002Fblog",{"label":77,"href":78,"external":30},"Academy","\u002Facademy",{"label":80,"href":81,"external":30},"Dictionnaire","\u002Fdictionnaire",{"label":83,"href":84,"external":30},"Expertise PrestaShop","\u002Fexpertise",{"label":86,"href":87,"external":30},"Flywheel","\u002Fflywheel",{"label":89,"href":90,"external":30},"Manifeste","\u002Fmanifeste",{"title":92,"links":93},"À propos",[94,97,100],{"label":95,"href":96,"external":30},"Alexandre Carette","\u002Fa-propos",{"label":98,"href":99,"external":30},"Dossier de presse","\u002Fpresse",{"label":101,"href":102,"external":30},"Contact","\u002Fcontact",{"title":104,"slug":105,"metaDescription":106,"category":107,"tags":108,"difficulty":115,"psVersions":116,"content":120,"faq":121,"tldr":137,"readingTime":138,"generatedAt":139,"publishDate":139,"relatedArticles":140,"sourceCategory":141},"Créer un thème PrestaShop : overrides, assets et bonnes pratiques","creer-theme-prestashop-overrides-assets-bonnes-pratiques","Guide complet pour créer un thème PrestaShop personnalisé : système d'overrides, gestion des assets CSS\u002FJS, CCC et pièges courants à éviter.","design",[109,110,111,112,113,114],"thème PrestaShop","override","CCC","assets CSS JS","FrontController","personnalisation","intermediaire",[117,118,119],"1.6","1.7","8.x","\u003Ch2>Introduction\u003C\u002Fh2>\n\u003Cp>Créer un thème PrestaShop sur-mesure est un passage obligé pour tout développeur e-commerce sérieux. Que vous partiez d'un thème existant ou d'une base vierge, la maîtrise du système d'overrides et de la gestion des assets (CSS\u002FJS) est fondamentale.\u003C\u002Fp>\n\u003Cp>Dans cet article, je vous guide à travers les mécanismes internes de PrestaShop pour créer un thème propre, performant, et maintenable — en évitant les pièges classiques qui font perdre des heures.\u003C\u002Fp>\n\u003Ch2>Comprendre le chargement des assets dans PrestaShop\u003C\u002Fh2>\n\u003Ch3>Le rôle central de `FrontController::setMedia()`\u003C\u002Fh3>\n\u003Cp>Tout commence dans la méthode \u003Ccode>setMedia()\u003C\u002Fcode> du contrôleur front. C'est elle qui détermine quels fichiers CSS et JavaScript sont chargés sur chaque page de votre boutique.\u003C\u002Fp>\n\u003Cp>Voici le mécanisme de base (PrestaShop 1.6) :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\npublic function setMedia()\n{\n    if ($this-&gt;useMobileTheme()) {\n        $this-&gt;setMobileMedia();\n        return true;\n    }\n\n    $this-&gt;addCSS(_THEME_CSS_DIR_ . 'global.css', 'all');\n    $this-&gt;addjquery();\n    $this-&gt;addjqueryPlugin('easing');\n    $this-&gt;addJS(_PS_JS_DIR_ . 'tools.js');\n    $this-&gt;addJS(_THEME_JS_DIR_ . 'global.js');\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Point clé :\u003C\u002Fstrong> l'ordre d'appel des méthodes \u003Ccode>addCSS()\u003C\u002Fcode> et \u003Ccode>addJS()\u003C\u002Fcode> détermine l'ordre de chargement des fichiers dans le HTML — \u003Cstrong>sauf si le CCC est activé\u003C\u002Fstrong>, auquel cas les fichiers sont concaténés et l'ordre peut varier.\u003C\u002Fp>\n\u003Ch3>Le système d'autoload des assets\u003C\u002Fh3>\n\u003Cp>PrestaShop intègre un mécanisme d'autoload très pratique : tout fichier \u003Ccode>.js\u003C\u002Fcode> placé dans \u003Ccode>themes\u002Fvotre-theme\u002Fjs\u002Fautoload\u002F\u003C\u002Fcode> et tout fichier \u003Ccode>.css\u003C\u002Fcode> dans \u003Ccode>themes\u002Fvotre-theme\u002Fcss\u002Fautoload\u002F\u003C\u002Fcode> sont automatiquement inclus sur toutes les pages.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F Chargement automatique des JS\nif (@filemtime($this-&gt;getThemeDir() . 'js\u002Fautoload\u002F')) {\n    foreach (scandir($this-&gt;getThemeDir() . 'js\u002Fautoload\u002F', 0) as $file) {\n        if (preg_match('\u002F^[^.].*\\.js$\u002F', $file)) {\n            $this-&gt;addJS($this-&gt;getThemeDir() . 'js\u002Fautoload\u002F' . $file);\n        }\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Astuce :\u003C\u002Fstrong> les fichiers sont chargés par ordre alphabétique (\u003Ccode>scandir\u003C\u002Fcode> avec le flag \u003Ccode>0\u003C\u002Fcode>). Si vous avez besoin d'un ordre précis, préfixez vos fichiers : \u003Ccode>01-utils.js\u003C\u002Fcode>, \u003Ccode>02-main.js\u003C\u002Fcode>, etc.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\u003Cstrong>PrestaShop 1.7 \u002F 8.x :\u003C\u002Fstrong> le système d'assets a été modernisé. Les thèmes utilisent désormais Webpack via \u003Ccode>theme.yml\u003C\u002Fcode> et les assets sont déclarés dans \u003Ccode>assets\u002Fcss\u002F\u003C\u002Fcode> et \u003Ccode>assets\u002Fjs\u002F\u003C\u002Fcode>. La méthode \u003Ccode>setMedia()\u003C\u002Fcode> existe toujours dans les contrôleurs, mais les bonnes pratiques privilégient la déclaration dans le fichier de configuration du thème.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>Le système d'overrides : personnaliser sans toucher au core\u003C\u002Fh2>\n\u003Cp>L'override est le mécanisme qui permet de modifier le comportement natif de PrestaShop sans éditer les fichiers du cœur. C'est indispensable pour un thème maintenable et compatible avec les mises à jour.\u003C\u002Fp>\n\u003Ch3>Hiérarchie des fichiers\u003C\u002Fh3>\n\u003Cp>La règle d'or : \u003Cstrong>respecter exactement la même arborescence que le dossier \u003Ccode>classes\u002F\u003C\u002Fcode> du core\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>Par exemple, pour overrider la classe \u003Ccode>Media\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\n# Fichier original\nclasses\u002FMedia.php\n\n# Votre override\noverride\u002Fclasses\u002FMedia.php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Syntaxe d'un override\u003C\u002Fh3>\n\u003Cp>Votre classe doit étendre la classe \u003Ccode>Core\u003C\u002Fcode> correspondante :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n&lt;?php\n\n\u002F\u002F override\u002Fclasses\u002FMedia.php\nclass Media extends MediaCore\n{\n    public static function cccJS($js_files)\n    {\n        \u002F\u002F Votre logique personnalisée ici\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Les 5 pièges classiques des overrides\u003C\u002Fh3>\n\u003Cp>#### 1. Le commentaire mal placé avant la déclaration de classe\u003C\u002Fp>\n\u003Cp>Un piège redoutable et difficile à diagnostiquer. \u003Cstrong>Le commentaire doit être placé avant la ligne de déclaration, jamais sur la même ligne de façon ambiguë :\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F ❌ MAUVAIS — peut provoquer une erreur de parsing\nclass Media extends MediaCore \u002F\u002F Ma classe override\n{\n}\n\n\u002F\u002F ✅ CORRECT\n\u002F\u002F Ma classe override\nclass Media extends MediaCore\n{\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>En PHP, un commentaire \u003Ccode>\u002F\u002F\u003C\u002Fcode> sur la même ligne qu'une déclaration de classe est syntaxiquement valide, mais certaines versions de PrestaShop parsent ce fichier de manière non standard pour le système de cache. Gardez vos déclarations de classe propres.\u003C\u002Fp>\n\u003Cp>#### 2. Le cache \u003Ccode>class_index.php\u003C\u002Fcode> non vidé\u003C\u002Fp>\n\u003Cp>C'est la cause n°1 des overrides qui \"ne fonctionnent pas\". PrestaShop maintient un index de toutes les classes dans \u003Ccode>app\u002Fcache\u002F\u003C\u002Fcode> (ou \u003Ccode>cache\u002F\u003C\u002Fcode> selon les versions). Cet index n'est \u003Cstrong>pas régénéré automatiquement\u003C\u002Fstrong> quand vous ajoutez un override.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution :\u003C\u002Fstrong> supprimez le fichier \u003Ccode>class_index.php\u003C\u002Fcode> dans le dossier cache :\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 -f var\u002Fcache\u002Fdev\u002Fclass_index.php\nrm -f var\u002Fcache\u002Fprod\u002Fclass_index.php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>PrestaShop le régénèrera automatiquement au prochain chargement de page.\u003C\u002Fp>\n\u003Cp>#### 3. La casse de \u003Ccode>class\u003C\u002Fcode> vs \u003Ccode>Class\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>PHP est insensible à la casse pour les mots-clés, mais PrestaShop l'est dans son système de résolution d'overrides. Utilisez toujours \u003Ccode>class\u003C\u002Fcode> en minuscules :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F ❌ Peut poser problème\nClass Media extends MediaCore {}\n\n\u002F\u002F ✅ Toujours en minuscules\nclass Media extends MediaCore {}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>#### 4. Les overrides désactivés en back-office\u003C\u002Fp>\n\u003Cp>PrestaShop permet de désactiver globalement les overrides dans les paramètres avancés. Si votre override ne fonctionne pas malgré tout :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>**PrestaShop 1.6 :** Paramètres avancés > Performances > Désactiver les surcharges\u003C\u002Fli>\n\u003Cli>**PrestaShop 1.7 \u002F 8.x :** Paramètres avancés > Performances > Désactiver toutes les surcharges\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Vérifiez que cette option est bien sur \u003Cstrong>Non\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>#### 5. Les permissions fichiers (chmod)\u003C\u002Fp>\n\u003Cp>Sur un serveur Linux, des permissions incorrectes empêchent PHP de lire vos fichiers d'override :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# Permissions recommandées\nfind override\u002F -type f -exec chmod 644 {} \\;\nfind override\u002F -type d -exec chmod 755 {} \\;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Le CCC : Combine, Compress, Cache\u003C\u002Fh2>\n\u003Cp>Le CCC est le système natif de PrestaShop pour optimiser le chargement des assets. Il concatène et minifie les fichiers CSS et JS en un seul fichier mis en cache.\u003C\u002Fp>\n\u003Ch3>Fonctionnement\u003C\u002Fh3>\n\u003Cp>Quand le CCC est activé, la classe \u003Ccode>Media\u003C\u002Fcode> gère la concaténation. Les fichiers sont combinés, un hash est généré pour le nom du fichier cache, et le résultat est stocké dans \u003Ccode>themes\u002Fvotre-theme\u002Fcache\u002F\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>Impact sur l'ordre de chargement\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Sans CCC :\u003C\u002Fstrong> les fichiers sont inclus dans l'ordre exact où vous les déclarez via \u003Ccode>addCSS()\u003C\u002Fcode> \u002F \u003Ccode>addJS()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Avec CCC :\u003C\u002Fstrong> les fichiers sont regroupés et l'ordre peut être modifié. Si votre JavaScript dépend d'un ordre d'exécution précis, le CCC peut casser votre thème.\u003C\u002Fp>\n\u003Ch3>Recommandations\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>**En développement :** désactivez le CCC pour débugger facilement\u003C\u002Fli>\n\u003Cli>**En production :** préférez des solutions modernes (Webpack, Vite) au CCC natif\u003C\u002Fli>\n\u003Cli>**PrestaShop 8.x :** le CCC est toujours disponible mais les thèmes modernes gèrent la compilation côté build plutôt qu'à la volée\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Workflow de création d'un thème (résumé)\u003C\u002Fh2>\n\u003Ch3>PrestaShop 1.6\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Dupliquer le thème `default-bootstrap`\u003C\u002Fli>\n\u003Cli>Modifier `config.xml` avec vos informations\u003C\u002Fli>\n\u003Cli>Personnaliser les templates `.tpl` (Smarty)\u003C\u002Fli>\n\u003Cli>Ajouter vos CSS\u002FJS dans les dossiers `css\u002F` et `js\u002F`\u003C\u002Fli>\n\u003Cli>Utiliser les overrides pour la logique métier\u003C\u002Fli>\n\u003Cli>Vider `class_index.php` et tous les caches\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>PrestaShop 1.7 \u002F 8.x\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Partir du thème `classic` ou utiliser le starter theme\u003C\u002Fli>\n\u003Cli>Configurer `theme.yml` (assets, layout, hooks)\u003C\u002Fli>\n\u003Cli>Personnaliser les templates `.tpl` (Smarty, toujours)\u003C\u002Fli>\n\u003Cli>Gérer les assets via Webpack (`_dev\u002F` → compilation → `assets\u002F`)\u003C\u002Fli>\n\u003Cli>Déclarer les modules nécessaires dans `theme.yml`\u003C\u002Fli>\n\u003Cli>Tester avec `php bin\u002Fconsole cache:clear`\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# Commande de vidage de cache PrestaShop 8.x\nphp bin\u002Fconsole cache:clear --env=prod\nphp bin\u002Fconsole cache:clear --env=dev\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Checklist avant mise en production\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>[ ] Tous les overrides fonctionnent après suppression de `class_index.php`\u003C\u002Fli>\n\u003Cli>[ ] Les permissions fichiers sont correctes (644\u002F755)\u003C\u002Fli>\n\u003Cli>[ ] Le CCC est testé si activé\u003C\u002Fli>\n\u003Cli>[ ] Les assets se chargent dans le bon ordre\u003C\u002Fli>\n\u003Cli>[ ] Le thème est responsive (tester sur mobile)\u003C\u002Fli>\n\u003Cli>[ ] Les performances sont validées (PageSpeed > 80)\u003C\u002Fli>\n\u003Cli>[ ] Un thème enfant ou override est utilisé — jamais de modification du core\u003C\u002Fli>\n\u003C\u002Ful>",[122,125,128,131,134],{"q":123,"a":124},"Pourquoi mon override PrestaShop ne fonctionne pas ?","Dans 90 % des cas, c'est le fichier `class_index.php` dans le dossier cache qui n'a pas été supprimé. PrestaShop indexe toutes les classes au premier chargement et ne détecte pas automatiquement les nouveaux overrides. Supprimez ce fichier, videz le cache du navigateur et du back-office, et vérifiez que les overrides ne sont pas désactivés dans Paramètres avancés > Performances.",{"q":126,"a":127},"Comment ajouter un fichier JavaScript ou CSS personnalisé à mon thème PrestaShop ?","Vous avez trois options : 1) Placer le fichier dans le dossier `js\u002Fautoload\u002F` ou `css\u002Fautoload\u002F` de votre thème pour un chargement automatique sur toutes les pages. 2) Utiliser `$this->addJS()` ou `$this->addCSS()` dans la méthode `setMedia()` d'un contrôleur pour un chargement ciblé. 3) Sur PrestaShop 1.7\u002F8.x, déclarer les assets dans `theme.yml` et les compiler via Webpack. La troisième option est recommandée pour les projets modernes.",{"q":129,"a":130},"Faut-il utiliser le CCC (Combine, Compress, Cache) de PrestaShop en production ?","Le CCC natif peut être utile pour des thèmes simples, mais il présente des limites : l'ordre de chargement des scripts peut être modifié, ce qui casse certaines dépendances JavaScript. Sur PrestaShop 8.x, il est préférable d'utiliser Webpack ou Vite pour la compilation des assets côté build, avec une minification et concaténation maîtrisée. Réservez le CCC aux boutiques PrestaShop 1.6 sans pipeline de build moderne.",{"q":132,"a":133},"Quelle est la différence entre modifier le core et utiliser un override dans PrestaShop ?","Modifier directement les fichiers du dossier `classes\u002F` ou `controllers\u002F` du core est fortement déconseillé : vos modifications seront écrasées à chaque mise à jour de PrestaShop. L'override permet de surcharger une classe ou un contrôleur en plaçant un fichier dans le dossier `override\u002F` avec la même arborescence. Votre classe étend la classe `Core` (ex: `MediaCore`) et seules les méthodes que vous redéfinissez sont modifiées. C'est la méthode recommandée pour la maintenabilité.",{"q":135,"a":136},"Comment organiser les assets d'un thème PrestaShop 8.x avec Webpack ?","Le thème `classic` de PrestaShop 8.x inclut un dossier `_dev\u002F` contenant les sources JavaScript et SCSS, ainsi qu'un fichier `webpack.config.js`. Installez les dépendances avec `npm install`, développez dans `_dev\u002Fcss\u002F` et `_dev\u002Fjs\u002F`, puis compilez avec `npm run build`. Les fichiers compilés sont générés dans `assets\u002Fcss\u002F` et `assets\u002Fjs\u002F`, et déclarés automatiquement via `theme.yml`. Cette approche offre le tree-shaking, la minification, et le versioning des assets.","Créer un thème PrestaShop propre repose sur la maîtrise du système d'overrides (hiérarchie de fichiers, suppression du class_index.php, permissions), la gestion correcte des assets CSS\u002FJS via setMedia() ou Webpack, et la compréhension du CCC pour éviter les pièges de concaténation en production.",6,"2026-03-21T13:06:24.000Z",[],"PrestaShop pour les développeurs",{"items":143},[144,153,159,165,173,181,187,192],{"id":145,"type":146,"label":147,"href":84,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":30,"position":150,"children":151,"psChildren":152},41,"link",{"fr":148},"Expertise",null,0,[],[],{"id":154,"type":146,"label":155,"href":75,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":30,"position":156,"children":157,"psChildren":158},42,{"fr":74},1,[],[],{"id":160,"type":146,"label":161,"href":36,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":30,"position":162,"children":163,"psChildren":164},43,{"fr":35},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":30,"position":170,"children":171,"psChildren":172},44,{"fr":168},"Outils IA","\u002Foutils-ia",3,[],[],{"id":174,"type":146,"label":175,"href":29,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":177,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":30,"position":178,"children":179,"psChildren":180},45,{"fr":176},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":182,"type":146,"label":183,"href":78,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":30,"position":184,"children":185,"psChildren":186},46,{"fr":77},5,[],[],{"id":188,"type":146,"label":189,"href":96,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":30,"position":138,"children":190,"psChildren":191},47,{"fr":92},[],[],{"id":193,"type":146,"label":194,"href":102,"icon":149,"description":149,"badge":149,"groupTitle":149,"style":149,"gridColumns":149,"cssClass":149,"psCategoryId":149,"showPsChildren":30,"position":195,"children":196,"psChildren":197},48,{"fr":101},7,[],[],{"header":199},{"logo":200,"topBar":205,"contactEmail":208,"features":209,"navBar":149},{"src":201,"alt":202,"text":95,"href":203,"class":204},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":149,"showLanguages":30,"align":206,"languages":207},"left",[],"contact@alexandrecarette.fr",{"showSearch":30,"showWishlist":30,"showLogin":20,"showContact":30,"showCart":30,"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":95},{"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",[]]