Article technique · Adanora

Boutiques PrestaShop : thème enfant, module sur mesure et versionnage

Publié le , mis à jour le

Deux boutiques PrestaShop composent ce projet : la première, qui vend un coffret mensuel par abonnement, est en service ; la seconde, une épicerie en ligne, n’a pas été publiée.

Rôle
Auteur unique
Période
Juin et septembre 2025
État
En service. Une boutique en service, une seconde arrêtée avant publication
Technologies
PrestaShop 8, PHP, MySQL, Docker Compose
Dépôts
Deux
Thème enfant et module de la boutiqueLe thème enfant hérite du thème Classic de PrestaShop, dont il surcharge quelques gabarits, et déclare un module sur mesure qui affiche les formules d’abonnement sur la page d’accueil.Thème Classicfourni, inchangéThème enfantgabarits surchargésstyles et policesModuleformulesd’abonnementhérité pardéclare
Figure 1. Ce qui a été écrit pour la boutique en service : un thème enfant et un module, sans modification du cœur de PrestaShop.

Contexte

Il s’agit de deux travaux modestes : un PrestaShop standard, un thème enfant et un petit module pour chacun. La première boutique présente trois formules d’abonnement à un coffret mensuel. La seconde devait proposer un catalogue d’épicerie réparti en trois familles, et son développement s’est arrêté au bout de deux jours.

La boutique en service est Adanora (s’ouvre dans un nouvel onglet) ; le nom de la seconde ne figure pas dans cet article.

Page d’accueil d’adanora.ch : le menu des coffrets sur bandeau vert, puis une photographie d’une serviette, d’un flacon et d’une bougie avec la devise « Le beau et le bon, réunis dans un même geste ».
Figure 2. Page d’accueil d’Adanora, la boutique en service.

Problème

PrestaShop se met à jour en remplaçant ses fichiers, de sorte que toute modification apportée au cœur ou au thème fourni est perdue à la mise à jour suivante. La page d’accueil de la première boutique demandait par ailleurs un bloc qu’aucun module standard ne fournit, à savoir trois déclinaisons d’un même produit présentées comme trois formules. Il fallait enfin décider de ce qui se versionne lorsque le dépôt contient l’arborescence entière d’un CMS.

Réponse apportée

Un thème enfant, aucune modification du cœur

Le thème enfant hérite des ressources du thème Classic et ne recopie que les gabarits qu’il modifie : l’en-tête, le pied de page, la fiche produit, la liste des produits et quelques blocs de la page d’accueil. Les gabarits des modules sont surchargés depuis le répertoire du thème, si bien qu’une mise à jour d’un module ne les efface pas.

Un module là où le thème ne suffisait pas

Le bloc des formules est un module d’une centaine de lignes, qui interroge la base pour obtenir les trois déclinaisons du produit et les transmet à un gabarit, que le thème surcharge à son tour pour les présenter en trois cartes. Le thème déclare ce module comme une dépendance, afin qu’il soit installé avec lui.

Savoir quoi versionner

La première boutique a d’abord versionné l’arborescence entière, soit plus de trente mille fichiers ajoutés en un commit, qu’il a fallu retirer ensuite en énumérant un à un les répertoires du cœur à ignorer. La seconde part de la règle inverse : tout ignorer, puis réintégrer les thèmes et le module. Cette règle est plus sûre, puisqu’un répertoire ajouté par une mise à jour reste ignoré, mais sa mise au point a tout de même demandé quatre commits.

Tous les articlesVoir la réalisation