[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$frIfDJ0yckrq2RA6ncFQ1RZXYGtZ04pPyx7I6J4TcsAQ":22,"$fPxp2pKjB1827CSIFKbBCCf2UVIP2G3wfRkcotZcScG0":54,"client-config-ac-hub":77,"header-db":128,"$fg4aQvygvDRYjcypYyzY-XoL1dUsuj-V6dzo8WOlUZDM":138,"megamenu":141,"$ffA2_eFkN9XKgB9jzDDiARvtJXvRwD8gCOu2aHaDW8eo":218,"megamenu-contexts-ac-hub":220,"$fINI4gZJ9jGrKkdeKMLokcXFtTu9GlSBjqf36q2YjjHQ":222,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":258,"footer-db":317},{"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},"Masquer les produits épuisés","baba_productqtvisibility","🙈","libre","","Masque un produit pendant sa rupture de stock, puis lui rend EXACTEMENT la visibilité qu'il avait au retour du stock — « catalogue seul » reste « catalogue seul », et un produit que vous avez masqué vous-même n'est jamais rendu visible par surprise. Le module lit le stock total du produit : une seule déclinaison épuisée ne masque pas les autres. Mesuré sur PrestaShop 9.0.3 : là où la version précédente écrasait le réglage du marchand par « visible partout » et masquait un produit qui avait encore 300 unités en stock, la 2.0.0 rend « catalogue seul » et le laisse visible.",[31,32,33,34,35,36,37,38,39,40],"Rend la visibilité d'origine, pas « visible partout » — « catalogue seul » et « recherche seule » survivent à la rupture","Un produit que vous avez masqué vous-même n'est jamais rendu visible","Le stock TOTAL décide : une seule déclinaison épuisée ne masque pas le produit","Un produit commandable en rupture reste vendable — et c'est réglable","La désinstallation rend sa visibilité à chaque produit masqué, avant de supprimer la table","Seuil de rupture réglable, et visibilité de rupture au choix (nulle part, recherche seule, catalogue seul)","L'écran affiche combien de produits sont masqués en ce moment, lu en base","N'écrit que la colonne visibility — jamais Product::update(), qui réécrirait tout le produit","Multiboutique : écrit dans la boutique du mouvement","42 vérifications livrées avec le module, rejouables sans PHPUnit ni base",[42,43,44,45,46,27],"agpl-3.0","prestashop-9","stock","catalogue","visibilite","Production","\u002Fmodules\u002Fbaba_productqtvisibility-2.0.0.zip","masquer-produits-epuises-prestashop","Masque les produits en rupture, puis leur rend exactement la visibilité qu'ils avaient au retour du stock — jamais « visible partout ». Un produit réglé sur « catalogue seul » le redevient, et celui que vous avez masqué vous-même reste masqué.","## Le problème\n\nUn produit en rupture reste dans votre catalogue, dans vos listes et dans votre\nmoteur de recherche interne. Le visiteur clique, et trouve un produit qu'il ne\npeut pas acheter.\n\nCe module le masque le temps de la rupture, puis **lui rend exactement la\nvisibilité qu'il avait** quand le stock revient.\n\n## Ce que le module garantit, et pourquoi c'est la seule chose qui compte\n\n**Il ne rend que ce qu'il a pris.** Avant de masquer un produit, il écrit dans sa\npropre table la visibilité qu'il remplace. Au retour du stock, il remet\n*celle-là* — pas « visible partout ».\n\nC'est la différence entre un module utilisable et un module qui détruit votre\ntravail. Une boutique vivante a des produits réglés sur « catalogue seul » (hors\nrecherche), sur « recherche seule » (accessibles par un lien, hors navigation),\nou masqués exprès. Un module qui écrit « visible partout » au retour du stock\nefface ces décisions, une par une, à chaque réapprovisionnement — et rien ne\nvous le signale.\n\nQuatre conséquences, toutes mesurées sur une boutique réelle :\n\n| Situation | Ce qui se passe |\n|---|---|\n| Produit en « catalogue seul », rupture puis retour | il redevient **« catalogue seul »** |\n| Produit que vous avez masqué vous-même, rupture puis retour | il **reste masqué** — ce n'est pas nous qui l'avons mis là |\n| Vous changez sa visibilité pendant la rupture | la mémoire **tient** : c'est l'originale qui vous sera rendue |\n| Le module est désinstallé | **chaque produit masqué retrouve sa visibilité** avant que la table ne disparaisse |\n\n## Les déclinaisons comptent comme un tout\n\nLe module lit le **stock total du produit**, toutes déclinaisons confondues. Une\nseule taille épuisée ne masque pas le produit : les autres sont encore à vendre.\n\nMesuré : produit à deux déclinaisons de 300, l'une vidée — total 300, le produit\n**reste visible**. Les deux vidées — total 0, il est masqué. L'une\nréapprovisionnée — il revient.\n\n## Un produit commandable en rupture reste vendable\n\nSi la commande en rupture est autorisée, sur le produit ou par le réglage de la\nboutique, le masquer ferait perdre la vente. Le module ne le masque donc pas — et\nc'est réglable, si vous préférez l'inverse.\n\nLe réglage PrestaShop a **trois** états, pas deux : refusée, autorisée, ou\n« comme la boutique ». Le troisième est lu pour ce qu'il est.\n\n## Réglages\n\nBack-office → Modules → *Masquer les produits épuisés* → Configurer.\n\n- **Activer le masquage** : coupé, le module ne touche plus à rien. Les produits\n  déjà masqués le restent — un bouton les rend tous d'un geste, et la\n  désinstallation le fait toute seule.\n- **Seuil de rupture** : un produit est traité comme épuisé quand son stock total\n  est **inférieur ou égal** à ce nombre. `0` = épuisé au sens strict. Borné de 0\n  à 1 000 000.\n- **Visibilité en rupture** : *nulle part*, *recherche seule* ou *catalogue\n  seul*. C'est ce qu'on écrit pendant la rupture ; la visibilité d'avant est\n  retenue quoi qu'il arrive.\n- **Ne pas masquer si la commande en rupture est autorisée** : par défaut oui.\n\nL'écran affiche aussi **combien de produits le module masque en ce moment** — un\nchiffre lu en base, pas une promesse.\n\n## Ce que le module ne fait pas\n\n- Il ne touche **pas** aux prix, aux stocks, ni à quoi que ce soit d'autre que la\n  visibilité du produit.\n- Il ne passe **pas** par la mise à jour complète du produit, qui réécrit toutes\n  les colonnes et toutes les langues et prévient tous les modules — à chaque\n  mouvement de stock, donc des milliers de fois pendant un import. Deux écritures\n  ciblées suffisent.\n- En **multiboutique**, il écrit dans la boutique du mouvement, et ne touche au\n  reflet global que si le mouvement concerne la boutique par défaut du produit.\n- Il ne purge **aucun cache de page**. Si un cache de pages complètes est devant\n  votre boutique, la disparition du produit suivra l'expiration de ce cache.\n\n## Le test est livré avec le module\n\n```bash\nphp tests\u002FVisibiliteStockTest.php\n```\n\n42 vérifications, sans dépendance ni base de données. La décision — masquer,\nrendre, ou ne rien faire — vit à part du reste, et se rejoue seule.\n\n## Installation\n\nBack-office → Modules → Installer un module → déposer le `.zip`, puis\n**Configurer**.\n","2.0.0","\u003Ch2>Le problème\u003C\u002Fh2>\n\u003Cp>Un produit en rupture reste dans votre catalogue, dans vos listes et dans votre moteur de recherche interne. Le visiteur clique, et trouve un produit qu&#39;il ne peut pas acheter.\u003C\u002Fp>\n\u003Cp>Ce module le masque le temps de la rupture, puis \u003Cstrong>lui rend exactement la visibilité qu&#39;il avait\u003C\u002Fstrong> quand le stock revient.\u003C\u002Fp>\n\u003Ch2>Ce que le module garantit, et pourquoi c&#39;est la seule chose qui compte\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Il ne rend que ce qu&#39;il a pris.\u003C\u002Fstrong> Avant de masquer un produit, il écrit dans sa propre table la visibilité qu&#39;il remplace. Au retour du stock, il remet *celle-là* — pas « visible partout ».\u003C\u002Fp>\n\u003Cp>C&#39;est la différence entre un module utilisable et un module qui détruit votre travail. Une boutique vivante a des produits réglés sur « catalogue seul » (hors recherche), sur « recherche seule » (accessibles par un lien, hors navigation), ou masqués exprès. Un module qui écrit « visible partout » au retour du stock efface ces décisions, une par une, à chaque réapprovisionnement — et rien ne vous le signale.\u003C\u002Fp>\n\u003Cp>Quatre conséquences, toutes mesurées sur une boutique réelle :\u003C\u002Fp>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Situation\u003C\u002Fth>\u003Cth>Ce qui se passe\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>Produit en « catalogue seul », rupture puis retour\u003C\u002Ftd>\u003Ctd>il redevient \u003Cstrong>« catalogue seul »\u003C\u002Fstrong>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Produit que vous avez masqué vous-même, rupture puis retour\u003C\u002Ftd>\u003Ctd>il \u003Cstrong>reste masqué\u003C\u002Fstrong> — ce n&#39;est pas nous qui l&#39;avons mis là\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Vous changez sa visibilité pendant la rupture\u003C\u002Ftd>\u003Ctd>la mémoire \u003Cstrong>tient\u003C\u002Fstrong> : c&#39;est l&#39;originale qui vous sera rendue\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Le module est désinstallé\u003C\u002Ftd>\u003Ctd>\u003Cstrong>chaque produit masqué retrouve sa visibilité\u003C\u002Fstrong> avant que la table ne disparaisse\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2>Les déclinaisons comptent comme un tout\u003C\u002Fh2>\n\u003Cp>Le module lit le \u003Cstrong>stock total du produit\u003C\u002Fstrong>, toutes déclinaisons confondues. Une seule taille épuisée ne masque pas le produit : les autres sont encore à vendre.\u003C\u002Fp>\n\u003Cp>Mesuré : produit à deux déclinaisons de 300, l&#39;une vidée — total 300, le produit \u003Cstrong>reste visible\u003C\u002Fstrong>. Les deux vidées — total 0, il est masqué. L&#39;une réapprovisionnée — il revient.\u003C\u002Fp>\n\u003Ch2>Un produit commandable en rupture reste vendable\u003C\u002Fh2>\n\u003Cp>Si la commande en rupture est autorisée, sur le produit ou par le réglage de la boutique, le masquer ferait perdre la vente. Le module ne le masque donc pas — et c&#39;est réglable, si vous préférez l&#39;inverse.\u003C\u002Fp>\n\u003Cp>Le réglage PrestaShop a \u003Cstrong>trois\u003C\u002Fstrong> états, pas deux : refusée, autorisée, ou « comme la boutique ». Le troisième est lu pour ce qu&#39;il est.\u003C\u002Fp>\n\u003Ch2>Réglages\u003C\u002Fh2>\n\u003Cp>Back-office → Modules → *Masquer les produits épuisés* → Configurer.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Activer le masquage\u003C\u002Fstrong> : coupé, le module ne touche plus à rien. Les produits\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>déjà masqués le restent — un bouton les rend tous d&#39;un geste, et la désinstallation le fait toute seule.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Seuil de rupture\u003C\u002Fstrong> : un produit est traité comme épuisé quand son stock total\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>est \u003Cstrong>inférieur ou égal\u003C\u002Fstrong> à ce nombre. \u003Ccode>0\u003C\u002Fcode> = épuisé au sens strict. Borné de 0 à 1 000 000.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Visibilité en rupture\u003C\u002Fstrong> : *nulle part*, *recherche seule* ou *catalogue\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>seul*. C&#39;est ce qu&#39;on écrit pendant la rupture ; la visibilité d&#39;avant est retenue quoi qu&#39;il arrive.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Ne pas masquer si la commande en rupture est autorisée\u003C\u002Fstrong> : par défaut oui.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>L&#39;écran affiche aussi \u003Cstrong>combien de produits le module masque en ce moment\u003C\u002Fstrong> — un chiffre lu en base, pas une promesse.\u003C\u002Fp>\n\u003Ch2>Ce que le module ne fait pas\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Il ne touche \u003Cstrong>pas\u003C\u002Fstrong> aux prix, aux stocks, ni à quoi que ce soit d&#39;autre que la\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>visibilité du produit.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Il ne passe \u003Cstrong>pas\u003C\u002Fstrong> par la mise à jour complète du produit, qui réécrit toutes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>les colonnes et toutes les langues et prévient tous les modules — à chaque mouvement de stock, donc des milliers de fois pendant un import. Deux écritures ciblées suffisent.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>En \u003Cstrong>multiboutique\u003C\u002Fstrong>, il écrit dans la boutique du mouvement, et ne touche au\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>reflet global que si le mouvement concerne la boutique par défaut du produit.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Il ne purge \u003Cstrong>aucun cache de page\u003C\u002Fstrong>. Si un cache de pages complètes est devant\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>votre boutique, la disparition du produit suivra l&#39;expiration de ce cache.\u003C\u002Fp>\n\u003Ch2>Le test est livré avec le module\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>php tests\u002FVisibiliteStockTest.php\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>42 vérifications, sans dépendance ni base de données. La décision — masquer, rendre, ou ne rien faire — vit à part du reste, et se rejoue seule.\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\u002Fmasquer-produits-epuises-prestashop",{"items":142},[143,153,161,169,177,185,194,202,210],{"id":144,"type":145,"label":146,"href":148,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":150,"barVisible":20,"children":151,"psChildren":152},41,"link",{"fr":147},"Expertise","\u002Fexpertise","picto",0,[],[],{"id":154,"type":145,"label":155,"href":157,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":158,"barVisible":20,"children":159,"psChildren":160},42,{"fr":156},"Blog","\u002Fblog",1,[],[],{"id":162,"type":145,"label":163,"href":165,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":166,"barVisible":20,"children":167,"psChildren":168},43,{"fr":164},"Méthode","\u002Fmodules",2,[],[],{"id":170,"type":145,"label":171,"href":173,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":174,"barVisible":20,"children":175,"psChildren":176},49,{"fr":172},"Modules gratuits","\u002Fmodules-libres",3,[],[],{"id":178,"type":145,"label":179,"href":181,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":182,"barVisible":20,"children":183,"psChildren":184},44,{"fr":180},"Outils IA","\u002Foutils-ia",4,[],[],{"id":186,"type":145,"label":187,"href":189,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":190,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":191,"barVisible":20,"children":192,"psChildren":193},45,{"fr":188},"Tarifs","\u002Ftarifs",{"highlight":20},5,[],[],{"id":195,"type":145,"label":196,"href":198,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":199,"barVisible":20,"children":200,"psChildren":201},46,{"fr":197},"Academy","\u002Facademy",6,[],[],{"id":203,"type":145,"label":204,"href":206,"icon":57,"iconRole":149,"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":208,"psChildren":209},47,{"fr":205},"À propos","\u002Fa-propos",7,[],[],{"id":211,"type":145,"label":212,"href":214,"icon":57,"iconRole":149,"description":57,"badge":57,"groupTitle":57,"groupKey":57,"style":57,"gridColumns":57,"cssClass":57,"psCategoryId":57,"psProductId":57,"showPsChildren":75,"position":215,"barVisible":20,"children":216,"psChildren":217},48,{"fr":213},"Contact","\u002Fcontact",8,[],[],{"sections":219},[],{"contexts":221},[],{"reviews":223,"total":257,"business":57},[224,230,236,241,247,253],{"author":225,"company":226,"rating":191,"title":227,"text":228,"date":229,"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":231,"company":232,"rating":191,"title":233,"text":234,"date":235,"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":237,"company":238,"rating":191,"title":239,"text":239,"date":240,"source":68},"Jl","Kaigan","Super","2022-10-25",{"author":242,"company":243,"rating":191,"title":244,"text":245,"date":246,"source":68},"Elite Cbd","Canna Elite Europe Ltd","Au Top","Au Top. tout simplement","2022-06-21",{"author":248,"company":249,"rating":191,"title":250,"text":251,"date":252,"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":242,"company":243,"rating":191,"title":254,"text":255,"date":256,"source":68},"Toujours aussi clair et clairvoyant","Toujours aussi clair et clairvoyant... ;) Un plaisir de travailler avec Alexandre","2022-05-16",33,{"columns":259},[260,271,297,310],{"title":261,"position":158,"links":262},"Plateforme",[263,264,267,268],{"label":188,"href":189,"external":75},{"label":265,"href":266,"external":75},"Devenir Ambassadeur","\u002Fambassadeur",{"label":164,"href":165,"external":75},{"label":269,"href":270,"external":20},"CodeMyShop (open-source)","https:\u002F\u002Fcodemyshop.com",{"title":272,"position":166,"links":273},"Le Synedre",[274,277,280,283,286,289,291,294],{"label":275,"href":276,"external":75},"L'histoire","\u002Fsynedre",{"label":278,"href":279,"external":20},"Constitution","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconstitution",{"label":281,"href":282,"external":20},"L'équipe","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fagents",{"label":284,"href":285,"external":75},"Le réacteur en direct","\u002Freacteur",{"label":287,"href":288,"external":20},"Le Drill (entraînement)","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fdrill",{"label":290,"href":282,"external":20},"Les agents IA",{"label":292,"href":293,"external":20},"La Conduite","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconduite",{"label":295,"href":296,"external":20},"Charte plateforme","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fcharte",{"title":298,"position":174,"links":299},"Ressources",[300,301,302,304,307],{"label":156,"href":157,"external":75},{"label":197,"href":198,"external":75},{"label":303,"href":148,"external":75},"Expertise PrestaShop",{"label":305,"href":306,"external":75},"Flywheel","\u002Fflywheel",{"label":308,"href":309,"external":75},"Manifeste","\u002Fmanifeste",{"title":205,"position":182,"links":311},[312,313,316],{"label":61,"href":206,"external":75},{"label":314,"href":315,"external":20},"Dossier de presse","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fpresse",{"label":213,"href":214,"external":75},{"footer":318},{"theme":56,"description":57,"hours":57,"logo":319,"contact":320,"social":321,"bottomBar":325,"newsletter":326},{"src":59,"href":60,"alt":61},{"email":57,"phone":57,"address":57,"cta":57},[322,323,324],{"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}]