# HTML-Bereinigung der Produkt- und Kategoriebeschreibungen

> Installation Laden Sie das Archiv dfhtmlcleaner.zip aus Ihrem DataFirefly-Kundenkonto herunter. Öffnen Sie im Backoffice Module → Modul-Manager, klicken Sie auf Modul hochladen und legen Sie das Archiv ab. Nach der…

- Seite: <https://www.datafirefly.com/de/documentation/nettoyage-html-descriptions-prestashop/>
- Sprache: de
- Aktualisiert am: 2026-07-27
- Weitere Sprachen: [fr](https://www.datafirefly.com/documentation/nettoyage-html-descriptions-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/nettoyage-html-descriptions-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/nettoyage-html-descriptions-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/nettoyage-html-descriptions-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/nettoyage-html-descriptions-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/nettoyage-html-descriptions-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/nettoyage-html-descriptions-prestashop/index.md)
- Index: <https://www.datafirefly.com/de/documentation/llms.txt>

## Installation

1. Laden Sie das Archiv `dfhtmlcleaner.zip` aus Ihrem DataFirefly-Kundenkonto herunter.
2. Öffnen Sie im Backoffice **Module → Modul-Manager**, klicken Sie auf **Modul hochladen** und legen Sie das Archiv ab.
3. Nach der Installation erscheint unter dem Menü **Katalog** der Reiter **HTML Cleaner**.

Die Installation legt die Tabelle `ps_dfhtmlcleaner_backup` an, in der ersetzte Werte gespeichert werden. Sie wird bei der Deinstallation entfernt.

Legen Sie vor dem ersten echten Lauf eine Datenbanksicherung an. Das Modul bewahrt überschriebene Werte auf und kann sie zurücksetzen, aber eine vollständige Sicherung bleibt das Netz der Wahl.

## Voraussetzungen

- PrestaShop 8.0 bis 9.x
- PHP 7.4 bis 8.3
- Aktivierte PHP-Erweiterungen `dom` und `mbstring`

## Erster Lauf: simulieren, bevor geschrieben wird

Öffnen Sie **Katalog → HTML Cleaner**. Das Panel _Bereinigung starten_ steht oben auf der Seite.

1. Haken Sie die zu verarbeitenden Inhalte an. **Produkte** und **Kategorien** sind vorausgewählt; CMS-Seiten, Marken und Lieferanten lassen sich ergänzen.
2. Wählen Sie eine Sprache oder belassen Sie _Alle Sprachen_. Bei Multishop erscheint zusätzlich eine Shop-Auswahl.
3. Klicken Sie auf **Simulieren**. Es wird nichts in die Datenbank geschrieben.

Am Ende des Durchlaufs erhalten Sie drei Angaben: wie viele Datensätze geprüft wurden, wie viele die Bereinigung ändern würde und die insgesamt eingesparte Größe. Darunter stehen bis zu zehn Vorher/Nachher-Vergleiche nebeneinander, jeweils mit direktem Link zum Datensatz.

Überrascht Sie die Zahl der betroffenen Datensätze, öffnen Sie zwei oder drei Beispiele und prüfen Sie das Ergebnis, bevor Sie weitermachen. Genau dafür ist dieser Modus da.

## Wirklich bereinigen

Wenn die Simulation stimmt, klicken Sie auf **Wirklich bereinigen** und bestätigen Sie. Derselbe Durchlauf läuft erneut, diesmal werden die Werte geschrieben.

Die Verarbeitung erfolgt in aufeinanderfolgenden AJAX-Stapeln. Ein Fortschrittsbalken zeigt den Stand, ein Protokoll listet die verarbeiteten Stapel, und die Schaltfläche **Stopp** bricht am Ende des laufenden Stapels sauber ab. Lassen Sie den Tab währenddessen geöffnet.

### Stapelgröße

Standardmäßig werden 50 Datensätze pro Anfrage verarbeitet. Auf langsamem Shared Hosting gehen Sie in den allgemeinen Einstellungen auf 10 oder 20 herunter. Auf einem dedizierten Server sind bis zu 500 möglich.

## Die Regeln im Detail

Die Regeln sind weiter unten auf der Seite in vier Gruppen zusammengefasst. Jede gespeicherte Änderung greift sofort, auch im Testbereich.

### Altes und unsicheres Markup

- **Microsoft-Word- und Office-Code**: bedingte Kommentare, XML-Inseln, die Tags ``, ``, `` und Attribute `mso-*`.
- **HTML-Kommentare**.
- **script-, style-, object- und form-Elemente**. Event-Handler wie `onclick` werden in jedem Fall entfernt, unabhängig von dieser Option.
- **Iframes**. Drei Modi: alles behalten, nur vertrauenswürdige Anbieter behalten (Standard), alles entfernen. Die Standardliste umfasst YouTube, Vimeo, Dailymotion, Google Maps, SoundCloud, Spotify und OpenStreetMap. Eigene Domains tragen Sie im vorgesehenen Feld ein, eine pro Zeile oder durch Komma getrennt. Geprüft wird die tatsächliche Domain: eine Adresse wie `youtube.com.beispiel.tld` wird abgelehnt.

### Attribute

- **Inline-Styles**: _Behalten_, _Filtern_ (Standard) oder _Entfernen_. Der Filtermodus entfernt `mso-*`, `font-family`, `font-size`, `line-height`, `color` und einige weitere und behält, was zum Layout gehört.
- **Klassen**: _Behalten_, _Editor-Klassen entfernen_ (Standard: `MsoNormal`, `ql-`, `gmail_`, `x_`, `western`) oder _Entfernen_.
- **id-Attribute**: standardmäßig aus, da interne Sprungmarken davon abhängen können.
- **data-*-Attribute**: standardmäßig aus, manche Themes und Module nutzen sie.
- **Veraltete Präsentationsattribute**: `align`, `bgcolor`, `border`, `cellpadding`, `face`, `valign` und weitere.
- **Unbekannte Attribute**: nur eine sichere Liste bleibt erhalten (`href`, `src`, `alt`, `title`, `colspan`…), ergänzt um die medienspezifischen Attribute bei `iframe`, `video`, `audio` und `source`.
- **width und height bei Bildern**. Standardmäßig aus, weil diese Attribute das Layout-Verschieben (CLS) verringern.

### Struktur

- **span-Elemente ohne Attribut auflösen** und als aggressivere Option **div-Elemente ohne Attribut**.
- **font-Tags auflösen**.
- **Veraltete Tags modernisieren**: `b` zu `strong`, `i` zu `em`, `center` zu `div`, `strike` zu `s`, `tt` zu `code`.
- **Leere Elemente entfernen**. Tabellenzellen, Zeilen und Strukturelemente sind von dieser Regel ausgenommen, damit das Layout nicht verrutscht.
- **Tag-Whitelist**: standardmäßig aus. Eingeschaltet wird jedes Tag außerhalb der Liste aufgelöst und sein Textinhalt behalten.

### Typografie und Medien

- **Geschützte Leerzeichen**: Ketten werden auf eines reduziert.
- **Aufeinanderfolgende Zeilenumbrüche**: drei oder mehr `` werden zu zwei, und `` direkt vor einem schließenden Block-Tag entfallen.
- **Leerzeichen und Einrückung**. Der Inhalt der Tags `pre`, `code` und `textarea` entgeht dieser Normalisierung.
- **Links absichern**: `rel="noopener noreferrer"` bei Links mit `target="_blank"`, Entfernung von `javascript:`-URLs.
- **Fehlendes alt-Attribut** bei Bildern und optional **loading="lazy"**.

## Sicherungen und Wiederherstellung

Solange die Option **Vor dem Schreiben sichern** aktiv ist, wird jeder ersetzte Wert mit einer Durchlaufkennung in die Modultabelle kopiert. Das Panel **Sicherungen und Wiederherstellung** listet die Durchläufe nach Datum und Inhaltstyp.

Die Schaltfläche **Wiederherstellen** setzt alle Felder eines Durchlaufs zurück und löscht anschließend die zugehörigen Einträge. Die Aufbewahrungsdauer stellen Sie in Tagen in den allgemeinen Einstellungen ein; 0 behält den Verlauf unbegrenzt. Abgelaufene Einträge werden beim Öffnen der Seite entfernt.

Die automatische Bereinigung beim Speichern legt keinen Sicherungseintrag an, anders als die Stapelverarbeitung.

## Automatische Bereinigung beim Speichern

Die Option **Beim Speichern automatisch bereinigen** wendet dieselben Regeln bei jedem Speichern eines Produkts oder einer Kategorie im Backoffice an, über die Hooks vor dem Schreiben des Objekts. Sie deckt sowohl die Produktseite v2 als auch die älteren Seiten ab.

Sie ist standardmäßig aus. Prüfen Sie Ihre Regeln in der Simulation, bevor Sie sie einschalten.

## Testbereich

Das Panel **Testbereich** wendet die geltenden Regeln auf einen eingefügten HTML-Ausschnitt an und zeigt das Ergebnis samt eingesparter Größe. Es wird nichts aus der Datenbank gelesen oder in sie geschrieben. Das ist der schnellste Weg, die Wirkung einer Einstellung zu prüfen, bevor Sie eine vollständige Simulation erneut starten.

## Nach einem großen Lauf

- Leeren Sie den PrestaShop-Cache unter **Erweiterte Einstellungen → Leistung**.
- Ist die automatische Suchindexierung aktiv und enthält Ihr Index die Beschreibungen, bauen Sie ihn unter **Shop-Parameter → Suche** neu auf.

## Fehlerbehebung

### Die Schaltflächen Simulieren und Bereinigen reagieren nicht

Prüfen Sie zuerst, ob Sie Version 1.0.1 oder neuer einsetzen, und laden Sie die Seite dann mit `Strg+F5` neu, um den Browser-Cache zu leeren. Bleibt es dabei, öffnen Sie die Browser-Konsole: die Meldung `dfHtmlCleanerAjaxUrl is not defined` bedeutet, dass die JavaScript-Datei des Moduls nicht ausgeliefert wurde, meist wegen eines Server-Caches oder wegen Leserechten auf `modules/dfhtmlcleaner/views/js/`.

### Die Verarbeitung bricht nach einigen Stapeln ab

Setzen Sie die Stapelgröße in den allgemeinen Einstellungen auf 10 oder 20 und starten Sie erneut. Der Durchlauf beginnt wieder von vorn, bereits saubere Datensätze werden aber nicht mehr geändert: die Engine ist idempotent, ein zweiter Durchlauf erzeugt keine unnötigen Schreibvorgänge. Das Protokoll gibt bei einem fehlgeschlagenen Stapel den HTTP-Statuscode aus, womit sich ein Timeout (504) von einem PHP-Fehler (500) oder einem Token-Problem (403) unterscheiden lässt.

### Ein eingebettetes Video ist verschwunden

Der Anbieter fehlt vermutlich in der Liste vertrauenswürdiger Domains. Ergänzen Sie ihn, stellen Sie den betroffenen Durchlauf über das Panel Sicherungen wieder her und starten Sie erneut.

### Eine Tabelle hat ihre Formatierung verloren

Die Attribute `width`, `border` und `cellpadding` an Tabellen zählen zu den veralteten Präsentationsattributen. Hat Ihr Theme kein CSS für Tabellen, schalten Sie diese Regel ab und stellen den Durchlauf wieder her.

### Die Bereinigung ändert nichts

Bei einem bereits sauberen Katalog ist das zu erwarten. Prüfen Sie im Testbereich, ob ein bekanntermaßen problematischer Ausschnitt tatsächlich umgeschrieben wird und ob die passenden Regeln aktiv sind.

## Deinstallation

Die Deinstallation über den Modul-Manager entfernt die Sicherungstabelle, die Konfigurationseinträge und den Menüreiter. Bereits bereinigte Beschreibungen werden nicht zurückgesetzt: stellen Sie die betreffenden Durchläufe vor der Deinstallation wieder her, wenn Sie zurück möchten.
