💻

Développement

Modules, hooks, overrides, Symfony, API

61 articles

Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Avancé5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Avancé5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Débutant5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire7 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Débutant5 FAQ

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é.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Avancé5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire15 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire15 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Débutant5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire7 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire7 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire6 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire7 FAQ

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é.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire6 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire7 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire6 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire7 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Avancé5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.6PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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).

PS 1.7PS 8.x
Lire l'article
Intermédiaire5 FAQ

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.

PS 1.5PS 1.6PS 1.7PS 8.x
Lire l'article