[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"megamenu":22,"$f2l2hQ85cW3Q5NAOG3N6DlOUlw3wyp1t2Q1wcwtL-Lng":92,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":135,"$fqZZofA9UoOG7aeZOJVjO4ZVKhc194LsnIV38l4unrN4":203,"footer-db":217,"header-db":235},{"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",{"items":23},[24,35,43,51,59,68,76,84],{"id":25,"type":26,"label":27,"href":29,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":32,"children":33,"psChildren":34},41,"link",{"fr":28},"Expertise","\u002Fexpertise",null,false,0,[],[],{"id":36,"type":26,"label":37,"href":39,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":40,"children":41,"psChildren":42},42,{"fr":38},"Blog","\u002Fblog",1,[],[],{"id":44,"type":26,"label":45,"href":47,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":48,"children":49,"psChildren":50},43,{"fr":46},"Modules PrestaShop","\u002Fmodules",2,[],[],{"id":52,"type":26,"label":53,"href":55,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":56,"children":57,"psChildren":58},44,{"fr":54},"Outils IA","\u002Foutils-ia",3,[],[],{"id":60,"type":26,"label":61,"href":63,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":64,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":65,"children":66,"psChildren":67},45,{"fr":62},"Offre Starter ✨","\u002Foffre-starter",{"highlight":20},4,[],[],{"id":69,"type":26,"label":70,"href":72,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":73,"children":74,"psChildren":75},46,{"fr":71},"Academy","\u002Facademy",5,[],[],{"id":77,"type":26,"label":78,"href":80,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":81,"children":82,"psChildren":83},47,{"fr":79},"À propos","\u002Fa-propos",6,[],[],{"id":85,"type":26,"label":86,"href":88,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":89,"children":90,"psChildren":91},48,{"fr":87},"Contact","\u002Fcontact",7,[],[],{"title":93,"slug":94,"metaDescription":95,"category":96,"tags":97,"difficulty":104,"psVersions":105,"content":108,"faq":109,"tldr":131,"readingTime":81,"generatedAt":132,"publishDate":132,"relatedArticles":133,"sourceCategory":134},"Obfuscation de liens PrestaShop : Smarty + JavaScript vanilla pour le SEO","obfuscation-liens-prestashop-smarty-javascript-seo","Technique d'obfuscation de liens PrestaShop avec Base64, Smarty et JavaScript vanilla. Protégez votre jus SEO sans jQuery sur PrestaShop 1.7 et 8.x.","seo",[98,99,100,96,101,102,103],"obfuscation","smarty","javascript","base64","link-sculpting","prestashop-8","intermediaire",[106,107],"1.7","8.x","\u003Ch2>Pourquoi obfusquer certains liens dans PrestaShop\u003C\u002Fh2>\n\u003Cp>Le link sculpting — ou sculpture de liens — consiste à contrôler la manière dont le PageRank circule au sein d'un site. Sur une boutique PrestaShop, de nombreux liens internes n'ont aucune valeur SEO : sélecteurs de langue, liens vers la page de connexion, panier, mentions légales, etc. Chaque lien suivi par Googlebot dilue le budget de crawl et le jus de lien disponible pour les pages stratégiques (fiches produit, catégories, landing pages).\u003C\u002Fp>\n\u003Cp>L'obfuscation consiste à \u003Cstrong>remplacer les balises \u003Ccode>\u003Ca href>\u003C\u002Fcode> par des éléments non-crawlables\u003C\u002Fstrong> (typiquement des \u003Ccode>\u003Cspan>\u003C\u002Fcode>) dont l'URL est encodée en Base64 dans un attribut \u003Ccode>data-*\u003C\u002Fcode>. Un script JavaScript rétablit la navigation au clic pour l'utilisateur, tandis que les robots voient un simple texte sans lien à suivre.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\u003Cstrong>Attention :\u003C\u002Fstrong> Cette technique ne doit pas servir à masquer du contenu aux moteurs. Elle vise uniquement à optimiser la distribution du PageRank interne sur les pages à forte valeur.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>Principe technique de l'obfuscation Base64\u003C\u002Fh2>\n\u003Cp>Le mécanisme repose sur trois étapes :\u003C\u002Fp>\n\u003Col>\n\u003Cli>**Côté serveur (Smarty)** : l'URL est encodée en Base64 via le modifier `|base64_encode` et placée dans un attribut `data-o`\u003C\u002Fli>\n\u003Cli>**Côté HTML** : un `\u003Cspan>` remplace le `\u003Ca>`, avec une classe CSS `.l-obf` pour le styling et le ciblage JS\u003C\u002Fli>\n\u003Cli>**Côté client (JavaScript)** : au clic, le script décode le Base64 et effectue la redirection\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Résultat : Googlebot ne voit aucun \u003Ccode>\u003Ca href>\u003C\u002Fcode>, donc aucun lien à suivre. L'utilisateur, lui, navigue normalement.\u003C\u002Fp>\n\u003Ch2>Implémentation Smarty dans les templates PrestaShop\u003C\u002Fh2>\n\u003Ch3>Liens simples (variables Smarty existantes)\u003C\u002Fh3>\n\u003Cp>Pour les URLs déjà disponibles dans les variables Smarty (\u003Ccode>$urls.pages.*\u003C\u002Fcode>), l'implémentation est directe :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{* Lien contact obfusqué *}\n&lt;span class=\"l-obf\" data-o=\"{$urls.pages.contact|base64_encode}\"&gt;\n  {l s='Contact Us' d='Shop.Theme.Global'}\n&lt;\u002Fspan&gt;\n\n{* Lien mon compte obfusqué *}\n&lt;span class=\"l-obf\" data-o=\"{$urls.pages.my_account|base64_encode}\"&gt;\n  {l s='Mon compte' d='Shop.Theme.Customeraccount'}\n&lt;\u002Fspan&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Liens générés via `{url entity=...}`\u003C\u002Fh3>\n\u003Cp>Le tag \u003Ccode>{url}\u003C\u002Fcode> de PrestaShop 1.7+ ne peut pas être directement pipé dans un modifier Smarty. La solution est d'utiliser \u003Ccode>{assign}\u003C\u002Fcode> pour capturer l'URL dans une variable intermédiaire :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{* Capturer l'URL dans une variable *}\n{assign var=linkHome value={url entity='index' controller='index' id_lang=$language.id_lang id_shop=1}}\n\n{* Utiliser la variable avec le modifier base64_encode *}\n&lt;span data-o=\"{$linkHome|base64_encode}\" class=\"l-obf dropdown-item\"&gt;\n  {$language.name_simple}\n&lt;\u002Fspan&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Cette astuce via \u003Ccode>{assign}\u003C\u002Fcode> est indispensable car Smarty ne permet pas de chaîner un modifier directement sur la sortie d'un tag de fonction. C'est une subtilité qui piège régulièrement les développeurs.\u003C\u002Fp>\n\u003Ch3>Liens produit dynamiques\u003C\u002Fh3>\n\u003Cp>Pour les fiches produit générées dans une boucle, on utilise la classe \u003Ccode>Link\u003C\u002Fcode> de PrestaShop :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{foreach from=$products item=product}\n  &lt;span \n    data-o=\"{$link-&gt;getProductLink($product.id, null, $product.id_category, null, $language.id_lang)|base64_encode}\" \n    class=\"l-obf product-link\"\n  &gt;\n    {$product.name}\n  &lt;\u002Fspan&gt;\n{\u002Fforeach}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\u003Cp>\u003Cstrong>PrestaShop 8.x\u003C\u002Fstrong> : La classe \u003Ccode>Link\u003C\u002Fcode> et le modifier \u003Ccode>base64_encode\u003C\u002Fcode> fonctionnent de manière identique. En revanche, si vous migrez vers un thème basé sur Hummingbird (le nouveau thème par défaut de PS 8), vérifiez que vos overrides de templates sont bien dans le bon répertoire (\u003Ccode>themes\u002Fvotre-theme\u002Ftemplates\u002F\u003C\u002Fcode>).\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>JavaScript vanilla pour la navigation obfusquée\u003C\u002Fh2>\n\u003Cp>L'approche moderne se passe complètement de jQuery — une librairie qui n'a plus lieu d'être depuis l'adoption de Bootstrap 5 dans PrestaShop 8.x.\u003C\u002Fp>\n\u003Ch3>Version de base\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-javascript\">\n\u002F\u002F Obfuscation de liens — navigation au clic\ndocument.querySelectorAll('.l-obf').forEach(function(el) {\n  el.style.cursor = 'pointer';\n  el.addEventListener('click', function() {\n    window.location.href = atob(this.dataset.o);\n  });\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Version robuste avec support UTF-8\u003C\u002Fh3>\n\u003Cp>Les URLs contenant des caractères accentués ou spéciaux (fréquent avec les slugs français) nécessitent un décodage supplémentaire. En effet, \u003Ccode>atob()\u003C\u002Fcode> ne gère pas nativement l'UTF-8 — il faut passer par \u003Ccode>escape()\u003C\u002Fcode> puis \u003Ccode>decodeURIComponent()\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-javascript\">\n\u002F\u002F Obfuscation de liens — support complet UTF-8\ndocument.querySelectorAll('.l-obf').forEach(function(el) {\n  el.style.cursor = 'pointer';\n  \n  el.addEventListener('click', function(e) {\n    e.preventDefault();\n    try {\n      var decoded = atob(this.dataset.o);\n      \u002F\u002F Décodage UTF-8 pour les URLs avec accents\n      window.location.href = decodeURIComponent(escape(decoded));\n    } catch (err) {\n      console.error('Erreur décodage lien obfusqué:', err);\n    }\n  });\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Version moderne ES6+ (PrestaShop 8.x)\u003C\u002Fh3>\n\u003Cp>Sur PrestaShop 8.x, le support navigateur permet d'utiliser une syntaxe moderne plus concise :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-javascript\">\n\u002F\u002F Obfuscation de liens — ES6+\ndocument.addEventListener('DOMContentLoaded', () =&gt; {\n  document.querySelectorAll('.l-obf').forEach(el =&gt; {\n    el.style.cursor = 'pointer';\n    el.setAttribute('role', 'link');\n    \n    el.addEventListener('click', () =&gt; {\n      try {\n        const decoded = atob(el.dataset.o);\n        window.location.href = decodeURIComponent(escape(decoded));\n      } catch (e) {\n        console.warn('[obf] URL invalide:', e.message);\n      }\n    });\n\n    \u002F\u002F Support clavier pour l'accessibilité\n    el.addEventListener('keydown', (e) =&gt; {\n      if (e.key === 'Enter' || e.key === ' ') {\n        e.preventDefault();\n        el.click();\n      }\n    });\n\n    el.setAttribute('tabindex', '0');\n  });\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Styling CSS pour les liens obfusqués\u003C\u002Fh2>\n\u003Cp>Les \u003Ccode>\u003Cspan>\u003C\u002Fcode> obfusqués doivent rester visuellement identiques aux liens classiques pour ne pas dégrader l'expérience utilisateur :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-css\">\n.l-obf {\n  cursor: pointer;\n  color: var(--link-color, #2563eb);\n  text-decoration: underline;\n  transition: color 0.2s ease;\n}\n\n.l-obf:hover {\n  color: var(--link-hover-color, #1d4ed8);\n}\n\n.l-obf:focus-visible {\n  outline: 2px solid var(--focus-color, #3b82f6);\n  outline-offset: 2px;\n  border-radius: 2px;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Bonnes pratiques et pièges à éviter\u003C\u002Fh2>\n\u003Ch3>Ce qu'il faut obfusquer\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Sélecteurs de langue et de devise\u003C\u002Fli>\n\u003Cli>Liens de connexion \u002F inscription \u002F panier\u003C\u002Fli>\n\u003Cli>Mentions légales, CGV, politique de confidentialité\u003C\u002Fli>\n\u003Cli>Liens de pagination (dans certains cas)\u003C\u002Fli>\n\u003Cli>Liens vers les réseaux sociaux dans le footer\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Ce qu'il ne faut PAS obfusquer\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Liens de navigation principale (catégories, sous-catégories)\u003C\u002Fli>\n\u003Cli>Liens vers les fiches produit depuis les listings\u003C\u002Fli>\n\u003Cli>Liens du fil d'Ariane (breadcrumb)\u003C\u002Fli>\n\u003Cli>Liens internes dans le contenu éditorial (articles, descriptions)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Pièges courants\u003C\u002Fh3>\n\u003Col>\n\u003Cli>**Oublier le décodage UTF-8** : sans `decodeURIComponent(escape(...))`, les URLs avec accents provoquent une erreur ou redirigent vers une 404\u003C\u002Fli>\n\u003Cli>**Ne pas ajouter `cursor: pointer`** : l'utilisateur ne comprend pas que l'élément est cliquable\u003C\u002Fli>\n\u003Cli>**Ignorer l'accessibilité** : sans `tabindex` et gestion du clavier, les utilisateurs naviguant au clavier sont bloqués\u003C\u002Fli>\n\u003Cli>**Sur-obfusquer** : masquer les liens stratégiques nuit au SEO au lieu de l'améliorer\u003C\u002Fli>\n\u003Cli>**Oublier le `{assign}`** : tenter de piper directement `{url entity=...}|base64_encode` ne fonctionne pas en Smarty\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Vérifier que l'obfuscation fonctionne\u003C\u002Fh2>\n\u003Cp>Pour confirmer que Googlebot ne voit plus les liens obfusqués :\u003C\u002Fp>\n\u003Col>\n\u003Cli>**Inspection du code source** : vérifiez qu'aucun `\u003Ca href>` n'apparaît pour les liens ciblés\u003C\u002Fli>\n\u003Cli>**Google Search Console** : dans l'outil d'inspection d'URL, vérifiez le HTML rendu — les `\u003Cspan>` ne doivent pas être transformés en liens\u003C\u002Fli>\n\u003Cli>**Screaming Frog** : lancez un crawl en mode \"JavaScript rendering\" et comparez le nombre de liens détectés avec et sans exécution JS\u003C\u002Fli>\n\u003Cli>**Test manuel** : désactivez JavaScript dans votre navigateur et confirmez que les éléments obfusqués ne sont pas cliquables\u003C\u002Fli>\n\u003C\u002Ful>",[110,113,116,119,122,125,128],{"q":111,"a":112},"L'obfuscation de liens est-elle pénalisée par Google ?","Non, l'obfuscation de liens internes n'est pas pénalisée en soi. Google distingue clairement le cloaking (montrer un contenu différent aux robots et aux utilisateurs) de l'optimisation du maillage interne. Tant que vous ne masquez pas de contenu textuel et que la navigation reste fonctionnelle pour l'utilisateur, cette technique est considérée comme une pratique d'optimisation légitime. Elle est d'ailleurs largement utilisée par des sites à fort trafic.",{"q":114,"a":115},"Pourquoi ne pas utiliser rel='nofollow' au lieu de l'obfuscation ?","Le rel='nofollow' empêche le transfert de PageRank via le lien, mais le budget de crawl est quand même consommé : Googlebot suit le lien, visite la page, et comptabilise le lien dans le calcul de distribution du jus. Avec l'obfuscation, le robot ne voit tout simplement pas de lien — il n'y a ni transfert de PageRank, ni consommation de budget de crawl. C'est donc une solution plus radicale et plus efficace pour le link sculpting.",{"q":117,"a":118},"Comment obfusquer des liens dans un module PrestaShop personnalisé ?","Dans un module, vous avez accès au même modifier Smarty base64_encode. Dans votre fichier .tpl, utilisez la même syntaxe : \u003Cspan class=\"l-obf\" data-o=\"{$votre_url|base64_encode}\">Texte\u003C\u002Fspan>. Pour le JavaScript, ajoutez votre script via la méthode registerJavascript() dans le hook actionFrontControllerSetMedia de votre module, ou incluez-le dans votre template avec {literal}\u003Cscript>...\u003C\u002Fscript>{\u002Fliteral}. Assurez-vous que le script s'exécute après le chargement du DOM.",{"q":120,"a":121},"Le modifier base64_encode est-il disponible nativement dans Smarty sur PrestaShop ?","Oui, base64_encode est un modifier Smarty natif disponible sans aucune installation supplémentaire sur toutes les versions de PrestaShop depuis la 1.6. Il appelle directement la fonction PHP base64_encode(). Vous pouvez l'utiliser sur n'importe quelle variable Smarty : {$maVariable|base64_encode}. Pour les tags de fonction comme {url}, passez par un {assign} intermédiaire.",{"q":123,"a":124},"L'obfuscation fonctionne-t-elle avec le nouveau thème Hummingbird de PrestaShop 8 ?","Oui, la technique fonctionne avec Hummingbird. Le thème utilise toujours Smarty pour le rendu des templates, donc le modifier base64_encode reste disponible. La seule différence notable est que Hummingbird s'appuie sur Bootstrap 5 et ne charge plus jQuery par défaut, ce qui rend l'approche JavaScript vanilla décrite ici parfaitement adaptée. Veillez simplement à placer vos overrides de templates dans le bon répertoire de votre thème enfant.",{"q":126,"a":127},"Comment gérer l'ouverture dans un nouvel onglet avec des liens obfusqués ?","Par défaut, un \u003Cspan> cliquable via JavaScript ne supporte pas le clic molette ni le Ctrl+clic pour ouvrir dans un nouvel onglet. Pour restaurer ce comportement, modifiez le gestionnaire d'événements : détectez e.ctrlKey, e.metaKey ou e.button === 1 (clic molette), et utilisez window.open(url, '_blank') dans ces cas au lieu de window.location.href. C'est un détail d'UX souvent négligé qui peut frustrer les utilisateurs avancés.",{"q":129,"a":130},"Quel impact sur les performances a l'obfuscation de liens ?","L'impact est négligeable. Côté serveur, l'encodage Base64 par Smarty ajoute quelques microsecondes par lien. Côté client, le JavaScript est extrêmement léger (moins de 500 octets minifié) et s'exécute en moins d'une milliseconde même avec des centaines de liens obfusqués. Le seul point d'attention est de s'assurer que le script se charge après le DOM (DOMContentLoaded) pour éviter de cibler des éléments qui n'existent pas encore.","L'obfuscation de liens PrestaShop via Base64 en Smarty et JavaScript vanilla permet de contrôler la distribution du PageRank sans impacter l'expérience utilisateur. La clé technique : utiliser {assign} pour capturer les URLs générées par {url entity=...} avant d'appliquer le modifier |base64_encode, et décoder côté client avec decodeURIComponent(escape(atob())) pour supporter les caractères UTF-8.","2026-03-21T14:21:04.000Z",[],"PrestaShop pour les développeurs",{"columns":136},[137,149,179,195],{"title":138,"links":139},"Plateforme",[140,142,145,146],{"label":141,"href":63,"external":31},"Offre Starter (2 500 €)",{"label":143,"href":144,"external":31},"Devenir Ambassadeur","\u002Fambassadeur",{"label":46,"href":47,"external":31},{"label":147,"href":148,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":150,"links":151},"Le Synedre",[152,155,158,161,164,167,170,173,176],{"label":153,"href":154,"external":31},"L'histoire","\u002Fsynedre",{"label":156,"href":157,"external":31},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":159,"href":160,"external":31},"L'équipe","\u002Fequipe",{"label":162,"href":163,"external":31},"Le réacteur en direct","\u002Freacteur",{"label":165,"href":166,"external":31},"Le Drill (entraînement)","\u002Fdrill",{"label":168,"href":169,"external":31},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":171,"href":172,"external":31},"Les agents IA","\u002Fagents-ia",{"label":174,"href":175,"external":31},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":177,"href":178,"external":31},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":180,"links":181},"Ressources",[182,183,184,187,189,192],{"label":38,"href":39,"external":31},{"label":71,"href":72,"external":31},{"label":185,"href":186,"external":31},"Dictionnaire","\u002Fdictionnaire",{"label":188,"href":29,"external":31},"Expertise PrestaShop",{"label":190,"href":191,"external":31},"Flywheel","\u002Fflywheel",{"label":193,"href":194,"external":31},"Manifeste","\u002Fmanifeste",{"title":79,"links":196},[197,199,202],{"label":198,"href":80,"external":31},"Alexandre Carette",{"label":200,"href":201,"external":31},"Dossier de presse","\u002Fpresse",{"label":87,"href":88,"external":31},{"academy":204,"blog":205,"expertise":216},[],[206,210,213],{"title":207,"url":208,"score":40,"type":209},"Référencement PrestaShop 2026 : le guide complet SEO + IA","\u002Fblog\u002Fseo\u002Freferencement\u002Fguide-complet-prestashop-2026","blog",{"title":211,"url":212,"score":40,"type":209},"SEO Google classique pour PrestaShop : 7 leviers techniques","\u002Fblog\u002Fseo\u002Freferencement\u002Fseo-google-classique-prestashop",{"title":214,"url":215,"score":40,"type":209},"AIO et GEO pour PrestaShop : optimiser pour les moteurs IA","\u002Fblog\u002Fseo\u002Freferencement\u002Faio-geo-intelligence-artificielle-prestashop",[],{"footer":218},{"theme":219,"description":30,"hours":30,"logo":220,"contact":223,"social":224,"bottomBar":234},"dark",{"src":221,"href":222,"alt":198},"\u002Flogo-ac.svg","\u002F",{"email":30,"phone":30,"address":30,"cta":30},[225,228,231],{"platform":226,"href":227,"label":226},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":229,"href":230,"label":229},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":232,"href":233,"label":232},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":30},{"header":236},{"logo":237,"topBar":240,"contactEmail":243,"features":244,"navBar":30},{"src":221,"alt":238,"text":198,"href":222,"class":239},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":30,"showLanguages":31,"align":241,"languages":242},"left",[],"contact@alexandrecarette.fr",{"showSearch":31,"showWishlist":31,"showLogin":20,"showContact":31,"showCart":31,"stickyHeader":20,"headerLayout":245},"inline"]