[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fERxhH83Jr9BAU3GgS4zWQsvM44lK_BMnOKzChQK_7bQ":22,"$fPxp2pKjB1827CSIFKbBCCf2UVIP2G3wfRkcotZcScG0":54,"client-config-ac-hub":77,"header-db":128,"$f09VM01olr8GWJl6Vwd9jXp582VFvP4yrDcMC11OMHsc":138,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":141,"$ffA2_eFkN9XKgB9jzDDiARvtJXvRwD8gCOu2aHaDW8eo":217,"megamenu":219,"megamenu-contexts-ac-hub":279,"footer-db":281,"$fINI4gZJ9jGrKkdeKMLokcXFtTu9GlSBjqf36q2YjjHQ":291},{"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",{"module":23,"canonical":49,"isCanonical":20,"contentHtml":53},{"name":24,"codename":25,"icon":26,"category":27,"flywheel":28,"description":29,"features":30,"tags":41,"status":47,"link":48,"slug":49,"summary":50,"contentMd":51,"ficheSlug":49,"version":52},"Image de remplacement sur 404","cafe_default404image","🖼️","libre","","Un visuel absent du disque fait rendre la page 404 complète de la boutique : une cinquantaine de kilo-octets de HTML, un cookie de session et un rendu de thème, pour une image. Le module répond à sa place une image minuscule, en 404, sans toucher au thème — mesuré sur une boutique PrestaShop 9.0.3 neuve, 971 octets au lieu de 51 053. Il agit sur les images de catégorie, de CMS, de marque, de fournisseur et de boutique, ainsi que sur les scripts, styles, polices et source maps. Il ne se mêle pas des images produit demandées par leur URL réécrite : PrestaShop sert déjà son propre substitut pour celles-là.",[31,32,33,34,35,36,37,38,39,40],"Une image absente répond 404 avec une image, pas avec 51 ko de HTML — mesuré : 971 octets","Aucun Set-Cookie sur ces réponses : elles redeviennent cachables","Un .svg reçoit un vrai SVG valide, jamais un GIF annoncé sous un type SVG","Scripts, styles et polices : 404 au corps vide, et un interrupteur séparé pour les couper","X-Robots-Tag: noindex — un contrôleur de liens voit que l'image n'existe pas","Image de remplacement au choix dans img\u002F, ou un pixel transparent qui ne déforme aucune mise en page","Le back-office refuse un chemin hostile et NOMME la raison, au lieu d'enregistrer en silence","Durée de cache réglable de 0 à 3600 s","Aucune table créée ; désinstallé, le module retire ses quatre réglages","37 vérifications livrées avec le module, rejouables sans PHPUnit ni base",[42,43,44,45,46,27],"agpl-3.0","prestashop-9","performance","404","images","Production","\u002Fmodules\u002Fcafe_default404image-1.1.0.zip","image-manquante-404-prestashop","Une image absente fait rendre la page 404 complète : 51 ko de HTML et une session ouverte, par visuel manquant. Ce module répond une image minuscule et sort — 971 octets, sans session, mesuré sur PrestaShop 9.0.3.","## Le problème\n\nUn visuel absent du disque ne devrait pas coûter un rendu de page complet.\n\nPrestaShop renvoie vers son point d'entrée toute URL qui ne correspond à aucun\nfichier. Pour une image manquante, il instancie donc le contrôleur « page\nintrouvable », qui rend **la page 404 entière** : le thème, l'en-tête, le pied,\nles requêtes de menu, de panier, de devises.\n\nUne page qui demande cinquante visuels absents fait rendre cinquante fois la page\n404 — environ **2,5 Mo de HTML et cinquante sessions ouvertes**.\n\n## Le gain, mesuré\n\nSur PrestaShop 9.0.3 neuf, même boutique, même URL, module désinstallé puis\ninstallé :\n\n| | sans le module | avec le module |\n|---|---|---|\n| une image absente | **50 858 à 51 053 octets** de HTML | **971 octets**, ou 43 sans image de remplacement |\n| un script, un style, une police | **50 858 à 51 053 octets** de HTML | **0 octet** |\n| cookie de session envoyé | **1 par requête** | **aucun** |\n| mise en cache | interdite | une minute |\n| consigne aux moteurs | absente | **ne pas indexer** |\n\nLe module se greffe sur la première ligne de l'initialisation du contrôleur de\nboutique. Si l'URL demandait une image, il répond une image minuscule et sort :\nni thème, ni devises, ni une seule requête du rendu.\n\n## Ce qu'il fait exactement\n\n| URL demandée | Réponse |\n|---|---|\n| `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.avif`, `.ico`, `.bmp` | **404** et votre image de remplacement, sinon un pixel transparent de 43 octets |\n| `.svg` | **404** et un SVG vide et valide — jamais un GIF annoncé comme un SVG |\n| `.js`, `.css`, `.map`, `.woff`, `.woff2`, `.ttf`, `.eot`, `.otf` | **404**, corps vide |\n| tout le reste | le module ne fait rien : la page 404 habituelle s'affiche |\n\nLa réponse est un **404**, pas un 200 : l'image n'existe pas, et un moteur de\nrecherche comme un contrôleur de liens doit pouvoir le voir.\n\n## Ce qu'il couvre, et ce qu'il ne couvre pas\n\n**Il agit sur** les images de catégorie, de page CMS, de marque, de fournisseur\net de boutique, les URL d'image directes — celles qu'emploient un contenu\néditorial, un export, un courriel ou un flux — et les scripts, styles, polices\net cartes de source.\n\n**Il n'agit pas** sur les images **produit** demandées par leur URL réécrite :\nPrestaShop sert déjà son propre substitut pour celles-là. Mesuré, un 200 de\n64 585 octets. Le module ne s'en mêle pas.\n\n**Il ne voit pas** les requêtes que le serveur web refuse avant PHP. Les dossiers\n`img\u002F`, `js\u002F` et `themes\u002F` de PrestaShop portent chacun une liste d'extensions\nautorisées, et Apache confronte cette liste au **premier segment de chemin\nmanquant**, pas au nom de fichier demandé. Un dossier intermédiaire absent donne\ndonc un segment sans extension, donc un **403** qui n'atteint jamais le module.\n\nMesuré sur PrestaShop 9.0.3 : `\u002Fthemes\u002Fclassic\u002Fassets\u002Fimg\u002Fabsent.jpg` répond 403\nparce que `assets\u002Fimg` n'existe pas, là où `\u002Fthemes\u002Fclassic\u002Fassets\u002Fcss\u002Fabsent.css`\n— dont tous les dossiers existent — répond bien 404 avec un corps vide. Rien à\ncorriger dans le module : c'est la configuration du serveur, et elle répond déjà\ncourt (277 octets, sans session).\n\n## Réglages\n\nBack-office → Modules → *Image de remplacement sur 404* → Configurer.\n\n- **Répondre aux images** et **aux scripts, styles et polices** : deux\n  interrupteurs indépendants.\n- **Image de remplacement** : un chemin dans le dossier `img\u002F` de la boutique,\n  par exemple `404.gif` ou `cms\u002Findisponible.png`. Laissé vide, le module répond\n  un pixel transparent qui **ne déforme aucune mise en page** — une balise\n  d'image garde les dimensions que le style lui donne.\n\n  Si le chemin est refusé, le back-office le dit et **nomme la raison**, au lieu\n  d'enregistrer en silence. Sont refusés : une sortie du dossier `img\u002F` (`..\u002F`,\n  lien symbolique, chemin absolu — c'est le système de fichiers qui tranche, pas\n  une lecture de la chaîne), une extension qui n'est pas une image, un `.svg`\n  (il peut porter du script), un fichier illisible ou absent, et tout caractère\n  de contrôle.\n- **Durée de cache** : réglable de 0 à 3600 secondes. Une valeur longue fait\n  attendre un visiteur après la réparation d'un visuel ; zéro interdit la mise\n  en cache.\n\nLe module ne crée **aucune table**. Désinstallé, il retire ses quatre réglages.\n\n## Installation\n\nBack-office → Modules → Installer un module → déposer le `.zip`, puis\n**Configurer**.\n","1.1.0","\u003Ch2>Le problème\u003C\u002Fh2>\n\u003Cp>Un visuel absent du disque ne devrait pas coûter un rendu de page complet.\u003C\u002Fp>\n\u003Cp>PrestaShop renvoie vers son point d&#39;entrée toute URL qui ne correspond à aucun fichier. Pour une image manquante, il instancie donc le contrôleur « page introuvable », qui rend \u003Cstrong>la page 404 entière\u003C\u002Fstrong> : le thème, l&#39;en-tête, le pied, les requêtes de menu, de panier, de devises.\u003C\u002Fp>\n\u003Cp>Une page qui demande cinquante visuels absents fait rendre cinquante fois la page 404 — environ \u003Cstrong>2,5 Mo de HTML et cinquante sessions ouvertes\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Ch2>Le gain, mesuré\u003C\u002Fh2>\n\u003Cp>Sur PrestaShop 9.0.3 neuf, même boutique, même URL, module désinstallé puis installé :\u003C\u002Fp>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>\u003C\u002Fth>\u003Cth>sans le module\u003C\u002Fth>\u003Cth>avec le module\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>une image absente\u003C\u002Ftd>\u003Ctd>\u003Cstrong>50 858 à 51 053 octets\u003C\u002Fstrong> de HTML\u003C\u002Ftd>\u003Ctd>\u003Cstrong>971 octets\u003C\u002Fstrong>, ou 43 sans image de remplacement\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>un script, un style, une police\u003C\u002Ftd>\u003Ctd>\u003Cstrong>50 858 à 51 053 octets\u003C\u002Fstrong> de HTML\u003C\u002Ftd>\u003Ctd>\u003Cstrong>0 octet\u003C\u002Fstrong>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>cookie de session envoyé\u003C\u002Ftd>\u003Ctd>\u003Cstrong>1 par requête\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Cstrong>aucun\u003C\u002Fstrong>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>mise en cache\u003C\u002Ftd>\u003Ctd>interdite\u003C\u002Ftd>\u003Ctd>une minute\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>consigne aux moteurs\u003C\u002Ftd>\u003Ctd>absente\u003C\u002Ftd>\u003Ctd>\u003Cstrong>ne pas indexer\u003C\u002Fstrong>\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>Le module se greffe sur la première ligne de l&#39;initialisation du contrôleur de boutique. Si l&#39;URL demandait une image, il répond une image minuscule et sort : ni thème, ni devises, ni une seule requête du rendu.\u003C\u002Fp>\n\u003Ch2>Ce qu&#39;il fait exactement\u003C\u002Fh2>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>URL demandée\u003C\u002Fth>\u003Cth>Réponse\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>.png\u003C\u002Fcode>, \u003Ccode>.jpg\u003C\u002Fcode>, \u003Ccode>.jpeg\u003C\u002Fcode>, \u003Ccode>.gif\u003C\u002Fcode>, \u003Ccode>.webp\u003C\u002Fcode>, \u003Ccode>.avif\u003C\u002Fcode>, \u003Ccode>.ico\u003C\u002Fcode>, \u003Ccode>.bmp\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>\u003Cstrong>404\u003C\u002Fstrong> et votre image de remplacement, sinon un pixel transparent de 43 octets\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>.svg\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>\u003Cstrong>404\u003C\u002Fstrong> et un SVG vide et valide — jamais un GIF annoncé comme un SVG\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>.js\u003C\u002Fcode>, \u003Ccode>.css\u003C\u002Fcode>, \u003Ccode>.map\u003C\u002Fcode>, \u003Ccode>.woff\u003C\u002Fcode>, \u003Ccode>.woff2\u003C\u002Fcode>, \u003Ccode>.ttf\u003C\u002Fcode>, \u003Ccode>.eot\u003C\u002Fcode>, \u003Ccode>.otf\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>\u003Cstrong>404\u003C\u002Fstrong>, corps vide\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>tout le reste\u003C\u002Ftd>\u003Ctd>le module ne fait rien : la page 404 habituelle s&#39;affiche\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>La réponse est un \u003Cstrong>404\u003C\u002Fstrong>, pas un 200 : l&#39;image n&#39;existe pas, et un moteur de recherche comme un contrôleur de liens doit pouvoir le voir.\u003C\u002Fp>\n\u003Ch2>Ce qu&#39;il couvre, et ce qu&#39;il ne couvre pas\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Il agit sur\u003C\u002Fstrong> les images de catégorie, de page CMS, de marque, de fournisseur et de boutique, les URL d&#39;image directes — celles qu&#39;emploient un contenu éditorial, un export, un courriel ou un flux — et les scripts, styles, polices et cartes de source.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Il n&#39;agit pas\u003C\u002Fstrong> sur les images \u003Cstrong>produit\u003C\u002Fstrong> demandées par leur URL réécrite : PrestaShop sert déjà son propre substitut pour celles-là. Mesuré, un 200 de 64 585 octets. Le module ne s&#39;en mêle pas.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Il ne voit pas\u003C\u002Fstrong> les requêtes que le serveur web refuse avant PHP. Les dossiers \u003Ccode>img\u002F\u003C\u002Fcode>, \u003Ccode>js\u002F\u003C\u002Fcode> et \u003Ccode>themes\u002F\u003C\u002Fcode> de PrestaShop portent chacun une liste d&#39;extensions autorisées, et Apache confronte cette liste au \u003Cstrong>premier segment de chemin manquant\u003C\u002Fstrong>, pas au nom de fichier demandé. Un dossier intermédiaire absent donne donc un segment sans extension, donc un \u003Cstrong>403\u003C\u002Fstrong> qui n&#39;atteint jamais le module.\u003C\u002Fp>\n\u003Cp>Mesuré sur PrestaShop 9.0.3 : \u003Ccode>\u002Fthemes\u002Fclassic\u002Fassets\u002Fimg\u002Fabsent.jpg\u003C\u002Fcode> répond 403 parce que \u003Ccode>assets\u002Fimg\u003C\u002Fcode> n&#39;existe pas, là où \u003Ccode>\u002Fthemes\u002Fclassic\u002Fassets\u002Fcss\u002Fabsent.css\u003C\u002Fcode> — dont tous les dossiers existent — répond bien 404 avec un corps vide. Rien à corriger dans le module : c&#39;est la configuration du serveur, et elle répond déjà court (277 octets, sans session).\u003C\u002Fp>\n\u003Ch2>Réglages\u003C\u002Fh2>\n\u003Cp>Back-office → Modules → *Image de remplacement sur 404* → Configurer.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Répondre aux images\u003C\u002Fstrong> et \u003Cstrong>aux scripts, styles et polices\u003C\u002Fstrong> : deux\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>interrupteurs indépendants.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Image de remplacement\u003C\u002Fstrong> : un chemin dans le dossier \u003Ccode>img\u002F\u003C\u002Fcode> de la boutique,\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>par exemple \u003Ccode>404.gif\u003C\u002Fcode> ou \u003Ccode>cms\u002Findisponible.png\u003C\u002Fcode>. Laissé vide, le module répond un pixel transparent qui \u003Cstrong>ne déforme aucune mise en page\u003C\u002Fstrong> — une balise d&#39;image garde les dimensions que le style lui donne.\u003C\u002Fp>\n\u003Cp>Si le chemin est refusé, le back-office le dit et \u003Cstrong>nomme la raison\u003C\u002Fstrong>, au lieu d&#39;enregistrer en silence. Sont refusés : une sortie du dossier \u003Ccode>img\u002F\u003C\u002Fcode> (\u003Ccode>..\u002F\u003C\u002Fcode>, lien symbolique, chemin absolu — c&#39;est le système de fichiers qui tranche, pas une lecture de la chaîne), une extension qui n&#39;est pas une image, un \u003Ccode>.svg\u003C\u002Fcode> (il peut porter du script), un fichier illisible ou absent, et tout caractère de contrôle.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Durée de cache\u003C\u002Fstrong> : réglable de 0 à 3600 secondes. Une valeur longue fait\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>attendre un visiteur après la réparation d&#39;un visuel ; zéro interdit la mise en cache.\u003C\u002Fp>\n\u003Cp>Le module ne crée \u003Cstrong>aucune table\u003C\u002Fstrong>. Désinstallé, il retire ses quatre réglages.\u003C\u002Fp>\n\u003Ch2>Installation\u003C\u002Fh2>\n\u003Cp>Back-office → Modules → Installer un module → déposer le \u003Ccode>.zip\u003C\u002Fcode>, puis \u003Cstrong>Configurer\u003C\u002Fstrong>.\u003C\u002Fp>",{"footer":55},{"theme":56,"description":57,"hours":57,"logo":58,"contact":62,"social":63,"bottomBar":73,"newsletter":74},"dark",null,{"src":59,"href":60,"alt":61},"\u002Flogo-ac.svg","\u002F","Alexandre Carette",{"email":57,"phone":57,"address":57,"cta":57},[64,67,70],{"platform":65,"href":66,"label":65},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":68,"href":69,"label":68},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":71,"href":72,"label":71},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":57},{"show":75,"title":57,"description":57,"placeholder":57,"ctaLabel":57,"consentText":76},false,"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.",{"faq":78,"theme":115,"domain":119,"clientId":123,"features":124,"contactEmail":126,"defaultColorMode":21,"gscSiteUrl":127},[79,82,85,88,91,94,97,100,103,106,109,112],{"reponse":80,"question":81},"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":83,"question":84},"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":86,"question":87},"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":89,"question":90},"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":92,"question":93},"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":95,"question":96},"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":98,"question":99},"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":101,"question":102},"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":104,"question":105},"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":107,"question":108},"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":110,"question":111},"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":113,"question":114},"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":116,"colors":117,"typography":118},{"shadow":20,"borderRadius":18},{"muted":10,"primary":6,"footerBg":11,"headerBg":11,"topBarBg":9,"secondary":7,"background":8,"foreground":9,"topBarText":11},{"fontUrl":15,"fontFamily":14},[120,121,122],"alexandrecarette.fr","www.alexandrecarette.fr","localhost","ac-hub",{"showLogin":20,"showSearch":75,"showContact":75,"headerLayout":125,"showWishlist":75,"stickyHeader":75},"inline","contact@alexandrecarette.fr","https:\u002F\u002Falexandrecarette.fr\u002F",{"header":129},{"logo":130,"topBar":133,"contactEmail":126,"contactPhone":57,"features":136,"navBar":57,"headerLinks":137,"storesHref":57},{"src":59,"alt":131,"text":61,"href":60,"class":132},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":57,"messageMobile":57,"showLanguages":75,"align":134,"languages":135},"left",[],{"showSearch":75,"showWishlist":75,"showLogin":20,"showContact":75,"showCart":75,"showQuoteButton":20,"showBlogLink":75,"showContactLink":75,"showGiftcardLink":75,"showStoresLink":75,"stickyHeader":20,"staticHeader":75,"headerLayout":125},{},{"ok":20,"alternates":139},{"fr":140},"\u002Fmodules-libres\u002Fimage-manquante-404-prestashop",{"columns":142},[143,159,186,205],{"title":144,"position":145,"links":146},"Plateforme",1,[147,150,153,156],{"label":148,"href":149,"external":75},"Tarifs","\u002Ftarifs",{"label":151,"href":152,"external":75},"Devenir Ambassadeur","\u002Fambassadeur",{"label":154,"href":155,"external":75},"Méthode","\u002Fmodules",{"label":157,"href":158,"external":20},"CodeMyShop (open-source)","https:\u002F\u002Fcodemyshop.com",{"title":160,"position":161,"links":162},"Le Synedre",2,[163,166,169,172,175,178,180,183],{"label":164,"href":165,"external":75},"L'histoire","\u002Fsynedre",{"label":167,"href":168,"external":20},"Constitution","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconstitution",{"label":170,"href":171,"external":20},"L'équipe","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fagents",{"label":173,"href":174,"external":75},"Le réacteur en direct","\u002Freacteur",{"label":176,"href":177,"external":20},"Le Drill (entraînement)","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fdrill",{"label":179,"href":171,"external":20},"Les agents IA",{"label":181,"href":182,"external":20},"La Conduite","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconduite",{"label":184,"href":185,"external":20},"Charte plateforme","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fcharte",{"title":187,"position":188,"links":189},"Ressources",3,[190,193,196,199,202],{"label":191,"href":192,"external":75},"Blog","\u002Fblog",{"label":194,"href":195,"external":75},"Academy","\u002Facademy",{"label":197,"href":198,"external":75},"Expertise PrestaShop","\u002Fexpertise",{"label":200,"href":201,"external":75},"Flywheel","\u002Fflywheel",{"label":203,"href":204,"external":75},"Manifeste","\u002Fmanifeste",{"title":206,"position":207,"links":208},"À propos",4,[209,211,214],{"label":61,"href":210,"external":75},"\u002Fa-propos",{"label":212,"href":213,"external":20},"Dossier de presse","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fpresse",{"label":215,"href":216,"external":75},"Contact","\u002Fcontact",{"sections":218},[],{"items":220},[221,230,235,240,247,254,261,267,273],{"id":222,"type":223,"label":224,"href":198,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":227,"barVisible":20,"children":228,"psChildren":229},41,"link",{"fr":225},"Expertise","picto",0,[],[],{"id":231,"type":223,"label":232,"href":192,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":145,"barVisible":20,"children":233,"psChildren":234},42,{"fr":191},[],[],{"id":236,"type":223,"label":237,"href":155,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":161,"barVisible":20,"children":238,"psChildren":239},43,{"fr":154},[],[],{"id":241,"type":223,"label":242,"href":244,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":188,"barVisible":20,"children":245,"psChildren":246},49,{"fr":243},"Modules gratuits","\u002Fmodules-libres",[],[],{"id":248,"type":223,"label":249,"href":251,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":207,"barVisible":20,"children":252,"psChildren":253},44,{"fr":250},"Outils IA","\u002Foutils-ia",[],[],{"id":255,"type":223,"label":256,"href":149,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":257,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":258,"barVisible":20,"children":259,"psChildren":260},45,{"fr":148},{"highlight":20},5,[],[],{"id":262,"type":223,"label":263,"href":195,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":264,"barVisible":20,"children":265,"psChildren":266},46,{"fr":194},6,[],[],{"id":268,"type":223,"label":269,"href":210,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":270,"barVisible":20,"children":271,"psChildren":272},47,{"fr":206},7,[],[],{"id":274,"type":223,"label":275,"href":216,"icon":57,"iconRole":226,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":276,"barVisible":20,"children":277,"psChildren":278},48,{"fr":215},8,[],[],{"contexts":280},[],{"footer":282},{"theme":56,"description":57,"hours":57,"logo":283,"contact":284,"social":285,"bottomBar":289,"newsletter":290},{"src":59,"href":60,"alt":61},{"email":57,"phone":57,"address":57,"cta":57},[286,287,288],{"platform":65,"href":66,"label":65},{"platform":68,"href":69,"label":68},{"platform":71,"href":72,"label":71},{"copyright":57},{"show":75,"title":57,"description":57,"placeholder":57,"ctaLabel":57,"consentText":76},{"reviews":292,"total":326,"business":57},[293,299,305,310,316,322],{"author":294,"company":295,"rating":258,"title":296,"text":297,"date":298,"source":68},"Office","MONOGRAM","Nous travaillons avec Alexandre depuis quelques mois et sommes ravis de son a","Nous travaillons avec Alexandre depuis quelques mois et sommes ravis de son accompagnement. Alexandre comprend parfaitement les enjeux et problématiques liés à notre activité et parvient, en réponse, à nous apporter des solutions techniques et fonctionnelles en respectant coûts et délais.","2023-07-18",{"author":300,"company":301,"rating":258,"title":302,"text":303,"date":304,"source":68},"Marine","MES-Distribution","La résolution de mes problèmes à été rapide et efficace, je recommande :)","La résolution de mes problèmes à été rapide et efficace, je recommande :).","2023-01-20",{"author":306,"company":307,"rating":258,"title":308,"text":308,"date":309,"source":68},"Jl","Kaigan","Super","2022-10-25",{"author":311,"company":312,"rating":258,"title":313,"text":314,"date":315,"source":68},"Elite Cbd","Canna Elite Europe Ltd","Au Top","Au Top. tout simplement","2022-06-21",{"author":317,"company":318,"rating":258,"title":319,"text":320,"date":321,"source":68},"Lorie","GRIIN outdoor","Configuration d''un VPS et migration réalisée avec succès, bons conseils, dia","Configuration d'un VPS et migration réalisée avec succès, bons conseils, diagnostique rapide et efficace de nos problèmes. Je recommande.","2022-06-01",{"author":311,"company":312,"rating":258,"title":323,"text":324,"date":325,"source":68},"Toujours aussi clair et clairvoyant","Toujours aussi clair et clairvoyant... ;) Un plaisir de travailler avec Alexandre","2022-05-16",33]