Doublons de titres produit
baba_duplicatechecker · v2.0.0 · AGPL-3.0-or-later
Trouve les produits qui portent le même nom — un problème de référencement autant que de catalogue — et laisse les renommer ou en retirer un, depuis le back-office seulement. Le dernier exemplaire d'un nom n'est jamais supprimable.
Ce que ce module fait, et ce qu'il refuse
- ✓La version 1.0.0 laissait n'importe qui supprimer n'importe quel produit — mesuré, puis refermé : les mêmes requêtes anonymes rendent 404
- ✓La garde n'est pas qu'une authentification : seul un produit membre d'un groupe de doublons d'au moins deux est supprimable, et les groupes sont recalculés à chaque action
- ✓Le dernier exemplaire d'un nom n'est jamais supprimable — dédoublonner ne doit pas vouloir dire perdre le produit
- ✓Renommer, le geste non destructeur, obéit au même périmètre
- ✓La casse et les espaces de bordure ne séparent pas : Chemise bleue et chemise BLEUE forment un groupe
- ✓Aucune table créée, aucun greffon enregistré, rien d'exposé côté boutique
- ✓La langue et la boutique courantes décident — la version précédente les écrivait en dur
- ✓Le préfixe de tables est lu, plus écrit en dur : le module tourne sur une boutique dont le préfixe n'est pas ps_
- ✓Nombre de groupes affichés réglable de 1 à 500 — la version précédente en montrait 10, sans le dire
- ✓La montée de version retire le greffon, l'accès rapide et la table morte laissés en base
- ✓45 vérifications livrées avec le module, rejouables sans PHPUnit ni base
Le problème
Deux produits portent le même nom. C'est un problème de catalogue — un client qui hésite entre deux fiches identiques — et un problème de référencement : deux pages qui se disputent la même requête s'affaiblissent l'une l'autre.
Encore faut-il les trouver. Ce module les groupe par nom, et laisse les renommer ou en retirer un, depuis le back-office seulement.
Ce que l'écran montre
Les produits sont groupés par nom, à partir de deux exemplaires. La casse et les espaces de bordure ne séparent pas : *Chemise bleue* et *chemise BLEUE* forment un groupe.
Chaque ligne du groupe porte deux gestes : renommer, ou supprimer. Le nombre de groupes affichés est réglable de 1 à 500 — la version précédente en montrait 10, sans le dire.
La garde, et pourquoi elle est plus qu'une authentification
Seul un produit membre d'un groupe de doublons d'au moins deux est supprimable, et les groupes sont recalculés à chaque action. Le dernier exemplaire d'un nom n'est jamais supprimable : dédoublonner ne doit pas vouloir dire perdre le produit. Renommer, le geste non destructeur, obéit au même périmètre.
Si vous veniez de la version 1.0.0
Mettez-la à jour, et ce n'est pas une formule.
La 1.0.0 exposait ces deux actions dans un contrôleur côté boutique, public et sans jeton. Mesuré sur PrestaShop 9.0.3 par de simples requêtes anonymes : n'importe qui pouvait changer le prix d'un produit, puis le supprimer. Aucune session, aucun mot de passe.
Ce contrôleur n'existe plus. Les mêmes requêtes rendent désormais 404 — mesuré aussi.
La mise à jour retire par ailleurs ce que la 1.0.0 laissait derrière elle : un greffon devenu inutile, un accès rapide, et une table morte en base.
Ce que la version 2.0.0 corrige en plus
- La langue et la boutique courantes décident de ce qui est comparé. La
version précédente les écrivait en dur, donc comparait les noms d'une autre langue que celle que vous regardiez.
- Le préfixe des tables est lu, plus écrit en dur : le module tourne sur une
boutique dont le préfixe n'est pas celui d'une installation neuve.
- Aucune table créée, aucun greffon enregistré, rien d'exposé côté boutique.
Le test est livré avec le module
php tests/DoublonsTest.php
45 vérifications, sans dépendance ni base de données.
Installation
Back-office → Modules → Installer un module → déposer le .zip, puis Configurer. Le module ne pose aucun onglet dans le menu : son écran est sa page de configuration, derrière la session employé et le jeton d'administration que PrestaShop pose lui-même. La désinstallation ne laisse rien derrière elle.
Ce que la licence exige de vous
Ce module est sous AGPL-3.0-or-later. Installé sans modification, vous n'avez rien à publier. Modifié et servi à vos visiteurs, vous devez leur offrir la source de ce module modifié — jamais celle de votre boutique, de votre thème, ni du cœur de PrestaShop. Le fichier NOTICE de l'archive porte les attributions exactes.
Le module est gratuit. Une adresse e-mail suffit.
Sans compte à créer, et la lettre d'information reste facultative.