#!/usr/bin/env python3
"""Brouillon pilier « Guide modules PrestaShop indispensables 2026 (PS 8 / 9) »."""

from __future__ import annotations

import json
import sys
import urllib.parse
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "scripts"))

from article_studio.config import load_config  # noqa: E402
from article_studio import wp_client  # noqa: E402

BASE = "https://www.arnaud-merigeau.fr"

TITLE = "Guide complet des modules PrestaShop indispensables en 2026 (PS 8 / 9)"
SLUG = "guide-modules-prestashop-indispensables-2026-ps8-ps9"
YOAST_TITLE = "Modules PrestaShop indispensables 2026 : guide PS 8 / 9 complet"
YOAST_DESC = (
    "Quels modules PrestaShop installer en 2026 ? Guide exhaustif PS 8 et 9 : compta, stock, "
    "SEO, logistique, back-office. Comparatif, critères de choix et modules testés par un e-commerçant."
)
FOCUS = "modules prestashop"
EXCERPT = (
    "Tu ouvres ta boutique PrestaShop 8 ou 9 et tu te demandes quels modules installer vraiment ? "
    "Voici le guide 2026 le plus complet : matrice par besoin métier, pièges à éviter, compatibilité "
    "PS 9 et liens vers des modules testés en production."
)

BOUTIQUE = f"{BASE}/boutique/"
CAT_PS = f"{BASE}/categorie-produit/themes-et-modules-prestashop/"
FREELANCE = f"{BASE}/freelance-prestashop/"
CONTACT = f"{BASE}/contact/"
PS9 = f"{BASE}/prestashop-9/"
SECURITE = f"{BASE}/politique-de-securite-themes-modules-prestashop/"
PIM = f"{BASE}/module-pim-prestashop/"
OLD_LIST = f"{BASE}/quels-sont-les-modules-prestashop-addons-indispensables/"
GSC_GUIDE = f"{BASE}/guide-complet-google-search-console-pour-prestashop/"
STATS = f"{BASE}/meilleur-module-de-statistiques-pour-prestashop/"
MIGRATION = f"{BASE}/migration-prestashop-1-7-vers-9-sans-perdre-seo/"
EXPORT_GUIDE = f"{BASE}/export-comptable-prestashop-2026-formats-erreurs-module-csv/"
DOOFINDER = f"{BASE}/doofinder-le-meilleur-moteur-de-recherche-pour-prestashop/"
MULTIBOUTIQUE = f"{BASE}/multiboutique-prestashop-eviter-duplicate-content/"
THEMES_GUIDE = f"{BASE}/meilleurs-themes-prestashop-8-et-9-gratuits/"
TICKET = f"{BASE}/produit/ticket-intervention-prestashop-wordpress/"

IMG_HERO = f"{BASE}/wp-content/uploads/2026/06/guide-modules-prestashop-2026-featured.png"
IMG_HERO_LOCAL = ROOT / "assets" / "guide-modules-prestashop-2026-featured.png"
IMG_BO = f"{BASE}/wp-content/uploads/2025/06/tableau-bord-prestashop-9-scaled.png"
IMG_EXPORT = f"{BASE}/wp-content/uploads/2026/06/featured-export-comptable-article-2026-dark-1.png"
IMG_STOCK = f"{BASE}/wp-content/uploads/2026/06/module-stock-prestashop-2026-featured.png"
IMG_EXPORT_LOCAL = ROOT / "assets" / "featured-export-comptable-article-2026-dark.png"
IMG_STOCK_LOCAL = ROOT / "assets" / "module-stock-prestashop-2026-featured.png"

CATEGORY_IDS = [2, 44]  # PrestaShop, E-commerce
TAG_NAMES = [
    "modules prestashop",
    "module prestashop",
    "prestashop 8",
    "prestashop 9",
    "addons prestashop",
    "e-commerce",
]


def P(slug: str) -> str:
    return f"{BASE}/produit/{slug}/"


CONTENT = f"""
<p>Tu viens d'installer <strong>PrestaShop 8 ou 9</strong> — ou tu prépares une migration depuis la 1.7 — et la première question qui revient dans tous les groupes Facebook de marchands, c'est la même : <strong>quels modules PrestaShop installer vraiment</strong> ? Entre les listes Addons datées, les modules gratuits abandonnés et les promesses marketing, difficile de distinguer l'indispensable du gadget.</p>
<p>Ce guide est la version 2026 de mon ancien article <a href="{OLD_LIST}">modules PrestaShop Addons indispensables</a>. Je l'ai entièrement refondu pour couvrir <strong>PrestaShop 8 et 9</strong>, la compatibilité PHP 8.x, les nouveaux enjeux SEO (dont le fichier <code>llms.txt</code>) et une sélection de modules que je développe ou que j'utilise sur des boutiques en production depuis plus de 15 ans.</p>
<p>Tu vas obtenir :</p>
<ul>
<li>Une <strong>définition claire</strong> de ce qu'est un module PrestaShop en 2026</li>
<li>Une <strong>matrice par besoin métier</strong> (compta, stock, SEO, logistique, conversion…)</li>
<li>Les <strong>critères de choix</strong> (sécurité, support, compatibilité PS 9, dette technique)</li>
<li>Un <strong>tableau comparatif</strong> gratuit vs payant vs sur-mesure</li>
<li>La présentation des <strong>modules de ma boutique</strong> avec liens directs</li>
<li>Une <strong>FAQ longue traîne</strong> pour les questions récurrentes des marchands</li>
</ul>
<p>Spoiler : il n'existe pas une liste universelle de 50 modules. Il existe <strong>ton</strong> stack — et ce guide t'aide à la construire sans surcharger ton back-office. Ma <a href="{BOUTIQUE}">boutique modules PrestaShop</a> regroupe les outils que j'ai conçus pour mes propres problèmes de marchand.</p>

<!--more-->

<h2>Sommaire</h2>
<ol>
<li><a href="#quest-ce-quun-module">Qu'est-ce qu'un module PrestaShop en 2026 ?</a></li>
<li><a href="#modules-natifs-vs-tiers">Modules natifs vs modules tiers</a></li>
<li><a href="#comment-choisir-module">Comment choisir un module PrestaShop (7 critères)</a></li>
<li><a href="#matrice-modules-indispensables">Matrice des modules indispensables par besoin</a></li>
<li><a href="#modules-compta-admin">Modules comptabilité et administration</a></li>
<li><a href="#modules-stock-logistique">Modules stock, achats et logistique</a></li>
<li><a href="#modules-back-office">Modules productivité back-office</a></li>
<li><a href="#modules-conversion-front">Modules conversion et vitrine</a></li>
<li><a href="#modules-seo-contenu">Modules SEO, contenu et visibilité IA</a></li>
<li><a href="#modules-service-client">Modules service client et conformité</a></li>
<li><a href="#gratuit-vs-payant">Gratuit vs payant vs Addons vs éditeur indépendant</a></li>
<li><a href="#installer-module">Installer et maintenir un module sans casser la prod</a></li>
<li><a href="#prestashop-8-vs-9">PrestaShop 8 vs 9 : impact sur tes modules</a></li>
<li><a href="#tableau-boutique-modules">Tableau des modules PrestaShop de la boutique</a></li>
<li><a href="#faq-modules-prestashop">Questions / réponses</a></li>
<li><a href="#conclusion-modules">Conclusion</a></li>
</ol>

<figure class="wp-block-image size-large"><img src="{IMG_HERO}" alt="Guide modules PrestaShop 2026 — compta, stock, SEO et logistique pour PS 8 et PS 9" width="1200" height="630" loading="lazy" /><figcaption><strong>Modules PrestaShop 2026</strong> : le guide complet pour choisir les extensions indispensables sur PS 8 et PS 9 (compta, stock, SEO, logistique).</figcaption></figure>

<h2 id="quest-ce-quun-module">1. Qu'est-ce qu'un module PrestaShop en 2026 ?</h2>
<p>Un <strong>module PrestaShop</strong> (ou « module » tout court dans l'écosystème) est une extension PHP qui s'accroche au cœur de la boutique via des <strong>hooks</strong>, des overrides ou des services Symfony (PS 8/9). Il ajoute une fonctionnalité : paiement, transport, export comptable, bandeau promo, synchronisation marketplace…</p>
<h3>1.1 Où se trouvent les modules ?</h3>
<ul>
<li><strong>Back-office natif</strong> — Menu <em>Modules &gt; Module Manager</em> : catalogue officiel, modules installés, mises à jour</li>
<li><strong>PrestaShop Addons</strong> — Marketplace historique (modules payants et gratuits vérifiés)</li>
<li><strong>Éditeurs indépendants</strong> — Développeurs comme moi qui vendent en direct (souvent avec support plus réactif)</li>
<li><strong>Sur-mesure</strong> — Module développé pour ton métier (B2B, marketplace, connecteur ERP)</li>
</ul>
<h3>1.2 Ce qu'un module n'est pas</h3>
<p>Un module n'est pas un thème (même si certains thèmes embarquent des modules). Ce n'est pas non plus un patch de sécurité officiel — méfie-toi des modules « tout-en-un » qui modifient 200 fichiers core. Pour le thème, voir mon comparatif <a href="{THEMES_GUIDE}">meilleurs thèmes PrestaShop 8 et 9 gratuits</a> et le <a href="{P('theme-prestashop-1-7-responsive-blck')}">thème BLCK responsive PS 1.7 / 8 / 9</a>.</p>

<h2 id="modules-natifs-vs-tiers">2. Modules natifs vs modules tiers</h2>
<p>PrestaShop 8/9 embarque déjà des modules « natifs » maintenus par l'équipe core ou des partenaires :</p>
<table>
<thead><tr><th>Domaine</th><th>Natif PrestaShop</th><th>Limite fréquente</th><th>Quand un module tiers ?</th></tr></thead>
<tbody>
<tr><td><strong>Paiement</strong></td><td>PrestaShop Checkout, virement</td><td>Règles métier B2B, échéanciers</td><td>Multi-PSP, facturation pro</td></tr>
<tr><td><strong>Transport</strong></td><td>Transporteurs basiques</td><td>Multi-colis, points relais avancés</td><td>Colissimo/Chronopost poussé, WMS</td></tr>
<tr><td><strong>SEO</strong></td><td>URLs, meta de base</td><td>Maillage, rich snippets, llms.txt</td><td>Module SEO dédié ou dev</td></tr>
<tr><td><strong>Comptabilité</strong></td><td>Export commandes brut</td><td>Pas d'écritures comptables</td><td><a href="{P('module-export-comptable-pour-prestashop')}">Module export comptable</a></td></tr>
<tr><td><strong>Stock</strong></td><td>Gestion stock simple</td><td>Réappro, prévisions</td><td><a href="{P('module-outil-de-stock-et-previsions-des-achats-pour-prestashop')}">Module stock &amp; achats</a></td></tr>
<tr><td><strong>Statistiques</strong></td><td>Tableau de bord basique</td><td>Attribution, cohortes</td><td>GA4 + article <a href="{STATS}">meilleur module statistiques</a></td></tr>
</tbody>
</table>
<p>La règle pragmatique : commence natif, ajoute un module tiers quand tu as <strong>mesuré une douleur</strong> (temps perdu, erreurs, CA perdu) — pas parce qu'un article liste 30 extensions.</p>

<h2 id="comment-choisir-module">3. Comment choisir un module PrestaShop (7 critères)</h2>
<p>Avant d'acheter ou d'installer un module, passe ces 7 filtres — c'est la méthode que j'applique sur les boutiques que j'accompagne en <a href="{FREELANCE}">freelance PrestaShop</a> :</p>
<ol>
<li><strong>Compatibilité PS 8 / 9 et PHP 8.1+</strong> — Vérifie la fiche (version testée, changelog récent). Un module non maintenu depuis 2023 sur PS 9 = risque.</li>
<li><strong>Dette d'overrides</strong> — Privilégie les modules qui utilisent les hooks modernes plutôt que de remplacer des classes core.</li>
<li><strong>Sécurité et RGPD</strong> — Données exportées, accès API, conformité. Ma <a href="{SECURITE}">politique de sécurité thèmes et modules</a> détaille ce que je m'engage à respecter sur mes propres modules.</li>
<li><strong>Support et documentation</strong> — FAQ, vidéos, délai de réponse. Un module à 50 € sans SAV coûte cher en temps interne.</li>
<li><strong>Performance</strong> — Chaque module ajoute du PHP/SQL/JS. Évite les usines à gaz « 200 fonctions » dont tu n'utilises que 3.</li>
<li><strong>Multiboutique / multilingue</strong> — Si tu es concerné, teste en recette avant prod. Voir aussi <a href="{MULTIBOUTIQUE}">éviter le duplicate content multiboutique</a>.</li>
<li><strong>Sortie possible</strong> — Peux-tu désinstaller sans laisser des tables fantômes ? Exportes-tu tes données ?</li>
</ol>

<figure class="wp-block-image size-large"><img src="{IMG_BO}" alt="Back-office PrestaShop 9 — gestion des modules installés" width="1200" height="675" loading="lazy" /><figcaption>Le Module Manager PrestaShop 9 : point de départ pour auditer ce qui est installé — et désinstaller l'inutile.</figcaption></figure>

<h2 id="matrice-modules-indispensables">4. Matrice des modules indispensables par besoin</h2>
<p>Voici la matrice que je recommande en 2026 pour une boutique PrestaShop PME / ETI. « Indispensable » = fort impact métier ; « Recommandé » = utile selon contexte ; « Optionnel » = nice-to-have.</p>
<table>
<thead><tr><th>Besoin métier</th><th>Indispensable</th><th>Module boutique Arnaud Merigeau</th></tr></thead>
<tbody>
<tr><td><strong>Export comptable mensuel</strong></td><td>Oui dès ~50 cmd/mois</td><td><a href="{P('module-export-comptable-pour-prestashop')}">Export Comptable CSV</a></td></tr>
<tr><td><strong>Gestion stock &amp; réappro</strong></td><td>Oui si stock physique</td><td><a href="{P('module-outil-de-stock-et-previsions-des-achats-pour-prestashop')}">Stock &amp; prévisions achats</a></td></tr>
<tr><td><strong>Préparation commandes / picking</strong></td><td>Oui si entrepôt</td><td><a href="{P('module-picking-preparation-de-commande-pour-prestashop')}">Picking &amp; préparation</a></td></tr>
<tr><td><strong>Suivi colis client</strong></td><td>Recommandé</td><td><a href="{P('module-prestashop-suivi-colis-la-poste-colissimo-chronopost')}">Suivi Colissimo / Chronopost</a> + <a href="{P('module-prestashop-numeros-suivi-multiples-commande')}">suivis multiples</a></td></tr>
<tr><td><strong>Productivité back-office</strong></td><td>Recommandé</td><td><a href="{P('module-commande-rapide-en-back-office-pour-prestashop')}">Commande rapide BO</a>, <a href="{P('module-store-commander-gratuit')}">Store Commander gratuit</a></td></tr>
<tr><td><strong>SEO technique</strong></td><td>Indispensable</td><td><a href="{P('module-seo-pour-prestashop')}">Module SEO</a>, <a href="{P('module-prestashop-generation-llms-txt')}">Génération LLMS.txt</a></td></tr>
<tr><td><strong>Conversion vitrine</strong></td><td>Recommandé</td><td><a href="{P('module-preuve-sociale-social-proof-prestashop')}">Preuve sociale</a>, <a href="{P('module-bandeau-promo-pour-prestashop')}">Bandeau promo</a></td></tr>
<tr><td><strong>Marketplace Choose</strong></td><td>Si tu vends sur Choose</td><td><a href="{P('module-prestashop-synchronisation-choose')}">Sync Choose</a></td></tr>
<tr><td><strong>Catalogue riche (PIM)</strong></td><td>SI &gt; 5 000 SKU</td><td>Page <a href="{PIM}">PIM PrestaShop</a> + prestation sur-mesure</td></tr>
</tbody>
</table>
<p>Cette matrice est le fil conducteur du reste de l'article. Chaque section détaille le besoin, les alternatives et le lien vers la fiche produit quand je propose une solution.</p>

<h2 id="modules-compta-admin">5. Modules comptabilité et administration</h2>
<h3>5.1 Pourquoi c'est indispensable</h3>
<p>PrestaShop enregistre des <strong>commandes</strong>. Ton expert-comptable attend des <strong>écritures</strong> : comptes produits, TVA collectée, journal des ventes, avoirs. Sans module dédié, tu retraites Excel chaque mois — source d'erreurs et de retards de clôture.</p>
<h3>5.2 Ce qu'il faut vérifier</h3>
<ul>
<li>Mapping comptes par produit, catégorie, taxe, transporteur, moyen de paiement</li>
<li>Gestion des <strong>avoirs</strong> et remboursements partiels</li>
<li>Export planifié (cron) + envoi e-mail au cabinet</li>
<li>Format compatible (CSV, Cegid Quadra, Sage selon cabinet)</li>
<li>Compatibilité <strong>multiboutique</strong></li>
</ul>
<h3>5.3 Module recommandé</h3>
<p>Le <a href="{P('module-export-comptable-pour-prestashop')}"><strong>Module Export Comptable CSV pour PrestaShop</strong></a> (compatible PS 1.7 à 9) couvre export comptabilité, journal des paiements, mapping avancé, cron mensuel et format Quadra. Guide détaillé : <a href="{EXPORT_GUIDE}">export comptable PrestaShop 2026</a>.</p>
<figure class="wp-block-image size-large"><img src="{IMG_EXPORT}" alt="Module PrestaShop Export Comptable CSV — de vos commandes au fichier comptable en 1 clic" width="1200" height="750" loading="lazy" /><figcaption><strong>Export comptable PrestaShop</strong> : comptes, TVA, avoirs et cron mensuel — le fichier que ton cabinet importe sans retraitement Excel.</figcaption></figure>

<h2 id="modules-stock-logistique">6. Modules stock, achats et logistique</h2>
<h3>6.1 Limites du stock natif</h3>
<p>Le stock PrestaShop gère les quantités et les mouvements basiques. Il ne te dit pas <strong>quoi racheter</strong>, quand, ni chez quel fournisseur — ni ne projette tes ruptures sur 30 jours.</p>
<h3>6.2 Stack logistique recommandée</h3>
<ul>
<li><strong>Stock &amp; prévisions d'achats</strong> — <a href="{P('module-outil-de-stock-et-previsions-des-achats-pour-prestashop')}">Module outil de stock et prévisions des achats</a> : seuils, suggestions de commande fournisseur, vue réappro.</li>
<li><strong>Picking / préparation</strong> — <a href="{P('module-picking-preparation-de-commande-pour-prestashop')}">Module picking &amp; préparation de commande</a> : listes de picking, statuts préparation, moins d'erreurs expédition.</li>
<li><strong>Suivi colis</strong> — <a href="{P('module-prestashop-suivi-colis-la-poste-colissimo-chronopost')}">Suivi La Poste / Colissimo / Chronopost</a> pour le mail client ; <a href="{P('module-prestashop-numeros-suivi-multiples-commande')}">numéros de suivi multiples</a> si tu expédies en plusieurs colis.</li>
<li><strong>Marketplace Choose</strong> — <a href="{P('module-prestashop-synchronisation-choose')}">Synchronisation Choose</a> : import commandes marketplace en cron.</li>
</ul>
<figure class="wp-block-image size-large"><img src="{IMG_STOCK}" alt="Module PrestaShop stock et prévisions d'achats — alertes rupture et réappro fournisseur" width="1200" height="750" loading="lazy" /><figcaption><strong>Stock &amp; prévisions d'achats</strong> : seuils, alertes rupture et suggestions de commande fournisseur — avant d'être en rupture.</figcaption></figure>

<h2 id="modules-back-office">7. Modules productivité back-office</h2>
<p>Si tu passes plus de 2 h/jour dans le back-office, ces modules changent la donne :</p>
<ul>
<li><strong><a href="{P('module-commande-rapide-en-back-office-pour-prestashop')}">Commande rapide en back-office</a></strong> — Créer des commandes téléphone / B2B sans parcourir le front. Indispensable pour le SAV et les ventes assistées.</li>
<li><strong><a href="{P('module-store-commander-gratuit')}">Store Commander gratuit</a></strong> — Édition de masse catalogue (prix, stocks, descriptions). Alternative légère avant la version payante.</li>
<li><strong><a href="{P('module-recherche-produits-par-commande-pour-prestashop')}">Recherche produits par commande</a></strong> — Retrouver rapidement quelles commandes contiennent une référence (SAV, rappels produits).</li>
<li><strong><a href="{P('module-prestashop-commandes-groupees-invitations')}">Commandes groupées avec invitations e-mail</a></strong> — Achats groupés, ventes entre collègues ou associations.</li>
</ul>
<p>Besoin d'aide à l'installation ? Le <a href="{TICKET}">ticket d'intervention PrestaShop / WordPress</a> permet une prise en main rapide.</p>

<h2 id="modules-conversion-front">8. Modules conversion et vitrine</h2>
<p>Ces modules n'ajoutent pas de fonction « métier » back-office mais améliorent le taux de conversion et la clarté du catalogue :</p>
<ul>
<li><strong><a href="{P('module-preuve-sociale-social-proof-prestashop')}">Preuve sociale</a></strong> — Notifications d'achats récents, compteurs visiteurs (à utiliser avec éthique — pas de faux achats).</li>
<li><strong><a href="{P('module-bandeau-promo-pour-prestashop')}">Bandeau promo</a></strong> — Annonces livraison offerte, soldes, délais — sans modifier le thème.</li>
<li><strong><a href="{P('module-prestashop-badges-flags-produits-personnalises')}">Badges &amp; flags produits</a></strong> — « Made in France », « Nouveau », « Promo » sur les miniatures.</li>
<li><strong><a href="{P('module-prestashop-meilleures-ventes-par-categories')}">Meilleures ventes par catégories</a></strong> — Blocs bestsellers ciblés par rayon.</li>
<li><strong><a href="{P('block-categories-sur-la-page-daccueil-prestashop')}">Block catégories accueil</a></strong> — Navigation visuelle vers tes univers produits.</li>
<li><strong><a href="{P('module-message-dinformation-pour-prestashop')}">Message d'information</a></strong> — Bandeaux contextuels (congés, délais exceptionnels).</li>
</ul>
<p>Pour la recherche front avancée (facettes, typo, IA), compare les moteurs dédiés — j'ai publié un avis terrain sur <a href="{DOOFINDER}">Doofinder pour PrestaShop</a>.</p>

<h2 id="modules-seo-contenu">9. Modules SEO, contenu et visibilité IA</h2>
<p>Le SEO PrestaShop en 2026 ne se limite plus aux balises title. Google Search Console, données structurées et désormais les crawlers IA (ChatGPT, Perplexity…) lisent aussi ton site.</p>
<h3>9.1 SEO technique</h3>
<ul>
<li><strong><a href="{P('module-seo-pour-prestashop')}">Module SEO pour PrestaShop</a></strong> — Meta, redirections, maillage — complément au travail éditorial.</li>
<li><strong><a href="{P('module-prestashop-modification-robots-txt')}">Modification robots.txt</a></strong> — Contrôle fin du crawl sans FTP.</li>
<li>Guide méthodo : <a href="{GSC_GUIDE}">Google Search Console pour PrestaShop</a>.</li>
</ul>
<h3>9.2 Contenu et longue traîne</h3>
<ul>
<li><strong><a href="{P('module-lexique-definitions-pour-prestashop')}">Lexique / définitions</a></strong> — Pages glossaire pour le SEO sémantique.</li>
<li><strong><a href="{P('module-prestashop-faq-questions-frequentes')}">FAQ catégories et marques</a></strong> — Accordéons FAQ sur les pages rayon (rich snippets possibles).</li>
</ul>
<h3>9.3 Visibilité IA — fichier llms.txt</h3>
<p>Le fichier <code>llms.txt</code> aide les LLM à comprendre la structure de ton site. Le <a href="{P('module-prestashop-generation-llms-txt')}">Module génération LLMS.txt</a> l'automatise depuis le back-office PrestaShop — niche aujourd'hui, standard demain.</p>

<h2 id="modules-service-client">10. Modules service client et conformité</h2>
<ul>
<li><strong><a href="{P('module-prestashop-brouillon-reponse-service-client')}">Brouillons de réponse service client</a></strong> — Modèles de réponses SAV dans le BO.</li>
<li><strong><a href="{P('module-prestashop-codes-hs-pays-origine-produits')}">Codes HS et pays d'origine</a></strong> — Conformité douanière et fiches produits export.</li>
</ul>
<p>Ces modules sont souvent ignorés dans les listes « top 20 Addons » — pourtant ils réduisent le temps SAV et les erreurs conformité sur l'export.</p>

<h2 id="gratuit-vs-payant">11. Gratuit vs payant vs Addons vs éditeur indépendant</h2>
<table>
<thead><tr><th>Source</th><th>Avantages</th><th>Risques</th><th>Mon avis 2026</th></tr></thead>
<tbody>
<tr><td><strong>Gratuit Addons / GitHub</strong></td><td>Coût zéro, test rapide</td><td>Abandon, failles sécurité, pas de support PS 9</td><td>OK pour POC, pas pour prod critique</td></tr>
<tr><td><strong>Payant Addons</strong></td><td>Large choix, reviews</td><td>Commission, modules génériques « usine »</td><td>Bien pour paiement / transport standard</td></tr>
<tr><td><strong>Éditeur indépendant</strong></td><td>Support direct, roadmap claire</td><td>Moins de visibilité marketplace</td><td>Idéal pour besoins métier e-commerce</td></tr>
<tr><td><strong>Sur-mesure</strong></td><td>Fit 100 %</td><td>Coût dev + maintenance</td><td>SI aucun module ne couvre ton process</td></tr>
</tbody>
</table>
<p>Ma <a href="{BOUTIQUE}">boutique modules PrestaShop &amp; plugins WordPress</a> est dans la catégorie « éditeur indépendant » : je suis marchand avant d'être développeur — chaque module résout un problème que j'ai eu sur mes propres boutiques.</p>

<h2 id="installer-module">12. Installer et maintenir un module sans casser la prod</h2>
<ol>
<li><strong>Staging obligatoire</strong> — Jamais de premier install en prod un vendredi à 17 h.</li>
<li><strong>Backup fichiers + BDD</strong> avant toute installation.</li>
<li><strong>Lire le changelog</strong> — Surtout sur PS 9 (hooks Symfony, PHP 8.2).</li>
<li><strong>Tester le tunnel complet</strong> — Panier, paiement, mail, export si module métier.</li>
<li><strong>Documenter ta config</strong> — Captures des onglets module pour reprise en cas de crash.</li>
<li><strong>Planifier les mises à jour</strong> — Un module obsolète = vecteur de faille (voir <a href="{P('ticket-correction-faille-de-securite-phpunit-cve-2017-9841-pour-prestashop')}">correctif sécurité PHPUnit</a> sur les vieilles installs).</li>
</ol>
<p>En migration 1.7 → 8/9, audite chaque module installé : compatible, à remplacer, ou à abandonner. Checklist complète : <a href="{MIGRATION}">migration PrestaShop sans perdre le SEO</a>.</p>

<h2 id="prestashop-8-vs-9">13. PrestaShop 8 vs 9 : impact sur tes modules</h2>
<p>En 2026, si tu es encore en <strong>1.7</strong>, la priorité est la migration — pas l'empilement de nouveaux modules. Si tu es en <strong>8</strong>, vérifie que tes modules annoncent PS 9 dans leur roadmap pour éviter une double migration.</p>
<ul>
<li><strong>PS 9</strong> — Symfony plus présent, PHP 8.1 minimum, nouvelles contraintes sur les hooks et le back-office.</li>
<li><strong>Tests à faire en recette</strong> — Paiement, transport, exports cron, mails transactionnels, modules avec overrides.</li>
<li><strong>Ressource</strong> — <a href="{PS9}">PrestaShop 9 : nouveautés et feuille de route</a>.</li>
</ul>

<h2 id="tableau-boutique-modules">14. Tableau des modules PrestaShop de la boutique</h2>
<p>Retrouve l'ensemble de ma sélection sur la <a href="{CAT_PS}">catégorie Thèmes et modules PrestaShop</a> ou directement sur la <a href="{BOUTIQUE}">boutique</a>. Tableau récapitulatif :</p>
<table>
<thead><tr><th>Module</th><th>Usage principal</th><th>Fiche produit</th></tr></thead>
<tbody>
<tr><td>Export Comptable CSV</td><td>Compta, export mensuel, Quadra</td><td><a href="{P('module-export-comptable-pour-prestashop')}">Voir le module</a></td></tr>
<tr><td>Stock &amp; prévisions achats</td><td>Réappro, seuils, commandes fournisseur</td><td><a href="{P('module-outil-de-stock-et-previsions-des-achats-pour-prestashop')}">Voir le module</a></td></tr>
<tr><td>Picking &amp; préparation</td><td>Entrepôt, listes picking</td><td><a href="{P('module-picking-preparation-de-commande-pour-prestashop')}">Voir le module</a></td></tr>
<tr><td>Commande rapide BO</td><td>Commandes téléphone / SAV</td><td><a href="{P('module-commande-rapide-en-back-office-pour-prestashop')}">Voir le module</a></td></tr>
<tr><td>Store Commander gratuit</td><td>Édition masse catalogue</td><td><a href="{P('module-store-commander-gratuit')}">Voir le module</a></td></tr>
<tr><td>Suivi colis</td><td>Tracking La Poste / Colissimo</td><td><a href="{P('module-prestashop-suivi-colis-la-poste-colissimo-chronopost')}">Voir le module</a></td></tr>
<tr><td>Suivis multiples</td><td>Multi-colis par commande</td><td><a href="{P('module-prestashop-numeros-suivi-multiples-commande')}">Voir le module</a></td></tr>
<tr><td>Sync Choose</td><td>Import commandes marketplace</td><td><a href="{P('module-prestashop-synchronisation-choose')}">Voir le module</a></td></tr>
<tr><td>Module SEO</td><td>SEO technique</td><td><a href="{P('module-seo-pour-prestashop')}">Voir le module</a></td></tr>
<tr><td>Génération LLMS.txt</td><td>Visibilité IA / crawlers</td><td><a href="{P('module-prestashop-generation-llms-txt')}">Voir le module</a></td></tr>
<tr><td>Preuve sociale</td><td>Conversion, social proof</td><td><a href="{P('module-preuve-sociale-social-proof-prestashop')}">Voir le module</a></td></tr>
<tr><td>Bandeau promo</td><td>Annonces marketing header</td><td><a href="{P('module-bandeau-promo-pour-prestashop')}">Voir le module</a></td></tr>
<tr><td>Badges &amp; flags</td><td>Étiquettes produits visuelles</td><td><a href="{P('module-prestashop-badges-flags-produits-personnalises')}">Voir le module</a></td></tr>
<tr><td>FAQ catégories / marques</td><td>Contenu SEO + SAV</td><td><a href="{P('module-prestashop-faq-questions-frequentes')}">Voir le module</a></td></tr>
<tr><td>Lexique</td><td>Glossaire SEO</td><td><a href="{P('module-lexique-definitions-pour-prestashop')}">Voir le module</a></td></tr>
<tr><td>Thème BLCK</td><td>Thème responsive PS 8/9</td><td><a href="{P('theme-prestashop-1-7-responsive-blck')}">Voir le thème</a></td></tr>
</tbody>
</table>

<h2 id="faq-modules-prestashop">15. Questions / réponses</h2>

<h3>Quels sont les modules PrestaShop indispensables en 2026 ?</h3>
<p>Au minimum : un module de <strong>paiement</strong> fiable, un <strong>transporteur</strong> adapté à ton marché, une solution d'<strong>export comptable</strong> si tu dépasses quelques dizaines de commandes par mois, et un socle <strong>SEO</strong> (Search Console + meta propres). Le reste dépend de ton métier : stock physique, marketplace, B2B…</p>

<h3>Où télécharger des modules PrestaShop gratuits ?</h3>
<p>Depuis le back-office (<em>Modules &gt; Module Manager &gt; Catalogue</em>) ou PrestaShop Addons. Méfie-toi des sites tiers qui redistribuent des ZIP non vérifiés. Pour une sélection commentée, voir ma <a href="{BOUTIQUE}">boutique</a> et ce guide.</p>

<h3>Les modules PrestaShop Addons sont-ils sûrs ?</h3>
<p>Addons applique une validation, mais ce n'est pas une garantie absolue. Vérifie la date de dernière mise à jour, les avis récents et la compatibilité PS 9. Consulte aussi ma <a href="{SECURITE}">politique de sécurité</a>.</p>

<h3>Combien de modules peut-on installer sans ralentir la boutique ?</h3>
<p>Il n'y a pas de chiffre magique. 5 modules lourds peuvent être pires que 20 modules légers. Mesure avec PageSpeed et le temps de réponse TTFB. Désinstalle ce que tu n'utilises plus.</p>

<h3>Un module PrestaShop est-il compatible PrestaShop 9 ?</h3>
<p>Seulement si l'éditeur l'annonce explicitement dans sa fiche et son changelog. Avant migration, teste chaque module en staging. Guide : <a href="{MIGRATION}">migration 1.7 → 8/9</a> et page <a href="{PS9}">PrestaShop 9</a>.</p>

<h3>Module gratuit ou payant : que choisir ?</h3>
<p>Gratuit pour tester une fonction non critique. Payant (ou éditeur indépendant) dès que le module touche à la compta, au stock, au paiement ou au SEO — là, le coût d'une panne dépasse largement le prix de licence.</p>

<h3>Quel module pour l'export comptable PrestaShop ?</h3>
<p>PrestaShop n'exporte pas nativement un journal comptable structuré. Le <a href="{P('module-export-comptable-pour-prestashop')}">Module Export Comptable CSV</a> génère des fichiers mappés (comptes, TVA, avoirs, cron). Guide : <a href="{EXPORT_GUIDE}">export comptable 2026</a>.</p>

<h3>Quel module pour la gestion de stock PrestaShop ?</h3>
<p>Si tu gères un stock physique avec réapprovisionnement, le module natif suffit rarement. Le <a href="{P('module-outil-de-stock-et-previsions-des-achats-pour-prestashop')}">module stock et prévisions d'achats</a> complète le natif avec des suggestions de commande fournisseur.</p>

<h3>Existe-t-il un module SEO PrestaShop efficace ?</h3>
<p>Le SEO repose d'abord sur le contenu, la technique et Search Console. Un <a href="{P('module-seo-pour-prestashop')}">module SEO</a> aide sur les meta et redirections ; le <a href="{P('module-prestashop-generation-llms-txt')}">module LLMS.txt</a> prépare la visibilité IA. Méthodo : <a href="{GSC_GUIDE}">guide Search Console</a>.</p>

<h3>Comment installer un module PrestaShop manuellement ?</h3>
<p>Zip via Module Manager, ou upload FTP dans <code>/modules/</code> puis installation BO. En cas de doute, passe par un <a href="{TICKET}">ticket d'intervention</a> ou un <a href="{FREELANCE}">freelance PrestaShop</a>.</p>

<h3>Peut-on utiliser un module PrestaShop 1.7 sur PrestaShop 9 ?</h3>
<p>Non, sauf si l'éditeur fournit une version dédiée PS 8/9. Les overrides 1.7 cassent souvent sur Symfony. Ne force jamais l'installation — cherche une alternative à jour.</p>

<h3>Quels modules pour une multiboutique PrestaShop ?</h3>
<p>Vérifie le flag multiboutique sur chaque module (export comptable, stock, SEO). Attention au duplicate content — article : <a href="{MULTIBOUTIQUE}">multiboutique et SEO</a>.</p>

<h3>Où trouver des modules PrestaShop développés par un e-commerçant ?</h3>
<p>Sur ma <a href="{BOUTIQUE}">boutique en ligne</a> : chaque module est né d'un besoin terrain (compta, stock, logistique, SEO). Tu bénéficies du support direct de l'auteur.</p>

<h2 id="conclusion-modules">16. Conclusion</h2>
<p>Les <strong>modules PrestaShop</strong> ne sont pas une collection à compléter — c'est une <strong>stack métier</strong> à construire. En 2026, sur PS 8 ou 9, concentre-toi sur :</p>
<ol>
<li><strong>Compta et admin</strong> — ne perds plus de demi-journées en Excel</li>
<li><strong>Stock et logistique</strong> — si tu expédies physiquement</li>
<li><strong>SEO et contenu</strong> — Search Console, données structurées, llms.txt</li>
<li><strong>Conversion</strong> — preuve sociale, promos, clarté catalogue</li>
</ol>
<p>Parcours ma <a href="{BOUTIQUE}"><strong>boutique modules PrestaShop</strong></a>, teste les démos quand elles sont disponibles, et pose-moi tes questions via <a href="{CONTACT}">contact</a> si tu hésites entre deux modules pour ton cas.</p>
<p>Tu veux aller plus loin sur un sujet précis ? Les prochains guides détaillés couvriront le <strong>stock &amp; réappro</strong>, le <strong>back-office productif</strong> et le <strong>SEO / LLMS.txt</strong> — reste sur le <a href="{BASE}/category/prestashop/">blog PrestaShop</a>.</p>
"""


def get_or_create_tag(base: str, user: str, password: str, name: str) -> int:
    slug = name.lower().replace(" ", "-")
    lookup = f"{base}/wp-json/wp/v2/tags?slug={urllib.parse.quote(slug)}"
    _, tags = wp_client._request("GET", lookup, user, password)
    if tags:
        return int(tags[0]["id"])
    _, tag = wp_client._request(
        "POST",
        f"{base}/wp-json/wp/v2/tags",
        user,
        password,
        data=json.dumps({"name": name, "slug": slug}).encode("utf-8"),
        headers={"Content-Type": "application/json"},
    )
    return int(tag["id"])


def upload_featured_image(base: str, user: str, password: str) -> int | None:
    if not IMG_HERO_LOCAL.is_file():
        return find_media_by_filename(base, user, password, "guide-modules-prestashop-2026-featured")
    media = wp_client.upload_media(
        base,
        user,
        password,
        IMG_HERO_LOCAL,
        alt_text="Guide modules PrestaShop indispensables 2026 — PS 8 et PS 9",
        title="Guide modules PrestaShop 2026 — image à la une",
    )
    return int(media["id"])


def find_media_by_filename(base: str, user: str, password: str, needle: str) -> int | None:
    q = urllib.parse.quote(needle)
    _, items = wp_client._request(
        "GET",
        f"{base}/wp-json/wp/v2/media?search={q}&per_page=5",
        user,
        password,
    )
    if not items:
        return None
    return int(items[0]["id"])


def main() -> int:
    cfg = load_config()
    base = cfg.wp_base_url.rstrip("/")

    featured_id = upload_featured_image(base, cfg.wp_user, cfg.wp_application_password)

    tag_ids = [
        get_or_create_tag(base, cfg.wp_user, cfg.wp_application_password, name)
        for name in TAG_NAMES
    ]

    post = wp_client.create_post(
        base,
        cfg.wp_user,
        cfg.wp_application_password,
        title=TITLE,
        content=CONTENT.strip(),
        excerpt=EXCERPT,
        status="draft",
        slug=SLUG,
        featured_media_id=featured_id,
        yoast_title=YOAST_TITLE,
        yoast_description=YOAST_DESC,
        yoast_focus=FOCUS,
        author=cfg.wp_author_id,
    )

    post_id = post.get("id")
    if post_id:
        extra = {
            "categories": CATEGORY_IDS,
            "tags": tag_ids,
            "meta": {
                "_yoast_wpseo_title": YOAST_TITLE,
                "_yoast_wpseo_metadesc": YOAST_DESC,
                "_yoast_wpseo_focuskw": FOCUS,
                "_yoast_wpseo_linkdex": "78",
            },
        }
        _, post = wp_client._request(
            "POST",
            f"{base}/wp-json/wp/v2/posts/{post_id}",
            cfg.wp_user,
            cfg.wp_application_password,
            data=json.dumps(extra).encode("utf-8"),
            headers={"Content-Type": "application/json"},
        )

    print(f"Brouillon pilier modules PrestaShop créé — ID {post.get('id')}")
    print(f"URL : {post.get('link')}")
    print(f"Statut : {post.get('status')}")
    if featured_id:
        print(f"Image à la une : media ID {featured_id}")
    print(f"Catégories : {CATEGORY_IDS}")
    print(f"Tags : {TAG_NAMES}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
