PS PrestaShop Débutant

Nettoyage HTML des descriptions produits et catégories

Installer et utiliser le module dfhtmlcleaner : simuler, régler les 24 règles, nettoyer par lots et restaurer une exécution.

Mis à jour Version du module 1.0.1

Installation

  1. Téléchargez l’archive dfhtmlcleaner.zip depuis votre compte client DataFirefly.
  2. Dans le back-office, ouvrez Modules → Gestionnaire de modules, cliquez sur Installer un module et déposez l’archive.
  3. Une fois l’installation terminée, un onglet HTML Cleaner apparaît sous le menu Catalogue.

L’installation crée la table ps_dfhtmlcleaner_backup, qui stocke les valeurs remplacées. Elle est supprimée à la désinstallation.

Faites une sauvegarde de votre base de données avant le premier nettoyage réel. Le module conserve les valeurs écrasées et sait les restaurer, mais une sauvegarde complète reste le filet de sécurité de référence.

Prérequis

  • PrestaShop 8.0 à 9.x
  • PHP 7.4 à 8.3
  • Extensions PHP dom et mbstring activées

Premier passage : simuler avant d’écrire

Ouvrez Catalogue → HTML Cleaner. Le panneau Lancer un nettoyage se trouve en haut de la page.

  1. Cochez les contenus à traiter. Produits et Catégories le sont par défaut ; vous pouvez ajouter les pages CMS, les marques et les fournisseurs.
  2. Choisissez une langue, ou laissez Toutes les langues. En multiboutique, un sélecteur de boutique apparaît également.
  3. Cliquez sur Simuler. Rien n’est écrit en base.

À la fin du parcours, trois informations vous sont rendues : le nombre d’enregistrements analysés, le nombre d’enregistrements que le nettoyage modifierait, et le poids total économisé. En dessous, jusqu’à dix comparaisons avant/après sont affichées côte à côte, chacune avec un lien direct vers la fiche concernée.

Si le nombre de fiches concernées vous surprend, ouvrez deux ou trois exemples et vérifiez le résultat avant d’aller plus loin. C’est précisément le rôle de ce mode.

Nettoyer pour de vrai

Une fois la simulation validée, cliquez sur Nettoyer réellement et confirmez. Le parcours reprend à l’identique, mais les valeurs sont cette fois écrites.

Le traitement se fait par lots successifs en AJAX. Une barre de progression indique l’avancement, un journal liste les lots traités, et le bouton Arrêter interrompt proprement à la fin du lot en cours. Laissez l’onglet ouvert pendant l’opération.

Taille des lots

Par défaut, 50 enregistrements sont traités par requête. Sur un hébergement mutualisé lent, descendez à 10 ou 20 dans les réglages généraux. Sur un serveur dédié, vous pouvez monter jusqu’à 500.

Les règles en détail

Les règles sont regroupées en quatre familles, plus bas dans la page. Toute modification enregistrée est prise en compte immédiatement, y compris par le bac à sable.

Balisage ancien et non sûr

  • Markup Microsoft Word / Office : commentaires conditionnels, îlots XML, balises <o:p>, <w:WordDocument>, <v:shape> et attributs mso-*.
  • Commentaires HTML.
  • Éléments script, style, object et form. Les gestionnaires d’événements onclick et assimilés sont retirés dans tous les cas, quelle que soit l’option.
  • Iframes. Trois modes : tout garder, garder uniquement les fournisseurs de confiance (défaut), tout supprimer. La liste par défaut couvre YouTube, Vimeo, Dailymotion, Google Maps, SoundCloud, Spotify et OpenStreetMap. Ajoutez vos propres domaines dans le champ prévu, un par ligne ou séparés par des virgules. La vérification porte sur le domaine réel : une adresse du type youtube.com.exemple.tld est rejetée.

Attributs

  • Styles inline : Conserver, Filtrer (défaut) ou Supprimer. Le mode Filtrer retire mso-*, font-family, font-size, line-height, color et quelques autres, et conserve ce qui relève de la mise en page.
  • Classes : Conserver, Retirer les classes d’éditeur (défaut : MsoNormal, ql-, gmail_, x_, western) ou Supprimer.
  • Attributs id : désactivé par défaut, car des ancres internes peuvent en dépendre.
  • Attributs data-* : désactivé par défaut, certains thèmes et modules s’en servent.
  • Attributs de présentation dépréciés : align, bgcolor, border, cellpadding, face, valign, etc.
  • Attributs non reconnus : seule une liste sûre est conservée (href, src, alt, title, colspan…), complétée par les attributs propres aux médias sur iframe, video, audio et source.
  • width et height sur les images. Désactivé par défaut, car ces attributs limitent le décalage de mise en page (CLS).

Structure

  • Dégrouper les span sans attribut et, en option plus agressive, les div sans attribut.
  • Dégrouper les balises font.
  • Moderniser les balises dépréciées : b vers strong, i vers em, center vers div, strike vers s, tt vers code.
  • Supprimer les balises vides. Les cellules de tableau, les lignes et les éléments de structure sont exclus de cette règle pour ne pas déformer la mise en page.
  • Liste blanche de balises : désactivée par défaut. Activée, toute balise hors liste est dégroupée et son contenu texte conservé.

Typographie et médias

  • Espaces insécables : les séries sont réduites à un seul.
  • Sauts de ligne consécutifs : trois <br> ou plus deviennent deux, et les <br> collés à une fermeture de bloc sont retirés.
  • Espaces et indentation. Le contenu des balises pre, code et textarea échappe à cette normalisation.
  • Sécuriser les liens : ajout de rel="noopener noreferrer" sur les liens en target="_blank", suppression des URL javascript:.
  • Attribut alt manquant sur les images, et loading="lazy" en option.

Sauvegardes et restauration

Tant que l’option Sauvegarder avant écriture est active, chaque valeur remplacée est copiée dans la table du module avec un identifiant d’exécution. Le panneau Sauvegardes et restauration liste les exécutions par date et par type de contenu.

Le bouton Restaurer remet en place tous les champs d’une exécution, puis supprime les entrées correspondantes. La rétention se règle en jours dans les réglages généraux ; laissez 0 pour conserver l’historique indéfiniment. Les entrées expirées sont purgées à l’ouverture de la page.

Le nettoyage automatique à l’enregistrement ne crée pas d’entrée de sauvegarde, contrairement au traitement par lots.

Nettoyage automatique à l’enregistrement

L’option Nettoyer automatiquement à l’enregistrement applique les mêmes règles à chaque sauvegarde d’un produit ou d’une catégorie en back-office, via les hooks déclenchés avant écriture de l’objet. Elle couvre aussi bien la page produit v2 que les pages historiques.

Elle est désactivée par défaut. Validez vos règles en simulation avant de l’activer.

Bac à sable

Le panneau Bac à sable applique les règles en vigueur à un extrait HTML collé, et affiche le résultat ainsi que le gain de poids. Rien n’est lu ni écrit en base. C’est le moyen le plus rapide de vérifier l’effet d’un réglage avant de relancer une simulation complète.

Après un gros nettoyage

  • Videz le cache PrestaShop depuis Paramètres avancés → Performances.
  • Si l’indexation automatique de la recherche est active et que votre index inclut les descriptions, reconstruisez-le depuis Paramètres de la boutique → Recherche.

Dépannage

Les boutons Simuler et Nettoyer ne réagissent pas

Vérifiez d’abord que vous êtes en version 1.0.1 ou supérieure, puis rechargez la page avec Ctrl+F5 pour vider le cache du navigateur. Si le problème persiste, ouvrez la console du navigateur : un message dfHtmlCleanerAjaxUrl is not defined indique que le fichier JavaScript du module n’a pas été servi, généralement à cause d’un cache serveur ou de droits de lecture sur modules/dfhtmlcleaner/views/js/.

Le traitement s’arrête au bout de quelques lots

Réduisez la taille des lots à 10 ou 20 dans les réglages généraux, puis relancez. Le traitement reprend depuis le début, mais les fiches déjà propres ne sont plus modifiées : le moteur est idempotent, un second passage ne produit aucune écriture inutile. Le journal affiche le code HTTP renvoyé quand un lot échoue, ce qui permet de distinguer un timeout (504) d’une erreur PHP (500) ou d’un souci de jeton (403).

Une vidéo intégrée a disparu

Le fournisseur n’est probablement pas dans la liste des domaines de confiance. Ajoutez-le, puis restaurez l’exécution concernée depuis le panneau Sauvegardes et relancez.

Un tableau a perdu sa mise en forme

Les attributs width, border et cellpadding des tableaux relèvent des attributs de présentation dépréciés. Si votre thème n’a pas de style CSS pour les tableaux, désactivez cette règle et restaurez l’exécution.

Le nettoyage ne modifie rien

C’est le comportement attendu sur un catalogue déjà propre. Vérifiez avec le bac à sable qu’un extrait connu comme problématique est bien transformé, et que les règles correspondantes sont actives.

Désinstallation

La désinstallation depuis le gestionnaire de modules supprime la table de sauvegarde, les entrées de configuration et l’onglet du menu. Les descriptions déjà nettoyées ne sont pas rétablies : restaurez les exécutions concernées avant de désinstaller si vous souhaitez revenir en arrière.

Cette page vous a-t-elle été utile ?

Toujours bloqué ? Contactez le support