Expertise PrestaShop
11 ans de solutions techniques concrètes. Développement, performance, migration, sécurité — tout ce que j'ai appris sur le terrain.
196
articles
15
thèmes
Développement
61 articlesModules, hooks, overrides, Symfony, API
Ajouter un loader lors de la soumission de commande PrestaShop
Pour ajouter un loader au tunnel de commande PrestaShop, injectez un script JavaScript (protégé par {literal} en Smarty) qui affiche un overlay au submit du formulaire de paiement et désactive le bouton pour éviter les doubles commandes. En PrestaShop 8.x, privilégiez un module avec le hook actionFrontControllerSetMedia.
Créer un select dynamique dans un template Smarty PrestaShop
Pour créer un select dynamique dans un template Smarty PrestaShop, utilisez soit les méthodes statiques natives (comme Supplier::getSuppliers()), soit un ObjectModel personnalisé avec DbQuery, en assignant les données via le controller plutôt que par appel direct dans le .tpl.
Générer un PDF dans un module PrestaShop : guide complet
Pour générer un PDF dans PrestaShop, évitez AJAX et utilisez une URL directe vers un contrôleur dédié qui envoie le fichier avec les bons en-têtes HTTP. Créez un ModuleFrontController qui récupère l'ID commande via Tools::getValue(), vérifie les droits d'accès, puis appelle la classe PDF native ou TCPDF pour le rendu.
Activer la navigation à facettes sur la page d'accueil PrestaShop
Le module de navigation à facettes PrestaShop ne fonctionne pas sur la page d'accueil car il nécessite un contexte de catégorie. Deux solutions : rediriger la homepage vers une catégorie via un override d'IndexController, ou créer un module compagnon qui injecte le contexte catégorie et délègue le rendu au module de filtrage.
Fatal error Class FrontController not found dans un module PrestaShop
L'erreur « Class FrontController not found » dans un module PrestaShop est causée par un non-respect de la convention de nommage stricte des contrôleurs front. La classe doit impérativement s'appeler {nomdumodule}{Controleur}ModuleFrontController, sans underscores dans le nom du module, et étendre ModuleFrontController.
Gérer les traductions templates Smarty dans PrestaShop
Pour rendre un texte traduisible dans un template Smarty PrestaShop, utilisez la fonction {l s='Votre texte' mod='nom_module'} au lieu d'écrire le texte en dur. La chaîne devient alors éditable depuis le back-office dans International → Traductions.
Récupérer des variables dans les URLs simplifiées PrestaShop
Les URLs simplifiées PrestaShop reposent sur le Dispatcher qui utilise des expressions régulières pour extraire les identifiants de chaque URL. Pour ajouter des variables personnalisées, privilégiez le hook moduleRoutes dans un module plutôt que des règles .htaccess, afin de garantir la pérennité et la compatibilité avec la génération de liens.
Arrondir un prix en Smarty dans PrestaShop : ceil, round et math
Pour arrondir un prix au centime supérieur en Smarty, utilisez {math equation='ceil(a*100)/100' a=$variable}. En PrestaShop 8.x, préférez Tools::ps_round() côté PHP avec la constante PS_ROUND_UP pour respecter les règles d'arrondi de la boutique.
Override du CategoryController dans PrestaShop : guide complet
Pour overrider le CategoryController dans PrestaShop, créez le fichier override/controllers/front/CategoryController.php avec une classe étendant CategoryControllerCore, puis supprimez le cache class_index.php. Sur PrestaShop 8.x, les hooks de contrôleur sont une alternative plus maintenable.
Ajouter un champ personnalisé aux fiches produits PrestaShop
Pour ajouter un champ personnalisé aux produits PrestaShop, il faut intervenir à quatre niveaux : colonne SQL dans ps_product_lang, override de la classe Product (ObjectModel), intégration au formulaire back-office, et affichage front-office via Smarty. En PS 8.x, préférez un module avec hooks Symfony.
Afficher le fabricant sur les meilleures ventes PrestaShop
Pour afficher le fabricant dans le module meilleures ventes PrestaShop, créez un override de ProductSale::getBestSalesLight() ajoutant un LEFT JOIN sur ps_manufacturer, puis exploitez la variable manufacturer_name dans votre template Smarty.
Créer un champ multilingue dans un AdminController PrestaShop
Pour créer un champ multilingue dans un AdminController PrestaShop, trois éléments sont indispensables : une table `_lang` en base de données avec clé composite, un ObjectModel déclaré avec `'multilang' => true` et `'lang' => true` sur chaque champ traduisible, et le paramètre `'lang' => true` dans la définition du formulaire du contrôleur.
Accéder au code source de la page d'accueil PrestaShop
La page d'accueil PrestaShop est composée de plusieurs fichiers template (header.tpl, index.tpl, footer.tpl) et de modules hookés qui injectent leur propre contenu. Pour modifier un élément, il faut d'abord identifier le fichier responsable via le mode debug Smarty, puis le surcharger proprement dans un thème enfant.
Modifier l'ordre des catégories dans un menu PrestaShop
Pour corriger l'ordre des catégories dans un menu PrestaShop, remplacez `ORDER BY cl.name ASC` par `ORDER BY c.position ASC` dans la requête SQL du module de menu, ou utilisez la méthode native `Category::getChildren()` qui trie par position par défaut.
Ajouter des champs personnalisés au formulaire d'inscription PrestaShop via un module
Pour ajouter des champs au formulaire d'inscription PrestaShop, créez un module utilisant le hook additionalCustomerFormFields plutôt qu'un override de la classe Customer. Cette approche est compatible 1.7 à 8.x, sans conflit entre modules et désinstallable proprement.
Changer l'ordre des champs du formulaire d'adresse PrestaShop
Pour réorganiser les champs du formulaire d'adresse PrestaShop, modifiez le template Smarty (1.6) ou surchargez le CustomerAddressFormatter via un module (1.7/8.x). Pensez impérativement à vider le cache Smarty et à vérifier que vous éditez le bon template dans la hiérarchie de votre thème.
Récupérer les personnalisations produit PrestaShop via ObjectModel
Guide complet pour créer une classe ObjectModel dédiée à la récupération des personnalisations produit PrestaShop, avec requêtes DbQuery par produit et par commande, bonnes pratiques de sécurité SQL et compatibilité 1.7/8.x.
Gérer les traductions vides dans PrestaShop : guide complet
Les traductions vides dans PrestaShop surviennent quand un module ne fournit pas de fichier de langue pour votre boutique. La solution la plus fiable est de dupliquer un fichier de traduction existant, de traduire les chaînes (manuellement ou en masse via tableur), puis de placer le résultat dans le dossier de surcharge du thème pour survivre aux mises à jour.
Intégrer un widget externe dans votre thème PrestaShop
Pour intégrer un widget externe dans PrestaShop, trois méthodes existent : l'édition directe des fichiers TPL du thème (rapide mais fragile), la création d'un module dédié avec hooks (pérenne et professionnel), ou l'utilisation du module HTML personnalisé (sans code). La méthode par module est recommandée pour sa résistance aux mises à jour et sa flexibilité.
Activer le zoom produit au clic plutôt qu'au survol sur PrestaShop
Sur PrestaShop 1.6, le zoom et le changement d'image produit au survol se modifient dans le fichier product.js du thème (ligne ~258) en remplaçant l'événement mouseover par click — sans jamais toucher à la librairie JQZoom. Sur PS 1.7+ et 8.x, le clic est souvent le comportement par défaut.
Conflit d'overrides PrestaShop : installer un module malgré une surcharge existante
Quand un module refuse de s'installer à cause d'un override déjà existant, la solution est de fusionner manuellement les deux versions de la méthode conflictuelle dans le fichier d'override global, puis de supprimer l'override du module avant de relancer l'installation.
Traduire un module PrestaShop attaché à un hook personnalisé
Pour traduire un module PrestaShop sur un hook personnalisé, utilisez la syntaxe `{l s='texte' mod='nom_module'}` dans vos templates Smarty, en veillant à échapper les apostrophes pour éviter les pages blanches, puis gérez les traductions via le back-office dans Localisation → Traductions des modules installés.
Forcer l'ID produit lors de la création dans PrestaShop
Pour forcer un id_product à la création dans PrestaShop, utilisez $product->force_id = true avant add() plutôt que des UPDATE SQL manuels qui oublient des tables et cassent l'intégrité référentielle.
Afficher le nombre de favoris (likes) sur une fiche produit PrestaShop
Pour afficher le nombre de favoris d'un produit PrestaShop, utilisez Db::getInstance()->getValue() avec un COUNT(*) sécurisé par un cast (int), jamais ExecuteS() qui retourne un tableau inutilisable directement dans Smarty.
Gérer les traductions dans les templates Smarty PrestaShop
La balise Smarty `{l}` de PrestaShop ne permet pas d'injecter directement des variables dans le paramètre `s`. Pour inclure des valeurs dynamiques dans vos traductions, utilisez le paramètre `sprintf` avec des placeholders, et gérez toutes vos traductions de manière centralisée via le back-office.
Personnaliser le formulaire de création de compte PrestaShop
Pour personnaliser le formulaire d'inscription PrestaShop, créez un module exploitant le hook `additionalCustomerFormFields` qui injecte des champs via l'API FormField, avec validation serveur et stockage dans une table dédiée — sans jamais modifier le core.
Récupérer l'ID d'une image après insertion en base PrestaShop
Pour récupérer l'ID d'une image après insertion en base PrestaShop, utilisez Db::getInstance()->Insert_ID() juste après l'INSERT. La méthode recommandée reste l'ObjectModel Image qui gère automatiquement l'ID, le multiboutique et le chemin des fichiers.
Requête AJAX onChange dans PrestaShop : select dynamique en cascade
Implémentation complète de selects en cascade avec AJAX dans PrestaShop : contrôleur AJAX avec ajaxRender(), exposition de l'URL via Smarty, et gestion JavaScript avec cache client et feedback visuel. Compatible PrestaShop 1.7 et 8.x.
Afficher un texte dynamique sous le logo selon la page PrestaShop
Pour afficher un headline dynamique sous le logo selon la page visitée, utilisez des conditions Smarty ({if $page.page_name == 'category'}) pour un besoin simple, ou créez un champ personnalisé en base de données pour une solution maintenable et éditable depuis le back-office.
Intégrer un flux de blog externe dans PrestaShop via une page CMS
Pour intégrer un blog externe dans PrestaShop, créez une page CMS dédiée et utilisez une condition Smarty dans le template pour injecter le contenu uniquement sur cette page. Attention au paramètre de déplacement JavaScript en fin de page qui peut bloquer le widget. En PrestaShop 8.x, préférez un module consommant l'API du blog pour un rendu côté serveur indexable et performant.
Personnaliser le message de confirmation de commande PrestaShop
Pour personnaliser le message de confirmation de commande PrestaShop, utilisez le système de traduction natif pour modifier les textes existants, ou surchargez le template payment_return.tpl pour ajouter du contenu. Stylisez toujours via CSS externe avec des classes dédiées, jamais en inline.
Gérer les réponses AJAX dans un module PrestaShop : validation et UX
Pour gérer différentes actions dans le callback success d'une requête AJAX PrestaShop, structurez votre réponse PHP en JSON avec un champ booléen success et un objet errors associatif, puis branchez votre logique JavaScript (désactivation du bouton, affichage ciblé des erreurs) en fonction de ce flag.
Implémenter un ScrollSpy sur vos fiches produits PrestaShop
Le ScrollSpy ajoute une navigation contextuelle sticky sur les fiches produits longues, améliorant l'UX en indiquant la section visible. Sur PrestaShop 1.6/1.7, utilisez le plugin Bootstrap natif ; sur PrestaShop 8.x, préférez l'API IntersectionObserver pour une solution sans dépendance, performante et compatible tous thèmes.
Affichage aléatoire dans PrestaShop : randomiser vos blocs Smarty
Pour afficher des blocs aléatoirement dans PrestaShop, utilisez {math equation="rand(min, max)"} en Smarty pour un résultat rapide, ou préférez ORDER BY RAND() / shuffle() côté PHP pour une solution robuste compatible avec le cache.
Afficher l'ancien prix unitaire dans PrestaShop avec Smarty
Pour afficher l'ancien prix unitaire barré dans PrestaShop, divisez le prix sans réduction par le unit_price_ratio via le plugin Smarty {math}, en déclarant toujours les variables comme paramètres nommés pour éviter les erreurs de calcul silencieuses.
Module PrestaShop sans affichage : corriger un AdminController défaillant
Un AdminController PrestaShop qui affiche une page blanche est presque toujours causé par une incohérence de nommage entre le fichier et la classe, un parent::__construct() appelé trop tôt, ou un cache class_index.php obsolète. Corrigez ces trois points et votre module fonctionnera.
Assigner un groupe client par défaut à l'inscription PrestaShop
Pour assigner un groupe client par défaut à l'inscription PrestaShop, il faut définir `id_default_group` AVANT l'appel à `add()`, puis utiliser `cleanGroups()` suivi de `addGroups()` pour gérer correctement les appartenances multiples.
Module PrestaShop qui se réenregistre sur un hook : diagnostic et solution
Quand un module PrestaShop revient systématiquement sur un hook après désenregistrement, c'est parce que sa méthode install() contient un registerHook() qui le réenregistre à chaque réinstallation. La solution : commenter cette ligne dans le fichier PHP du module, vérifier le rôle de ps_themecusto, et vider le cache.
Passer une variable Smarty dans jQuery sur PrestaShop
Pour récupérer une variable Smarty dans jQuery au sein d'une boucle foreach, utilisez les attributs HTML5 data-* pour injecter les valeurs dans le DOM, la balise {literal} pour protéger le JavaScript inline, et $(this).data('key') pour cibler l'élément précis cliqué par l'utilisateur.
Passer une variable produit (EAN13) au panier AJAX PrestaShop
Pour transmettre une variable produit (comme l'EAN13) au panier AJAX PrestaShop, utilisez des inputs cachés avec ID unique dans les boucles foreach, ou `{addJsDefL}` sur la fiche produit. En PrestaShop 8, préférez `Media::addJsDef()` dans un hook de module.
Créer un module dashboard PrestaShop avec requêtes SQL personnalisées
Créez un module PrestaShop qui affiche des données SQL personnalisées dans le tableau de bord via le hook dashboardZoneTwo, en utilisant DbQuery pour des requêtes sécurisées et un template Smarty pour le rendu.
Supprimer le logo et le pied de page des factures PDF PrestaShop
Pour supprimer le logo et le pied de page des factures PrestaShop, créez un override de HTMLTemplate qui retourne une chaîne vide dans getLogo() et getFooter(). Sur PS 8.x, privilégiez un module embarquant l'override pour une meilleure maintenabilité.
Afficher delivery_out_stock dans le panier PrestaShop
Pour afficher delivery_out_stock dans le panier PrestaShop, il faut overrider Cart.php pour ajouter ce champ à la requête SQL de getProducts(). Le piège principal est un décalage d'id_lang qui rend la variable vide — vérifiez que le contenu est rempli pour toutes les langues actives.
Ajouter un champ personnalisé au formulaire d'inscription PrestaShop
Pour ajouter un champ personnalisé (comme une case 'majeur') au formulaire d'inscription PrestaShop, il faut modifier la base de données, déclarer le champ dans l'objet Customer, override le contrôleur AuthController pour la validation et le message d'erreur, puis ajouter le HTML dans le template — sur PrestaShop 8.x, privilégiez un module avec les hooks Symfony plutôt qu'un override.
Variable $page_name et ID du body dans PrestaShop : diagnostic complet
L'absence de l'attribut id sur la balise body dans PrestaShop provient généralement d'un header.tpl modifié ou d'un contrôleur qui n'assigne pas la variable $page_name. Le diagnostic passe par l'affichage direct de la variable et la console debug Smarty.
Intégrer du JavaScript dans une page produit PrestaShop
Pour intégrer du JavaScript sur une fiche produit PrestaShop, utilisez {literal} dans les templates Smarty en 1.6, ou créez un module avec registerJavascript via le hook actionFrontControllerSetMedia en 1.7/8.x. Évitez d'insérer du JS dans la description longue car TinyMCE le supprime.
Trier le menu PrestaShop par ordre alphabétique (blocktopmenu)
Pour trier le menu blocktopmenu (ou ps_mainmenu) par ordre alphabétique, remplacez ORDER BY `position` par ORDER BY cl.`meta_title` ASC dans getCMSPages() et ORDER BY cl.`name` ASC dans getCMSCategories(), idéalement via un override pour survivre aux mises à jour.
Mettre à jour le stock depuis hookActionValidateOrder dans PrestaShop
Pour mettre à jour le stock depuis hookActionValidateOrder, utilisez Db::getInstance()->update() ou mieux, la classe StockAvailable. Les erreurs courantes sont les colonnes dupliquées dans le tableau PHP, un hook non enregistré, ou des colonnes NOT NULL manquantes.
Déplacer le bloc recherche PrestaShop dans le menu ou le header
Pour déplacer la barre de recherche PrestaShop, créez un hook personnalisé via un override du module et appelez-le dans le template souhaité. Sur PrestaShop 1.7+, la syntaxe widget permet de l'afficher n'importe où sans override.
Implémenter un système de prix libre sur PrestaShop (Name Your Price)
Implémentez un système de prix libre sur PrestaShop via un override de Product (mise à jour du prix) et du ProductController (validation sécurisée avec bornes min/max). Pour la production, préférez les SpecificPrice par client plutôt que la modification directe en base.
Thème enfant PrestaShop : résoudre les erreurs JavaScript après installation
Après l'installation d'un thème enfant PrestaShop, les bibliothèques JavaScript du thème parent ne sont pas toujours héritées automatiquement. Diagnostiquez via la console JS (F12), identifiez les scripts manquants dans le code source, puis enregistrez-les proprement via setMedia() ou le fichier theme.yml.
Connecter automatiquement un client après création de compte PrestaShop
Pour connecter automatiquement un client après création de compte sur PrestaShop, il faut injecter ses données dans le Context et le cookie via `Context::getContext()->cookie->__set()`, rattacher le panier existant avec le `secure_key`, puis déclencher les hooks d'authentification avant de rediriger.
Intégrer Bootstrap dans le menu PrestaShop : refonte du blocktopmenu
Le module blocktopmenu (ps_mainmenu depuis PS 1.7) peut être refactorisé pour utiliser les classes Bootstrap natives, ce qui résout les bugs mobile, facilite la personnalisation et permet d'intégrer panier et recherche directement dans la navbar.
Charger le CSS d'un module PrestaShop : hooks, chemins et bonnes pratiques
Le CSS d'un module PrestaShop ne se charge pas quand le hook displayHeader n'est pas enregistré à l'installation, quand le chemin du fichier est incorrect, ou quand une surcharge du thème interfère. Enregistrez le hook, utilisez addCSS() ou registerStylesheet(), et vérifiez qu'aucun dossier de surcharge dans le thème ne bloque le chargement.
Ajouter un champ personnalisé produit dans PrestaShop (back office et front)
Pour ajouter un champ personnalisé produit dans PrestaShop, il faut intervenir à 4 niveaux : colonne SQL dans ps_product_lang, déclaration dans la classe Product ($definition), ajout dans les requêtes SQL du catalogue (Category::getProducts), et affichage dans les templates. Sur PS 8.x, privilégiez un module avec les hooks Symfony plutôt qu'un override.
Rendre le numéro de TVA obligatoire si société renseignée sur PrestaShop
Pour rendre le numéro de TVA obligatoire quand une société est renseignée, il faut ajouter une validation conditionnelle dans les contrôleurs AuthController et AddressController (PS 1.6 via override) ou via un module avec le hook actionValidateCustomerAddressForm (PS 1.7+/8.x). Ne jamais modifier la classe Address.php pour cela.
Ajouter un champ image personnalisé aux catégories PrestaShop
Ajoutez un second champ image aux catégories PrestaShop via un override de la classe Category (PS 1.6/1.7) ou un module Symfony (PS 8.x), en modifiant la base de données, le back-office et les templates front-end.
Afficher des produits d'une catégorie sur une fiche produit PrestaShop
Pour afficher des produits d'une catégorie sur une fiche produit PrestaShop avec filtrage par caractéristique, créez un override de Category.php avec une méthode getProductsByFeature() qui joint les tables produit et caractéristique, puis appelez-la depuis un hook de module avec un template Smarty réutilisant les miniatures natives.
Déplacer le menu horizontal PrestaShop vers un autre hook
Pour déplacer le menu horizontal PrestaShop, remplacez le hook `displayTop` par `displayNav` dans la méthode install() du module, ajoutez une méthode `hookDisplayNav()` qui délègue au rendu existant, et réinstallez le module. Assurez-vous que le hook `header` est bien enregistré pour le chargement des CSS/JS.
Ajouter un champ date personnalisé aux détails de commande PrestaShop
Pour ajouter une date personnalisée aux lignes de commande PrestaShop, ajoutez une colonne à ps_order_detail, créez un override d'OrderDetail pour déclarer le champ dans l'ObjectModel, puis mettez à jour via AJAX avec instanciation propre de l'objet et casting systématique des identifiants en (int).
Afficher les déclinaisons produit sur les pages listing PrestaShop
Pour afficher les déclinaisons sur les listings produit PrestaShop, créez une méthode SQL joignant les tables d'attributs, assignez le résultat à Smarty dans le hook du module ou du contrôleur, puis parcourez le tableau dans le template avec un foreach. Attention au cache Smarty et à la déclaration de la variable dans la classe.
Catalogue
22 articlesProduits, catégories, attributs, import/export
Exporter produits PrestaShop via SQL Manager : requête complète et pièges
Requête SQL complète et commentée pour exporter tout le catalogue PrestaShop via le SQL Manager, avec les pièges courants à éviter (doublons fabricant, produit cartésien catégories/images, mode SQL strict).
Afficher les miniatures de sous-catégories dans PrestaShop
Les miniatures de sous-catégories manquantes dans PrestaShop proviennent généralement d'un fichier image absent dans img/c/, de permissions incorrectes ou d'un cache obsolète. Diagnostic en 5 étapes : vérifier le fichier physique, les droits, purger le cache, inspecter la classe Category et contrôler la base de données.
Exporter les EAN par produit avec les ventes mensuelles en SQL PrestaShop
Requête SQL pour croiser les codes EAN13 des déclinaisons PrestaShop avec les volumes de ventes mensuels, en gérant le piège du GROUP BY strict et les produits sans déclinaison via COALESCE.
Mise à jour massive de id_category_default : pourquoi le back-office ne reflète pas vos changements
Quand vous modifiez id_category_default en SQL, le back-office PrestaShop ne reflète pas le changement car il lit ps_product_shop, pas ps_product. Il faut impérativement mettre à jour les deux tables — c'est une conséquence de l'architecture multiboutique intégrée au cœur de PrestaShop depuis la version 1.5.
Requête SQL pour exporter les produits PrestaShop en CSV avec toutes les images
Requête SQL complète pour exporter tous les produits PrestaShop en CSV avec reconstruction automatique des URLs d'images fragmentées, compatible 1.6 à 8.x, personnalisable avec déclinaisons, promotions et filtres.
Import CSV de produits PrestaShop : résoudre les erreurs courantes
Les erreurs d'import CSV PrestaShop proviennent principalement de quatre causes : un encodage non UTF-8 (utilisez LibreOffice plutôt qu'Excel), un mauvais séparateur de colonnes (point-virgule obligatoire), un mapping de champs incorrect et une mauvaise gestion des identifiants produit. Testez toujours sur un petit échantillon avant d'importer l'ensemble du catalogue.
Extraire les photos produits PrestaShop : SQL, cURL et bonnes pratiques
Pour extraire les photos produits de PrestaShop, reconstituez les URLs des images via une requête SQL sur la table ps_image (en découpant l'id_image en sous-dossiers), puis téléchargez-les en masse avec cURL ou rsync.
Import CSV PrestaShop : gérer les sous-catégories homonymes
Lors d'un import CSV PrestaShop, les sous-catégories portant le même nom sont confondues car l'import se base sur le nom. La solution : utiliser les ID numériques des catégories dans le CSV et activer l'option "Forcer les identifiants" dans le back-office.
Modifier la position des produits sur les pages catégories PrestaShop
Pour modifier dynamiquement l'ordre des produits en catégorie PrestaShop, exploitez le paramètre natif $random de Category::getProducts() ou utilisez ORDER BY RAND(seed) avec une graine fixe par session pour éviter les doublons de pagination. Sur les gros catalogues, préférez un cron qui pré-calcule les positions.
Répartir 4000+ produits dans plusieurs catégories PrestaShop par import CSV
Pour répartir plus de 4 000 produits dans de nouvelles catégories PrestaShop, exportez le catalogue via SQL, préparez un CSV avec les nouvelles affectations (le premier ID de catégorie = catégorie par défaut), puis importez avec l'option « Utiliser l'ID comme clé » activée. Découpez en lots de 500 si le serveur plante, et n'oubliez pas les redirections 301 pour préserver le SEO.
Afficher des produits associés sur la fiche produit PrestaShop
PrestaShop propose nativement les accessoires pour associer des produits manuellement. Pour un affichage automatique par catégorie, développez un module dédié hookable sur displayFooterProduct avec une requête filtrant les produits de la même catégorie.
Import CSV PrestaShop : résoudre les problèmes d'affichage des réductions
Les problèmes d'affichage des réductions après un import CSV PrestaShop viennent soit de limites serveur trop basses (PHP/MySQL) qui tronquent silencieusement l'import, soit d'un cache non vidé alors que les données sont correctement enregistrées en base. Diagnostic en base d'abord, configuration serveur ensuite.
Filtrer les produits en stock dans ps_featuredproducts PrestaShop
Le module ps_featuredproducts affiche par défaut les produits en rupture de stock. Pour les filtrer, créez un override du module qui modifie la requête SQL via le SearchProvider, ou développez un module personnalisé avec un filtre sur ps_stock_available. Évitez le simple masquage Smarty sur les gros catalogues.
Sous-catégories et déclinaisons PrestaShop : guide complet
Les sous-catégories organisent l'arborescence de votre catalogue PrestaShop, tandis que les déclinaisons gèrent les variantes (taille, couleur) d'un même produit. Maîtriser cette distinction est essentiel pour un catalogue propre, un stock fiable et un bon référencement.
Importer des photos produits dans PrestaShop : guide complet CSV et debug
Pour importer des images produits dans PrestaShop via CSV, utilisez des URLs absolues séparées par des virgules dans la colonne images (la première URL devient la couverture). En cas de problème d'affichage, vérifiez les tables ps_image et ps_image_shop, les fichiers physiques dans img/p/, et régénérez les miniatures.
Simplifier la création de produits PrestaShop : 4 approches comparées
Quatre approches pour simplifier la création de produits PrestaShop : import CSV natif (le plus rapide pour les lots), outils tiers comme Store Commander (gestion tableur en temps réel), module back-office custom (formulaire simplifié), ou formulaire front-office avec validation (idéal pour les marketplaces). Le choix dépend du volume et du profil utilisateur.
Exporter les produits PrestaShop via SQL : requêtes complètes et bonnes pratiques
Exportez vos produits PrestaShop via des requêtes SQL dans phpMyAdmin pour un contrôle total sur les données extraites. Filtrez toujours par id_lang pour éviter les doublons, et utilisez GROUP_CONCAT pour agréger catégories et images en une seule ligne par produit.
Contrôler l'ordre d'affichage des attributs produit dans PrestaShop
L'ordre d'affichage des déclinaisons PrestaShop est contrôlé par la clause ORDER BY de la méthode getAttributesGroups() dans la classe Product. Pour trier par référence au lieu de la position par défaut, créez un override qui remplace ORDER BY ag.position ASC, a.position ASC par ORDER BY pa.reference ASC.
Trier les produits par référence dans PrestaShop 1.7 et 8.x
Pour trier les produits par référence dans PrestaShop, modifiez le AdminProductDataProvider (override en 1.7, décoration de service en 8.x) en changeant le paramètre $orderBy par défaut de 'id_product' à 'reference'. Pensez à préfixer vos références avec des zéros pour un tri numérique correct.
Catégorie ROOT PrestaShop : comprendre et corriger l'arborescence en base de données
Si toutes vos catégories PrestaShop sont marquées is_root_category = 1, seule la catégorie 2 (Accueil) doit porter ce flag. Corrigez en base de données avec deux requêtes UPDATE, vérifiez la hiérarchie parent-enfant, puis régénérez l'arbre des catégories.
Mettre à jour son catalogue PrestaShop par import CSV : guide complet
Pour mettre à jour votre catalogue PrestaShop par CSV sans créer de doublons, utilisez l'option « Forcer les identifiants » ou « Utiliser la référence comme clé » dans l'outil d'import natif, et exportez vos données existantes via le Gestionnaire SQL pour faire correspondre les ID.
Import CSV PrestaShop lent : optimiser l'import de milliers de produits
Un import CSV lent dans PrestaShop est généralement causé par un mauvais encodage du fichier (utilisez LibreOffice en UTF-8, pas Excel) et une configuration serveur sous-dimensionnée. Réduisez le nombre de colonnes au strict nécessaire, augmentez les limites PHP, désactivez l'indexation pendant l'import, et privilégiez un VPS plutôt qu'un mutualisé pour les catalogues volumineux.
Design & Thèmes
21 articlesThèmes, CSS, responsive, templates Smarty/Twig
Résoudre les problèmes d'affichage PrestaShop sur iPhone et iOS
Les problèmes d'affichage PrestaShop sur iPhone sont principalement causés par les spécificités de Safari/WebKit : menus hover incompatibles avec le tactile, zoom automatique sur les formulaires, unité vh incorrecte et préfixes CSS manquants. Ce guide couvre les cinq bugs les plus fréquents avec leurs solutions CSS et JavaScript à jour.
Personnaliser le fond du bloc éditorial PrestaShop (CSS complet)
Pour ajouter une image de fond au bloc éditorial PrestaShop, utilisez `background-image` en CSS sur `#htmlcontent_home`. Pour un rendu pleine largeur, dépassez le conteneur Bootstrap avec `calc(-50vw + 50%)` ou déplacez le hook hors du `.container` dans le template.
Personnaliser le bouton Ajouter au panier dans PrestaShop
Le texte du bouton « Ajouter au panier » se modifie sans code via les traductions du back-office PrestaShop. Pour une personnalisation avancée (style, Quick View, conditions par catégorie), il faut surcharger les templates du thème dans un thème enfant en conservant l'attribut data-button-action="add-to-cart".
Ajouter des boutons + et - pour la quantité sur la fiche produit PrestaShop
PrestaShop 1.7 et 8.x intègrent nativement des boutons +/- via TouchSpin dans le thème Classic. Pour les thèmes personnalisés, une implémentation en Vanilla JS avec des boutons HTML accessibles, un dispatch d'événement change et le respect de la quantité minimale suffit à recréer cette fonctionnalité.
Personnaliser les couleurs de fond et du menu dans PrestaShop
Pour modifier les couleurs de fond et du menu PrestaShop, désactivez d'abord le CCC (cache CSS) dans les paramètres de performance, identifiez les bons sélecteurs avec l'inspecteur du navigateur, appliquez vos styles dans un thème enfant, puis réactivez le CCC pour la production.
Optimiser le responsive design d'une boutique PrestaShop de literie
Guide complet pour optimiser le responsive design d'une boutique PrestaShop spécialisée literie : diagnostic des problèmes courants (grilles, images, sélecteurs de déclinaisons, tableaux de tailles), corrections CSS et templates, et checklist de validation avant mise en production.
Icônes disparues et images tronquées sur PrestaShop : diagnostic CSS
Les icônes disparues sur PrestaShop sont causées par des propriétés CSS `content` vidées dans les pseudo-éléments `::before` — il suffit de restaurer les bons caractères Unicode. Les images produit tronquées se corrigent en ajustant la propriété `max-width` du conteneur image dans le CSS du thème.
Supprimer les bordures blanches des images produit PrestaShop
Les bordures blanches sur les images produit PrestaShop apparaissent quand le ratio de l'image source ne correspond pas au format cible. La solution recommandée est d'harmoniser les ratios avant upload ; pour un correctif immédiat, utilisez object-fit: cover en CSS ou affichez l'image originale via le modificateur Smarty spacify.
Adapter la taille d'une bannière PrestaShop au-delà des limites du thème
Pour adapter une bannière trop grande dans PrestaShop, surchargez le CSS du module banner avec `width: 100%; max-width: 1170px; height: auto; margin: 0 auto` et supprimez les contraintes `max-height` du conteneur. Utilisez toujours l'inspecteur navigateur pour identifier les règles CSS en cause avant de modifier quoi que ce soit.
Intégrer et personnaliser Font Awesome dans PrestaShop
Pour intégrer des icônes Font Awesome dans PrestaShop, utilisez les pseudo-éléments CSS ::before avec le code Unicode de l'icône — aucune modification de template requise. En 2025, privilégiez Font Awesome 6 en local avec font-display: swap pour des performances optimales.
Afficher 3 blocs côte à côte sur la page d'accueil PrestaShop
Pour afficher 3 blocs côte à côte sur la page d'accueil PrestaShop, utilisez la grille Bootstrap intégrée avec des colonnes col-md-4, soit directement dans le template index.tpl pour une solution rapide, soit via un module dédié pour une approche maintenable et administrable.
Redimensionner les images des modules Produits Vus et Nouveautés PrestaShop
Ne redimensionnez jamais les images PrestaShop via CSS : remplacez le type d'image dans le template Smarty (medium_default → small_default) pour servir directement le bon format et améliorer vos performances web.
Corriger l'affichage du menu déroulant multi-niveaux dans PrestaShop
Un menu PrestaShop qui s'affiche mal est souvent causé par une mauvaise attribution des classes CSS Bootstrap : les catégories de niveau 2 doivent recevoir 'dropdown' (pas 'dropdown-submenu') et seules les catégories de niveau 3+ doivent utiliser 'dropdown-submenu'. Le correctif consiste à distinguer explicitement le level_depth dans le code PHP du module de menu.
Intégrer un design Photoshop dans PrestaShop sans casser le responsive
Les tranches Photoshop génèrent des tableaux HTML non responsive et incompatibles avec les styles PrestaShop. La solution pérenne est de reconstruire l'intégration avec la grille Bootstrap, nativement disponible dans PrestaShop depuis la version 1.6, pour obtenir un design adaptatif sur tous les écrans.
Dupliquer un thème PrestaShop pour protéger ses modifications des mises à jour
Ne modifiez jamais le thème par défaut de PrestaShop : dupliquez-le (1.6) ou créez un thème enfant (1.7/8.x) pour que vos personnalisations survivent à toutes les mises à jour du CMS et des modules.
Pagination absente sur les pages catégories PrestaShop : diagnostic et correction
La disparition de la pagination sur les pages catégories PrestaShop est presque toujours causée par un fichier category.tpl personnalisé qui n'inclut plus le template pagination.tpl. Le diagnostic consiste à vérifier le thème actif, comparer avec le thème par défaut, et restaurer l'include manquant.
Activer le bouton filtre de la navigation à facettes horizontale PrestaShop
Le bouton filtre de la navigation à facettes horizontale est souvent masqué par une règle CSS display:none sur #facets_search_center dans le fichier theme.css. La correction consiste à surcharger cette règle via un fichier custom.css ou un thème enfant pour garantir la pérennité du correctif.
Redimensionner les colonnes de la fiche produit PrestaShop avec Bootstrap
Pour redimensionner les colonnes de la fiche produit PrestaShop, modifiez les classes Bootstrap (col-md-*) directement dans product.tpl en respectant la règle des 12 colonnes. N'utilisez jamais de largeurs en pixels ou de !important qui cassent le responsive.
Personnaliser les couleurs d'un thème PrestaShop sans sacrifier les performances
Pour personnaliser les couleurs d'un thème PrestaShop, désactivez d'abord le Smart Cache CSS pour identifier les fichiers à modifier, utilisez un fichier custom.css dédié avec des variables CSS, et mesurez systématiquement l'impact sur les performances (TTFB < 200 ms recommandé par Google).
Optimiser l'UX d'une boutique PrestaShop : menu, scroll infini et navigation
Guide complet pour optimiser l'UX d'une boutique PrestaShop : menu déroulant avec compteur de produits (requête SQL optimisée), scroll infini maîtrisé via bouton de chargement, header sticky en CSS moderne, et checklist UX complète avant mise en production.
Créer un thème PrestaShop : overrides, assets et bonnes pratiques
Créer un thème PrestaShop propre repose sur la maîtrise du système d'overrides (hiérarchie de fichiers, suppression du class_index.php, permissions), la gestion correcte des assets CSS/JS via setMedia() ou Webpack, et la compréhension du CCC pour éviter les pièges de concaténation en production.
SEO
20 articlesRéférencement, meta, sitemap, données structurées
Rendre sa boutique PrestaShop responsive et optimiser son SEO
Pour optimiser votre boutique PrestaShop, trois actions prioritaires : migrer vers un thème responsive natif (Bootstrap sur 1.6+, CSS Grid sur 8.x), personnaliser les balises title de chaque fiche produit, et soigner systématiquement vos ancres de liens pour renforcer votre maillage SEO.
URLs simplifiées en hébreu sur PrestaShop : diagnostic et solutions
PrestaShop supprime les caractères hébraïques lors de la génération d'URLs simplifiées car str2url() ne gère que la translittération latine. La solution combine l'activation de PS_ALLOW_ACCENTED_CHARS_URL et un override de Tools::str2url() pour préserver les caractères Unicode non-latins.
Multiboutique PrestaShop : quelle structure d'URL choisir par langue ?
Pour un PrestaShop multiboutique international, privilégiez les sous-domaines avec code ISO (fr-fr.maboutique.com) : c'est le meilleur compromis entre signal SEO, coût et maintenabilité. Complétez toujours avec les balises hreflang et le ciblage géographique dans Search Console.
URL canonique PrestaShop : éviter le contenu dupliqué et protéger son SEO
Une chute de positionnement Google sur PrestaShop est souvent causée par du contenu dupliqué interne. L'implémentation correcte des URLs canoniques, combinée à une configuration serveur propre et une bonne UX, permet de consolider l'autorité SEO et de stabiliser durablement vos positions.
Optimiser le référencement de sa boutique PrestaShop : guide complet
Le référencement PrestaShop repose sur trois piliers indissociables : l'exploitation de Google Search Console pour piloter sa stratégie, une optimisation on-page systématique (title, meta, contenu structuré, vitesse) et une stratégie de backlinks qualitative. Travaillez en masse via CSV et soumettez vos pages optimisées pour une indexation rapide.
Balises title incorrectes dans Google : diagnostic et correction PrestaShop
Un title incorrect dans Google provient soit du cache de Googlebot qui conserve une ancienne version, soit d'un problème dans le template head.tpl du thème, soit d'une réécriture volontaire par Google. Diagnostiquez avec curl et la Search Console, corrigez le template si nécessaire, puis forcez la réindexation.
Référencer sa boutique PrestaShop : guide complet SEO et performance
Le référencement d'une boutique PrestaShop repose sur trois piliers : la performance technique (TTFB < 200 ms, modules minimaux), le suivi via Google Search Console, et un design responsive. Le SEO se travaille dès la conception du site, pas après la mise en ligne.
Configurer Google Shopping avec PrestaShop : subdivisions et campagnes rentables
Pour des campagnes Google Shopping rentables sur PrestaShop, structurez votre flux avec des titres optimisés et des custom labels, puis subdivisez vos produits par marque, catégorie et marge — sans sur-segmenter au-delà du seuil de données exploitables.
Choisir un thème PrestaShop optimisé SEO : critères et bonnes pratiques
Le thème PrestaShop est la fondation technique de votre SEO : vitesse, balisage Hn, données structurées et responsive sont les critères clés à vérifier avant tout achat. En PrestaShop 8.x, le thème Hummingbird offre une base moderne et performante pour un thème enfant sur mesure.
Empêcher l'indexation des pages tag PrestaShop malgré robots.txt
Le fichier robots.txt bloque le crawl mais pas l'indexation : les pages tag PrestaShop restent dans Google. La solution est d'injecter une balise meta noindex conditionnelle dans le head via Smarty ou un module hook displayHeader, puis de retirer le Disallow correspondant du robots.txt.
Référencement PrestaShop : maîtriser Google Search Console pour votre boutique
Google Search Console est l'outil SEO fondamental et gratuit que tout marchand PrestaShop doit maîtriser avant d'investir dans d'autres solutions. Concentrez-vous dessus pendant vos 8 à 12 premiers mois pour comprendre votre indexation, soumettre vos pages et analyser vos performances réelles dans Google.
Rich Snippets PrestaShop : corriger les données structurées produit
Les Rich Snippets produit PrestaShop échouent souvent à cause d'un type Schema.org incorrect (Offers au lieu de Product), de conflits entre les accolades JSON-LD et le moteur Smarty, ou de propriétés obligatoires manquantes. La solution : utiliser le bon type Product, encadrer le JSON-LD avec {literal} dans les templates .tpl, et valider systématiquement avec l'outil de test Google.
Personnaliser la balise H1 des fiches produits PrestaShop
Ajoutez un champ H1 personnalisé et multilingue à vos fiches produits PrestaShop en combinant une colonne SQL dans ps_product_lang, un override de la classe Product et un override de AdminImportController pour l'import CSV en masse. Compatible de PrestaShop 1.6 à 8.x.
Balises Open Graph mal positionnées dans PrestaShop : diagnostic et correction
Si des balises Open Graph (og:title, og:description) s'affichent en texte visible sur votre boutique PrestaShop, c'est qu'un module les injecte dans le <body> au lieu du <head>. Identifiez le module fautif, déplacez-le sur le hook displayHeader, et validez avec le Facebook Sharing Debugger.
Ajouter un H1 personnalisé aux pages catégories PrestaShop
Ajoutez un champ h1_cat dans ps_category_lang et créez un override de la classe Category pour dissocier le nom de navigation du H1 SEO sur vos pages catégories PrestaShop. Import CSV en masse possible via un override de AdminImportController.
URLs 404 avec double domaine dans PrestaShop : diagnostic et correction
Les URLs 404 avec nom de domaine dupliqué dans PrestaShop proviennent généralement de produits ayant la catégorie « Accueil » comme catégorie par défaut. La correction passe par la réaffectation des catégories, la régénération du .htaccess et l'implémentation de balises canonical robustes.
Obfuscation de liens PrestaShop : Smarty + JavaScript vanilla pour le SEO
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.
Référencement PrestaShop : guide complet pour optimiser son SEO
Pour positionner une boutique PrestaShop dans le top 3 Google, concentrez-vous sur cinq piliers : URLs ciblées sur 2-3 mots-clés, TTFB sous 200 ms, HTML valide W3C, balise title optimisée sans nom de boutique, et meta descriptions orientées conversion.
Optimiser les URL PrestaShop pour le SEO : structure courte et performante
Pour optimiser vos URL PrestaShop, configurez des routes courtes sans identifiant numérique, mettez en place des redirections 301 systématiques depuis les anciennes URL, implémentez les balises canoniques et soumettez vos nouvelles URL via Google Search Console pour accélérer la réindexation.
Balise Title PrestaShop : configuration et optimisation SEO complète
La balise title se configure dans le back-office PrestaShop (onglet SEO de chaque entité) et se génère via le template head.tpl. Si Google affiche un title différent, vérifiez le code source puis forcez la réindexation via Search Console.
Configuration
18 articlesInstallation, paramétrage, back-office
Thème PrestaShop : le hook Home ne s'affiche plus — diagnostic et correction
Quand un module PrestaShop ne s'affiche plus en page d'accueil, le problème vient presque toujours d'un mauvais hook : vérifiez dans Modules > Positions que le module est greffé sur le hook réellement utilisé par votre thème (souvent « Top » au lieu de « Home »), puis réordonnez si nécessaire.
Créer un site immobilier avec PrestaShop : retour d'expérience complet
PrestaShop peut être détourné efficacement pour créer un site immobilier en mappant les produits sur des biens, les catégories sur des types de biens et les caractéristiques sur des critères de recherche. Le framework Scrapy permet de migrer en masse les données d'un ancien site.
Changer le nom de domaine PrestaShop : guide complet sans coupure
Pour changer le nom de domaine d'une boutique PrestaShop, il faut intervenir à trois niveaux : configurer le nouveau domaine sur le serveur web (Apache ou Nginx), mettre à jour les tables ps_shop_url et ps_configuration en base de données, puis mettre en place des redirections 301 depuis l'ancien domaine pour préserver le référencement.
Checklist complète avant mise en production d'un site PrestaShop
Checklist complète en 7 points pour réussir la mise en production d'un site PrestaShop : performances, conformité RGPD et cookies (pas toujours obligatoire selon la CNIL), SEO technique, sécurité, test du tunnel d'achat, mentions légales et monitoring post-lancement.
Modifier les titres et libellés du thème PrestaShop (Popular Products, Vous aimerez aussi)
Pour modifier les titres de sections comme « Popular Products » ou « Vous aimerez aussi » dans PrestaShop, utilisez le système de traductions du thème dans le back-office (International → Traductions), puis videz le cache pour appliquer les changements.
Corriger la devise affichée dans le dashboard PrestaShop (DashGoals)
Le dashboard PrestaShop (DashGoals) peut afficher la mauvaise devise si PS_CURRENCY_DEFAULT pointe vers un mauvais identifiant. Corrigez la valeur en base de données ou créez un override d'AdminController utilisant Currency::getIdByIsoCode() pour forcer la devise correcte.
Résoudre l'erreur memory_limit PHP après installation d'un thème PrestaShop
L'erreur memory_limit lors de l'installation d'un thème PrestaShop se résout en augmentant la directive à 512 Mo minimum via php.ini, .htaccess ou .user.ini, après avoir diagnostiqué la configuration actuelle avec phpinfo().
Navigation à facettes absente de la recherche PrestaShop : solutions
La navigation à facettes est absente de la page de recherche PrestaShop car le module natif ne supporte que les pages catégories. La solution passe par la vérification du layout du thème (colonne gauche + hook displayLeftColumn), puis éventuellement un override du module ou un développement spécifique pour étendre le filtrage au contrôleur de recherche.
Modifier le texte « Connexion » et autres libellés dans PrestaShop
Pour modifier le texte « Connexion » ou tout autre libellé dans PrestaShop, utilisez le système de traductions du back-office (International → Traductions → Thème). Si la page des traductions ne charge pas, purgez le cache Symfony en renommant var/cache/prod et var/cache/dev.
Masquer la quantité et le prix HT dans le panier PrestaShop
Pour masquer la quantité ou le prix HT du panier PrestaShop, commentez les cellules correspondantes dans les templates Smarty du panier (shopping-cart.tpl en 1.6, cart-detailed.tpl en 1.7/8.x) et ajustez impérativement les colspan pour éviter les décalages visuels.
Modifier une adresse e-mail dans PrestaShop : back-office, SQL et API
Pour modifier une adresse e-mail dans PrestaShop, privilégiez le back-office (Clients ou Employés). En cas d'urgence, une requête SQL UPDATE sur ps_customer ou ps_employee fonctionne, à condition de vérifier l'unicité de l'adresse et de vider le cache ensuite.
Débuter sur PrestaShop : guide complet pour bien démarrer son e-commerce
Pour bien débuter sur PrestaShop, choisissez la version 8.1.x, installez-la sur un VPS correctement configuré (PHP 8.1+, MariaDB 10.6+), et accordez-vous au moins un mois d'apprentissage sur un environnement de test avant toute mise en production.
Configurer le suivi des conversions Google Tag Manager dans PrestaShop
Pour intégrer Google Tag Manager dans PrestaShop, le snippet JavaScript nécessite des balises {literal} dans les templates Smarty tandis que le snippet noscript n'en a pas besoin. Privilégiez un module avec les hooks displayHeader et displayAfterBodyOpeningTag pour une intégration maintenable qui survit aux mises à jour du thème.
Supprimer ou désactiver l'opt-in partenaires sur PrestaShop
L'opt-in partenaires se désactive dans Paramètres de la boutique → Clients. Si la case persiste malgré la désactivation, vérifiez le cache Smarty, les overrides et le template du thème — sur PrestaShop 8.x, un hook Symfony permet aussi de retirer le champ proprement via un module.
Reprendre un site PrestaShop : accès admin et base de données
Pour reprendre un site PrestaShop, corrigez d'abord la configuration de la base de données dans settings.inc.php (ou parameters.php), puis réinitialisez le mot de passe admin via phpMyAdmin en utilisant le bon mécanisme de hachage selon votre version (MD5 + cookie_key pour PS 1.6, bcrypt pour PS 1.7/8.x). Sécurisez ensuite tous les accès.
Créer un site de réservation hôtelière avec PrestaShop : guide complet
PrestaShop peut servir de système de réservation hôtelière en détournant les déclinaisons comme dates et les stocks comme disponibilités, avec gestion tarifaire par import CSV et affichage calendrier Ajax — une solution économique idéale pour les petits établissements indépendants.
Installer PrestaShop 1.6 sans erreur 500 : permissions, PHP et performances
Pour installer PrestaShop 1.6 sans erreur 500 : consultez error.log d'Apache pour diagnostiquer, corrigez les permissions (755/644 avec chown www-data), utilisez PHP 7+ pour diviser le TTFB par deux, et activez OPcache + Memcached dès le départ.
Migrer PrestaShop sur un VPS OVH : guide complet du serveur au SSL
Guide complet pour migrer PrestaShop sur un VPS OVH Cloud : choix du serveur, installation de la stack (Nginx/Apache + PHP 8.1 + MariaDB), configuration des vhosts, SSL Let's Encrypt gratuit, et procédure de transfert de boutique en 6 étapes avec les bonnes pratiques de sécurité.
Performance
16 articlesVitesse, cache, optimisation SQL, Core Web Vitals
Optimiser les performances PrestaShop : configuration cache et serveur
Guide complet pour optimiser les performances d'une boutique PrestaShop : configuration du cache Smarty, OPcache/Redis, sous-domaines médias, désactivation des modules superflus et bonnes pratiques pour atteindre un temps de réponse sous 300 ms, de la version 1.6 à la 8.x.
Configurer le cache des feuilles de styles CSS dans PrestaShop
Les modifications CSS invisibles dans PrestaShop résultent de plusieurs couches de cache (navigateur, CCC, serveur). Désactivez le CCC en développement, travaillez sur un environnement séparé, et utilisez le cache busting en production pour forcer le rechargement des styles.
Diagnostiquer et résoudre la lenteur d'un site PrestaShop
Pour diagnostiquer la lenteur d'un site PrestaShop, mesurez le TTFB via les outils navigateur, activez le debug profiling pour identifier les modules et requêtes SQL lents, puis vérifiez la table ps_configuration qui peut être anormalement gonflée suite à un bug connu de PrestaShop 1.6.
Temps de chargement long sur PrestaShop : diagnostic et optimisation complète
Un temps de chargement excessif sur PrestaShop provient généralement d'un excès d'assets CSS/JS (modules inutiles), d'un hébergement mutualisé sous-dimensionné et d'un manque d'optimisation côté serveur. Le diagnostic passe par le profiling intégré et l'audit des DevTools, puis l'optimisation suit un ordre logique : nettoyer les modules, optimiser les assets, configurer le cache et adapter l'hébergement.
Optimiser les performances et le SEO d'une boutique PrestaShop : guide complet
Pour optimiser une boutique PrestaShop, activez la concaténation CSS/JS et le cache navigateur, configurez un sous-domaine sans cookie ou un CDN pour les ressources statiques, migrez vos icônes vers du SVG, et posez les fondations SEO avec Google Search Console et GA4.
PrestaShop bloqué ou lent : diagnostiquer un disque saturé ou une base gonflée
Un PrestaShop qui plante subitement est généralement causé par un disque serveur saturé ou une base de données gonflée par les tables de statistiques (ps_connections, ps_guest). La solution : purger ces tables, désactiver les modules stats intégrés au profit de Google Analytics, et migrer vers un hébergement adapté si vous êtes en mutualisé.
Images adaptatives dans PrestaShop : srcset, lazy loading et performances
Les images adaptatives dans PrestaShop s'implémentent via l'attribut srcset dans les templates Smarty, combiné au lazy loading natif ou à LazySizes pour le chargement différé. Sur PrestaShop 8.x, activez également le WebP pour un gain de poids de 25 à 35 %.
PrestaShop augmente le poids de vos images : causes et solutions
PrestaShop augmente le poids des images car la librairie GD réencode chaque fichier avec une compression basique. Pour corriger : vérifiez GD, réduisez la qualité JPEG à 80, pré-compressez vos images avec TinyPNG et activez le WebP sur PrestaShop 8.x.
Configurer le cache navigateur via .htaccess sur PrestaShop
Le cache navigateur via .htaccess permet de réduire considérablement le temps de chargement des visites répétées sur PrestaShop en configurant mod_expires et mod_headers pour les ressources statiques, avec des durées longues (1 an) grâce au cache-busting natif de PrestaShop.
Réduire le JavaScript inutilisé sur PrestaShop : guide complet
Pour réduire le JavaScript inutilisé sur PrestaShop, commencez par diagnostiquer avec Chrome Coverage, désactivez les modules inutiles par page via les positions, puis optimisez le bundle theme.js avec Webpack (tree-shaking, code splitting, imports sélectifs).
PrestaShop lent et images qui disparaissent : diagnostic complet
Un PrestaShop lent avec des images manquantes se diagnostique en quatre étapes : test multi-navigateurs, activation du CCC (concaténation/compression des assets), audit des tâches CRON gourmandes, et analyse avec des outils comme GTmetrix. Les images disparaissent généralement à cause de miniatures non régénérées ou de permissions incorrectes.
Site PrestaShop lent : diagnostic complet et optimisations serveur
Un site PrestaShop lent provient rarement du seul hébergement : requêtes SQL mal optimisées, configuration PHP bridée et absence de parallélisation des assets sont les trois causes principales. Un VPS SSD correctement configuré avec media servers résout 90 % des problèmes.
Accélérer un site PrestaShop : guide complet d'optimisation des performances
Pour accélérer PrestaShop, commencez par activer le profiling pour identifier les modules et requêtes SQL qui ralentissent le site, dégraissez les hooks inutiles, ajoutez des index SQL sur les tables critiques, optimisez la configuration serveur (OPcache, Gzip, cache navigateur) et choisissez un hébergement adapté à votre volume.
Optimiser le CLS et valider le HTML de votre boutique PrestaShop
Le CLS (stabilité visuelle) doit être optimisé dès la conception de votre thème PrestaShop, pas après la mise en ligne. Auditez avec Lighthouse, validez votre HTML au W3C, puis corrigez les templates Smarty (head.tpl, header.tpl, javascript.tpl) en réservant l'espace des images, préchargeant les polices et différant le JavaScript non critique.
Optimiser PrestaShop pour le mobile : audit complet et bonnes pratiques
Un thème responsive ne suffit pas pour être mobile-friendly : il faut auditer le robots.txt (ressources CSS/JS bloquées), corriger la structure HTML (H1 manquant), optimiser les performances (WebP, lazy loading, concaténation) et maîtriser son hébergement pour pouvoir intervenir rapidement.
Optimiser la vitesse de PrestaShop : diagnostic complet et solutions
Pour diagnostiquer un PrestaShop lent, activez le debug profiling par IP, isolez les modules problématiques un par un, analysez les requêtes SQL excessives, vérifiez les logs serveur pour les attaques DDoS, et optimisez le front-end (images WebP, fonts locales, SVG au lieu de Font Awesome).
Debug
16 articlesErreurs, logs, profiling, résolution
Erreur « Constant __PS_BASE_URI__ already defined » dans PrestaShop
L'erreur « Constant __PS_BASE_URI__ already defined » signale une double inclusion du fichier de configuration PrestaShop. Les trois causes principales sont : une injection de malware (la plus dangereuse), un conflit d'overrides, ou une inclusion manuelle superflue dans un module ou script cron. Le diagnostic passe par la désactivation des overrides et l'audit des fichiers modifiés récemment.
Erreur 500 PrestaShop : diagnostic et correction quand un thème bloque le back-office
Une erreur 500 après installation d'un thème PrestaShop se résout en renommant le dossier du thème fautif via FTP/SSH pour retrouver l'accès au back-office, puis en activant le mode debug pour identifier et corriger la cause exacte de l'erreur.
Page blanche sur les fiches produits PrestaShop : diagnostic et correction
Une page blanche sur les fiches produits PrestaShop provient généralement d'un module défaillant (souvent Commentaires Produits) ou d'un cache Memcache mal configuré. Activez le mode debug pour identifier l'erreur, désactivez le module ou le cache incriminé, puis mettez à jour ou corrigez.
Erreur 500 sur PrestaShop : diagnostic complet et solutions
L'erreur 500 sur PrestaShop se diagnostique en activant le mode debug pour obtenir la stack trace, puis en vérifiant les modules, la version PHP, les overrides et les logs serveur. La cause la plus fréquente est un module incompatible qu'il suffit de désactiver pour restaurer le site.
Bouton panier et sélecteur de langue en panne sur PrestaShop : diagnostic complet
Un bouton panier et un sélecteur de langue en panne simultanément signalent presque toujours un conflit JavaScript. Le diagnostic passe par la console développeur, la vérification du CCC, l'isolation des modules et le contrôle de l'intégrité des fichiers du thème.
Impossible de modifier un thème PrestaShop : diagnostic et solutions
Un thème PrestaShop impossible à modifier ou provoquant une page blanche est généralement causé par une erreur PHP masquée, une mémoire insuffisante ou un cache persistant. Activez le mode debug, augmentez la mémoire à 512 Mo minimum et videz tous les caches pour résoudre le problème.
Résoudre le problème d'ajout au panier sur PrestaShop 1.7 et 8.x
Un bouton « Ajouter au panier » inopérant sur PrestaShop est presque toujours causé par un conflit JavaScript entre modules ou dans le fichier custom.js du thème. Le diagnostic passe par la console navigateur, l'isolation des modules et la purge complète des caches (PrestaShop + navigateur).
Module PrestaShop : AdminController et page blanche — correction
Une page blanche sur le gestionnaire de modules PrestaShop se diagnostique en activant le mode debug (_PS_MODE_DEV_) puis en analysant les logs d'erreur Apache/Nginx. Les causes principales sont un dépassement mémoire PHP, un module défectueux ou un cache Symfony corrompu.
Modifications FTP ignorées sur PrestaShop : permissions et cache
Si vos modifications FTP ne s'affichent pas sur PrestaShop, activez la recompilation Smarty dans Performances et corrigez les permissions fichiers avec chown utilisateur:www-data et chmod 644/755.
Impossible de créer des produits PrestaShop : corriger la catégorie racine
Si vous ne pouvez plus créer de produits dans PrestaShop, vérifiez en base de données que la catégorie racine possède bien le flag is_root_category = 1 dans la table ps_category. Une simple requête UPDATE suffit à restaurer le fonctionnement normal.
Erreur 405 Method Not Allowed sur la page produit PrestaShop : diagnostic et solution
L'erreur 405 Method Not Allowed lors de la modification d'un produit PrestaShop est le plus souvent causée par une incompatibilité entre la version de PHP et celle de PrestaShop. La solution consiste à vérifier et corriger la version PHP sur votre hébergement, puis à vider le cache.
Erreur Smarty description produit PrestaShop : diagnostic et correction
L'avertissement smarty_internal_templatebase.php sur les descriptions produit est généralement causé par des commentaires Smarty ({* *}) qui masquent le code d'affichage dans product.tpl, ou par un override de Product.php qui empêche la sauvegarde en base de données. Vérifiez votre template, supprimez les commentaires accidentels et adaptez la syntaxe selon votre version de PrestaShop.
Produits dématérialisés PrestaShop : corriger les erreurs de téléchargement
Les erreurs d'ouverture de fichiers téléchargeables dans PrestaShop viennent le plus souvent d'un output buffering parasite qui corrompt le flux binaire, d'un fichier corrompu sur le serveur, ou de limites PHP/serveur trop restrictives. Activez le mode debug, testez l'intégrité du ZIP côté serveur avec unzip -t, et vérifiez les headers HTTP envoyés avant le fichier.
Corriger l'erreur getIdProductAttributesByIdAttributes sur PrestaShop
L'erreur 500 sur les déclinaisons PrestaShop provient de la méthode getIdProductAttributeByIdAttributes() qui lève une exception au lieu de gérer gracieusement les combinaisons manquantes. La solution : un override résilient de Product.php qui retourne 0, combiné à un nettoyage des entrées orphelines en base de données.
Back-office PrestaShop inaccessible : diagnostic et solutions complètes
Un back-office PrestaShop inaccessible se diagnostique en 6 étapes : activer le mode debug, vider les caches, vérifier les permissions fichiers (755/644), corriger la configuration SSL et les URL en base de données, réinstaller le dossier admin si nécessaire, et analyser les logs serveur en dernier recours.
Résoudre les erreurs de connexion au back-office PrestaShop
L'impossibilité d'accéder au back-office PrestaShop provient presque toujours d'une erreur dans la configuration de connexion à la base de données : mot de passe incorrect, mauvaise adresse serveur MySQL (surtout sur mutualisé OVH) ou droits utilisateur insuffisants. Vérifiez settings.inc.php (PS 1.6) ou parameters.php (PS 1.7/8.x) en priorité.
Commandes
5 articlesPanier, checkout, factures, statuts
Extraire les données de facturation PrestaShop via requête SQL
Requête SQL complète pour extraire toutes les données de facturation PrestaShop (factures, clients, adresses, produits, TVA, remises) depuis le gestionnaire SQL du back-office, avec filtres par date et statut, compatible de PrestaShop 1.6 à 8.x.
Masquer des commandes dans le back-office PrestaShop sans les supprimer
Pour masquer des commandes dans le back-office PrestaShop sans les supprimer, ajoutez un champ `active` à la table `ps_orders` et filtrez-le via un override de `AdminOrdersController`. Cette méthode préserve l'intégrité des données et reste réversible à tout moment.
Personnaliser les produits sur la facture PrestaShop : numéro de série et champs custom
Pour afficher des numéros de série ou codes personnalisés sur les factures PrestaShop, étendez ps_order_detail avec un champ custom, créez un module avec interface d'administration pour la saisie, puis overridez le template PDF et la classe HTMLTemplateInvoice pour injecter ces données dans le rendu.
Simplifier le tunnel de commande PrestaShop : supprimer des étapes
Pour simplifier le tunnel de commande PrestaShop en supprimant les étapes d'adresse et de frais de port, configurez un transporteur unique gratuit, utilisez les produits virtuels pour ignorer l'adresse de livraison, et nettoyez le breadcrumb via les templates Smarty (PS 1.6) ou les hooks PHP (PS 8.x).
Ajouter un champ date de livraison dans les commandes PrestaShop
Guide complet pour ajouter un champ date de livraison éditable par produit dans les commandes PrestaShop, avec table SQL dédiée, traitement AJAX sécurisé et approche module compatible 1.7 et 8.x.
Migration
4 articlesUpgrade de version, migration serveur
Migrer ses données vers PrestaShop : guide complet d'import CSV
Pour migrer des données vers PrestaShop, la méthode la plus fiable consiste à partir d'une installation vierge puis à utiliser l'outil d'import CSV natif en respectant l'ordre des dépendances (catégories → produits → déclinaisons → clients → adresses), en combinant le SQL Manager pour l'export et phpMyAdmin pour les cas complexes.
Transférer PrestaShop vers un nouvel hébergeur sans perdre de données
Pour migrer PrestaShop vers un nouvel hébergeur, sauvegardez fichiers et base de données, transférez le tout, adaptez les identifiants BDD dans settings.inc.php (et parameters.php en 8.x) mais conservez impérativement les clés de chiffrement (_COOKIE_KEY_, _RIJNDAEL_KEY_) sous peine de rendre tous les mots de passe clients inutilisables.
Migration PrestaShop vers un nouveau serveur : résoudre les erreurs courantes
Lors d'une migration PrestaShop, les problèmes les plus fréquents sont le cache Symfony corrompu, les permissions fichiers incorrectes et le .htaccess obsolète. Diagnostiquez en distinguant pages legacy et Symfony, puis suivez la checklist : permissions (chown www-data), purge cache (rm -rf var/cache/), régénération .htaccess et mise à jour des URLs en base de données.
Connexion clients impossible après mise à jour PrestaShop : diagnostic et solutions
Après une mise à jour PrestaShop, les connexions clients échouent généralement parce que la cookie key a changé, rendant tous les hash de mots de passe invalides. La solution la plus fiable est de restaurer l'ancienne cookie key depuis votre sauvegarde, ou de mettre en place un rehashage progressif MD5 → bcrypt via un override de la classe Customer.
Sécurité
4 articlesSSL, permissions, failles, mises à jour
Résoudre les problèmes de certificat SSL et contenu mixte sur PrestaShop
Le problème de certificat SSL "partiel" sur PrestaShop est causé par du contenu mixte : des ressources (images, CSS, JS) encore chargées en HTTP. La solution complète implique d'activer le SSL sur toutes les pages, de mettre à jour les URLs en base de données via des requêtes REPLACE, de corriger le thème et les modules, et d'ajouter le header upgrade-insecure-requests comme filet de sécurité.
Sécuriser PrestaShop avant mise en production : checklist complète
Avant de lancer une boutique PrestaShop en production, sécurisez les points d'entrée critiques : renommez le dossier admin, ajoutez une double authentification HTTP, verrouillez les permissions de fichiers, masquez phpMyAdmin et installez Fail2Ban. Ces mesures s'appliquent de PrestaShop 1.6 à 8.x.
Réinitialiser le mot de passe admin PrestaShop via phpMyAdmin
Pour récupérer l'accès au back-office PrestaShop, régénérez le mot de passe admin via phpMyAdmin : hash MD5(cookie_key + password) sur PS 1.6, ou bcrypt via password_hash() sur PS 1.7/8.x, puis mettez à jour la colonne passwd de la table ps_employee.
Images en HTTP au lieu de HTTPS sur PrestaShop : diagnostic et solutions
Le contenu mixte HTTP/HTTPS sur PrestaShop provient généralement d'URLs codées en dur dans les templates Smarty ou dans la base de données. La solution : utiliser des chemins relatifs ou les variables Smarty natives, et remplacer les images d'indicateurs par des icônes vectorielles SVG pour de meilleures performances.
Livraison
3 articlesTransporteurs, Mondial Relay, Colissimo
Ajouter des boutons de choix transporteur pour le retour produit PrestaShop
Pour ajouter un choix de transporteur (Colissimo / Mondial Relay) au formulaire de retour produit PrestaShop, modifiez le template front-office avec des boutons radio, traitez le choix dans un override de OrderReturnController via postProcess(), puis envoyez une notification email personnalisée avec Mail::Send(). L'approche module via le hook actionOrderReturn est recommandée pour la maintenabilité.
Corriger l'affichage du module Mondial Relay sur PrestaShop
Les problèmes d'affichage Mondial Relay sur PrestaShop proviennent de conflits CSS (classes Bootstrap et background du thème masquant le widget) ou d'erreurs JavaScript causées par ps_checkout. Les correctifs passent par la suppression des classes conflictuelles dans le template, l'ajout de `background: none` dans custom.css, et la désactivation ou mise à jour de ps_checkout.
Mondial Relay PrestaShop : résoudre les conflits JavaScript du module
Le module Mondial Relay qui ne fonctionne pas au checkout est presque toujours causé par un conflit JavaScript : un script tiers chargé avant jQuery bloque l'initialisation du widget. La solution consiste à désactiver le CCC pour identifier le script fautif, puis à le déplacer après l'inclusion de jQuery dans vos templates.
Multi-boutique
3 articlesConfiguration multi-shop, id_shop
Multiboutique PrestaShop : afficher les produits d'un autre site avec Homefeatured
Pour afficher les produits d'une boutique B sur la page d'accueil d'une boutique A en multiboutique PrestaShop, la solution recommandée est un module personnalisé avec requête SQL ciblant explicitement l'id_shop source, combiné à une génération d'URLs via Shop::setContext() pour pointer vers le bon domaine.
Import CSV multiboutique PrestaShop : résoudre les conflits multilingues
L'import CSV multiboutique multilingue de PrestaShop duplique les données sur toutes les langues actives au lieu de cibler uniquement la langue sélectionnée. La solution : importer la langue par défaut sans forcer les IDs, récupérer les identifiants générés, puis importer les langues secondaires avec les IDs forcés — ou mieux, utiliser l'API Webservice sur PrestaShop 8.x.
Corriger l'erreur « id_shop n'est pas valide » en multi-boutique PrestaShop
L'erreur « id_shop n'est pas valide » survient quand un module PrestaShop ne possède pas de table _shop associative ni la déclaration multishop dans son ObjectModel. La correction implique de créer la table manquante, d'ajouter id_shop dans les tables existantes, et de mettre à jour la définition du modèle PHP.
E-mails
1 articleTemplates, SMTP, notifications
API & Webservice
1 articleREST API, webservices, intégrations
Paiement
1 articleModules paiement, Stripe, PayPal