[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fAL7YXlkZz5oSzSB3ozs2KajulXpI0xJ7LClM4DpjzCU":22,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":59,"megamenu":140,"header-db":196,"footer-db":209,"$f4QVQ8zT-Z6k8ZV7YbRU-U70kP8zybJVdTNlUBB3td0s":225},{"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":33,"psVersions":34,"content":37,"faq":38,"tldr":54,"readingTime":55,"generatedAt":56,"publishDate":56,"relatedArticles":57,"sourceCategory":58},"Fatal error Class FrontController not found dans un module PrestaShop","fatal-error-class-frontcontroller-not-found-module-prestashop","Résolvez l'erreur Fatal error Class FrontController not found dans votre module PrestaShop. Conventions de nommage, structure des contrôleurs front et bonnes pratiques.","developpement",[28,29,30,31,32],"module prestashop","frontcontroller","erreur fatale","contrôleur front","conventions nommage","intermediaire",[35,36],"1.7","8.x","\u003Ch2>Comprendre l'erreur « Class FrontController not found »\u003C\u002Fh2>\n\u003Cp>Lorsque vous développez un module PrestaShop et que vous tentez d'accéder à un contrôleur front personnalisé, vous pouvez rencontrer cette erreur fatale :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nFatal error: Class 'FrontController' not found in \u002Fmodules\u002Fmonmodule\u002Fcontrollers\u002Ffront\u002Fmapage.php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Cette erreur est déroutante car \u003Ccode>FrontController\u003C\u002Fcode> est bien une classe native de PrestaShop. Le problème ne vient pas de l'absence de la classe dans le cœur du CMS, mais d'une \u003Cstrong>convention de nommage non respectée\u003C\u002Fstrong> dans votre module. PrestaShop utilise un système d'autoloading très strict qui repose sur la correspondance exacte entre le nom du module, le nom du fichier contrôleur et le nom de la classe PHP.\u003C\u002Fp>\n\u003Ch2>La convention de nommage obligatoire\u003C\u002Fh2>\n\u003Cp>PrestaShop impose une convention précise pour les contrôleurs front de modules. Le non-respect de cette convention empêche l'autoloader de résoudre correctement la chaîne d'héritage, ce qui provoque l'erreur.\u003C\u002Fp>\n\u003Ch3>La règle fondamentale\u003C\u002Fh3>\n\u003Cp>Le nom de la classe doit suivre \u003Cstrong>exactement\u003C\u002Fstrong> ce format :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\n{nomdumodule}{nomducontroleur}ModuleFrontController\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Où :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>`{nomdumodule}` correspond au nom technique du module (le nom du dossier dans `\u002Fmodules\u002F`), **en minuscules et sans underscores**\u003C\u002Fli>\n\u003Cli>`{nomducontroleur}` correspond au nom du fichier PHP du contrôleur (sans l'extension), **avec la première lettre en majuscule**\u003C\u002Fli>\n\u003Cli>`ModuleFrontController` est le suffixe imposé par PrestaShop\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Exemple concret\u003C\u002Fh3>\n\u003Cp>Pour un module nommé \u003Ccode>monmodule\u003C\u002Fcode> avec un contrôleur \u003Ccode>affichage\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Structure de fichiers :\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nmodules\u002F\n└── monmodule\u002F\n    ├── monmodule.php\n    └── controllers\u002F\n        └── front\u002F\n            └── affichage.php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Classe du contrôleur (\u003Ccode>affichage.php\u003C\u002Fcode>) :\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n&lt;?php\n\nclass monmoduleAffichageModuleFrontController extends ModuleFrontController\n{\n    public function initContent()\n    {\n        parent::initContent();\n        \u002F\u002F Votre logique ici\n        $this-&gt;setTemplate('module:monmodule\u002Fviews\u002Ftemplates\u002Ffront\u002Faffichage.tpl');\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Le piège classique : les underscores dans le nom du module\u003C\u002Fh2>\n\u003Cp>C'est la cause la plus fréquente de cette erreur. Si votre module s'appelle \u003Ccode>mon_module\u003C\u002Fcode> (avec un underscore), PrestaShop ne parvient pas à résoudre correctement le nom de la classe du contrôleur.\u003C\u002Fp>\n\u003Ch3>Pourquoi les underscores posent problème\u003C\u002Fh3>\n\u003Cp>L'autoloader de PrestaShop (classe \u003Ccode>Dispatcher\u003C\u002Fcode>) construit le nom de la classe attendue en concaténant directement le nom du module et le nom du contrôleur. Lorsqu'un underscore est présent, le mécanisme de résolution interprète potentiellement les segments comme des espaces de noms ou des séparateurs de classe, ce qui casse la chaîne d'héritage.\u003C\u002Fp>\n\u003Ch3>Solution : renommer le module sans underscores\u003C\u002Fh3>\n\u003Cp>Si vous êtes en phase de développement, la solution la plus propre est de renommer votre module en supprimant les underscores :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\n# Avant (problématique)\nmodules\u002Fchronos_accueil\u002F\n  → class chronos_accueilAccueilModuleFrontController  ❌\n\n# Après (correct)\nmodules\u002Fchronosaccueil\u002F\n  → class chronosaccueilAccueilModuleFrontController  ✅\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Attention :\u003C\u002Fstrong> renommer un module déjà installé nécessite plusieurs étapes :\u003C\u002Fp>\n\u003Col>\n\u003Cli>Désinstaller le module via le back-office\u003C\u002Fli>\n\u003Cli>Renommer le dossier du module\u003C\u002Fli>\n\u003Cli>Renommer le fichier PHP principal\u003C\u002Fli>\n\u003Cli>Mettre à jour le nom de la classe principale\u003C\u002Fli>\n\u003Cli>Mettre à jour tous les contrôleurs\u003C\u002Fli>\n\u003Cli>Réinstaller le module\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Checklist de diagnostic complet\u003C\u002Fh2>\n\u003Cp>Si l'erreur persiste malgré un nommage correct, vérifiez ces points dans l'ordre :\u003C\u002Fp>\n\u003Ch3>1. Vérifier la correspondance nom de dossier \u002F nom de classe\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F Le dossier s'appelle \"monmodule\"\n\u002F\u002F Le fichier contrôleur s'appelle \"details.php\"\n\u002F\u002F La classe DOIT s'appeler :\nclass monmoduleDetailsModuleFrontController extends ModuleFrontController\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>2. Vérifier l'héritage\u003C\u002Fh3>\n\u003Cp>Votre classe doit étendre \u003Ccode>ModuleFrontController\u003C\u002Fcode>, pas \u003Ccode>FrontController\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F ❌ Incorrect\nclass monmoduleDetailsModuleFrontController extends FrontController\n\n\u002F\u002F ✅ Correct\nclass monmoduleDetailsModuleFrontController extends ModuleFrontController\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>3. Vider le cache PrestaShop\u003C\u002Fh3>\n\u003Cp>Après toute modification de contrôleur, videz systématiquement le cache :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# Suppression manuelle du cache\nrm -rf var\u002Fcache\u002Fprod\u002F*\nrm -rf var\u002Fcache\u002Fdev\u002F*\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Ou via le back-office : \u003Cstrong>Paramètres avancés → Performances → Vider le cache\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Ch3>4. Vérifier les droits de fichiers\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">\nchmod 644 modules\u002Fmonmodule\u002Fcontrollers\u002Ffront\u002Fdetails.php\nchown www-data:www-data modules\u002Fmonmodule\u002Fcontrollers\u002Ffront\u002Fdetails.php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>5. Vérifier la route du contrôleur\u003C\u002Fh3>\n\u003Cp>L'URL d'accès à un contrôleur front de module suit ce format :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nhttps:\u002F\u002Fvotresite.com\u002Findex.php?fc=module&module=monmodule&controller=details\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Avec les URL simplifiées activées :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nhttps:\u002F\u002Fvotresite.com\u002Fmodule\u002Fmonmodule\u002Fdetails\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Spécificités PrestaShop 8.x\u003C\u002Fh2>\n\u003Cp>Sur PrestaShop 8.x, le mécanisme reste identique pour les contrôleurs front de modules. Cependant, quelques points méritent attention :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Le **namespace Symfony** n'est pas utilisé pour les contrôleurs front de modules (contrairement aux contrôleurs admin qui migrent progressivement vers Symfony)\u003C\u002Fli>\n\u003Cli>Le cache se trouve dans `var\u002Fcache\u002F` (et non plus `cache\u002F` comme sur les versions 1.6)\u003C\u002Fli>\n\u003Cli>En mode debug (`_PS_MODE_DEV_ = true` dans `config\u002Fdefines.inc.php`), l'erreur affichera une stack trace complète qui vous aidera à identifier le point exact de rupture\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Activer le mode debug pour un diagnostic précis\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F config\u002Fdefines.inc.php\ndefine('_PS_MODE_DEV_', true);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Cela vous donnera la trace complète de l'autoloading et vous permettra de voir exactement quel nom de classe PrestaShop cherche à instancier.\u003C\u002Fp>\n\u003Ch2>Modèle de contrôleur front complet et fonctionnel\u003C\u002Fh2>\n\u003Cp>Voici un template de contrôleur front prêt à l'emploi pour PrestaShop 1.7 et 8.x :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n&lt;?php\n\u002F**\n * Contrôleur front du module monmodule\n * Fichier : modules\u002Fmonmodule\u002Fcontrollers\u002Ffront\u002Fdetails.php\n *\u002F\n\nclass monmoduleDetailsModuleFrontController extends ModuleFrontController\n{\n    \u002F** @var bool Active le rendu dans la colonne de gauche *\u002F\n    public $display_column_left = false;\n\n    \u002F** @var bool Active le rendu dans la colonne de droite *\u002F\n    public $display_column_right = false;\n\n    \u002F**\n     * Initialisation du contenu de la page\n     *\u002F\n    public function initContent()\n    {\n        parent::initContent();\n\n        \u002F\u002F Assignation de variables Smarty\n        $this-&gt;context-&gt;smarty-&gt;assign([\n            'mon_variable' =&gt; 'valeur',\n            'module_dir' =&gt; _MODULE_DIR_ . $this-&gt;module-&gt;name . '\u002F',\n        ]);\n\n        \u002F\u002F Définition du template\n        $this-&gt;setTemplate('module:monmodule\u002Fviews\u002Ftemplates\u002Ffront\u002Fdetails.tpl');\n    }\n\n    \u002F**\n     * Gestion des métadonnées SEO\n     *\u002F\n    public function getTemplateVarPage()\n    {\n        $page = parent::getTemplateVarPage();\n        $page['meta']['title'] = $this-&gt;trans('Mon titre de page', [], 'Modules.Monmodule.Front');\n        $page['meta']['description'] = $this-&gt;trans('Ma description', [], 'Modules.Monmodule.Front');\n        return $page;\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Résumé des conventions de nommage\u003C\u002Fh2>\n\u003Ctr>\u003Cth>Élément\u003C\u002Fth>\u003Cth>Convention\u003C\u002Fth>\u003Cth>Exemple\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Dossier module\u003C\u002Fth>\u003Cth>minuscules, sans underscores\u003C\u002Fth>\u003Cth>`monmodule`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Fichier contrôleur\u003C\u002Fth>\u003Cth>minuscules\u003C\u002Fth>\u003Cth>`details.php`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Classe contrôleur\u003C\u002Fth>\u003Cth>`{module}{Controller}ModuleFrontController`\u003C\u002Fth>\u003Cth>`monmoduleDetailsModuleFrontController`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Classe parente\u003C\u002Fth>\u003Cth>`ModuleFrontController`\u003C\u002Fth>\u003Cth>—\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>Chemin du template\u003C\u002Fth>\u003Cth>`module:{module}\u002Fviews\u002Ftemplates\u002Ffront\u002F{fichier}.tpl`\u003C\u002Fth>\u003Cth>`module:monmodule\u002Fviews\u002Ftemplates\u002Ffront\u002Fdetails.tpl`\u003C\u002Fth>\u003C\u002Ftr>",[39,42,45,48,51],{"q":40,"a":41},"Pourquoi mon contrôleur front PrestaShop affiche « Class FrontController not found » ?","Cette erreur survient lorsque la convention de nommage du contrôleur front de votre module n'est pas respectée. PrestaShop utilise un autoloader strict qui attend un format précis : {nomdumodule}{Nomducontroleur}ModuleFrontController. Vérifiez que le nom du module ne contient pas d'underscores, que le nom de la classe correspond exactement au nom du dossier du module concaténé avec le nom du fichier contrôleur, et que vous étendez bien ModuleFrontController (et non FrontController).",{"q":43,"a":44},"Peut-on utiliser des underscores dans le nom d'un module PrestaShop ?","Techniquement, PrestaShop accepte les underscores dans les noms de modules pour les fonctionnalités de base. En revanche, les underscores cassent le mécanisme de résolution automatique des contrôleurs front et admin. La bonne pratique est de ne jamais utiliser d'underscores dans le nom technique d'un module. Utilisez plutôt le camelCase ou des mots collés en minuscules (par exemple monmodule plutôt que mon_module).",{"q":46,"a":47},"Comment accéder à l'URL d'un contrôleur front de module PrestaShop ?","L'URL standard suit le format : https:\u002F\u002Fvotresite.com\u002Findex.php?fc=module&module=nomdumodule&controller=nomducontroleur. Avec les URL simplifiées activées, le format devient : https:\u002F\u002Fvotresite.com\u002Fmodule\u002Fnomdumodule\u002Fnomducontroleur. Vous pouvez aussi générer l'URL proprement en PHP avec : $this->context->link->getModuleLink('nomdumodule', 'nomducontroleur', []).",{"q":49,"a":50},"Faut-il vider le cache après avoir créé un contrôleur front de module ?","Oui, systématiquement. PrestaShop met en cache la liste des contrôleurs disponibles et leurs routes. Après toute création ou modification d'un contrôleur, supprimez le contenu de var\u002Fcache\u002Fprod\u002F et var\u002Fcache\u002Fdev\u002F, ou utilisez le bouton « Vider le cache » dans Paramètres avancés → Performances du back-office.",{"q":52,"a":53},"La convention de nommage des contrôleurs front a-t-elle changé entre PrestaShop 1.7 et 8.x ?","Non, la convention de nommage des contrôleurs front de modules reste identique sur PrestaShop 8.x. Le format {nomdumodule}{Nomducontroleur}ModuleFrontController est le même depuis la version 1.7. Ce qui change dans PrestaShop 8, c'est la migration progressive des contrôleurs admin vers Symfony, mais les contrôleurs front de modules conservent le même mécanisme d'autoloading historique.","L'erreur « Class FrontController not found » dans un module PrestaShop est causée par un non-respect de la convention de nommage stricte des contrôleurs front. La classe doit impérativement s'appeler {nomdumodule}{Controleur}ModuleFrontController, sans underscores dans le nom du module, et étendre ModuleFrontController.",5,"2026-03-21T16:44:03.000Z",[],"PrestaShop pour les développeurs",{"columns":60},[61,77,107,128],{"title":62,"links":63},"Plateforme",[64,68,71,74],{"label":65,"href":66,"external":67},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":69,"href":70,"external":67},"Devenir Ambassadeur","\u002Fambassadeur",{"label":72,"href":73,"external":67},"Modules PrestaShop","\u002Fmodules",{"label":75,"href":76,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":78,"links":79},"Le Synedre",[80,83,86,89,92,95,98,101,104],{"label":81,"href":82,"external":67},"L'histoire","\u002Fsynedre",{"label":84,"href":85,"external":67},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":87,"href":88,"external":67},"L'équipe","\u002Fequipe",{"label":90,"href":91,"external":67},"Le réacteur en direct","\u002Freacteur",{"label":93,"href":94,"external":67},"Le Drill (entraînement)","\u002Fdrill",{"label":96,"href":97,"external":67},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":99,"href":100,"external":67},"Les agents IA","\u002Fagents-ia",{"label":102,"href":103,"external":67},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":105,"href":106,"external":67},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":108,"links":109},"Ressources",[110,113,116,119,122,125],{"label":111,"href":112,"external":67},"Blog","\u002Fblog",{"label":114,"href":115,"external":67},"Academy","\u002Facademy",{"label":117,"href":118,"external":67},"Dictionnaire","\u002Fdictionnaire",{"label":120,"href":121,"external":67},"Expertise PrestaShop","\u002Fexpertise",{"label":123,"href":124,"external":67},"Flywheel","\u002Fflywheel",{"label":126,"href":127,"external":67},"Manifeste","\u002Fmanifeste",{"title":129,"links":130},"À propos",[131,134,137],{"label":132,"href":133,"external":67},"Alexandre Carette","\u002Fa-propos",{"label":135,"href":136,"external":67},"Dossier de presse","\u002Fpresse",{"label":138,"href":139,"external":67},"Contact","\u002Fcontact",{"items":141},[142,151,157,163,171,179,184,190],{"id":143,"type":144,"label":145,"href":121,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":147,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":148,"children":149,"psChildren":150},41,"link",{"fr":146},"Expertise",null,0,[],[],{"id":152,"type":144,"label":153,"href":112,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":147,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":154,"children":155,"psChildren":156},42,{"fr":111},1,[],[],{"id":158,"type":144,"label":159,"href":73,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":147,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":160,"children":161,"psChildren":162},43,{"fr":72},2,[],[],{"id":164,"type":144,"label":165,"href":167,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":147,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":168,"children":169,"psChildren":170},44,{"fr":166},"Outils IA","\u002Foutils-ia",3,[],[],{"id":172,"type":144,"label":173,"href":66,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":175,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":176,"children":177,"psChildren":178},45,{"fr":174},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":180,"type":144,"label":181,"href":115,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":147,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":55,"children":182,"psChildren":183},46,{"fr":114},[],[],{"id":185,"type":144,"label":186,"href":133,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":147,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":187,"children":188,"psChildren":189},47,{"fr":129},6,[],[],{"id":191,"type":144,"label":192,"href":139,"icon":147,"description":147,"badge":147,"groupTitle":147,"style":147,"gridColumns":147,"cssClass":147,"psCategoryId":147,"showPsChildren":67,"position":193,"children":194,"psChildren":195},48,{"fr":138},7,[],[],{"header":197},{"logo":198,"topBar":203,"contactEmail":206,"features":207,"navBar":147},{"src":199,"alt":200,"text":132,"href":201,"class":202},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":147,"showLanguages":67,"align":204,"languages":205},"left",[],"contact@alexandrecarette.fr",{"showSearch":67,"showWishlist":67,"showLogin":20,"showContact":67,"showCart":67,"stickyHeader":20,"headerLayout":208},"inline",{"footer":210},{"theme":211,"description":147,"hours":147,"logo":212,"contact":213,"social":214,"bottomBar":224},"dark",{"src":199,"href":201,"alt":132},{"email":147,"phone":147,"address":147,"cta":147},[215,218,221],{"platform":216,"href":217,"label":216},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":219,"href":220,"label":219},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":222,"href":223,"label":222},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":147},{"academy":226,"blog":227,"expertise":238},[],[228,232,235],{"title":229,"url":230,"score":154,"type":231},"PrestaShop headless avec Nuxt 3 : pourquoi séparer back et front","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-separation-front-back","blog",{"title":233,"url":234,"score":154,"type":231},"PrestaShop headless : Nuxt 3, pas Next.js — le choix souverain","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-nextjs-souverainete",{"title":236,"url":237,"score":154,"type":231},"Sylius rachète PrestaShop : ce que ça change pour vous","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fsylius-rachat-prestashop-headless-souverainete",[]]