PS PrestaShop Początkujący

Czyszczenie HTML opisów produktów i kategorii

Instalacja i użytkowanie modułu dfhtmlcleaner: symulacja, konfiguracja 24 reguł, czyszczenie partiami i przywracanie wykonania.

Zaktualizowano Wersja modułu 1.0.1

Instalacja

  1. Pobierz archiwum dfhtmlcleaner.zip ze swojego konta klienta DataFirefly.
  2. W back-office otwórz Moduły → Menedżer modułów, kliknij Zainstaluj moduł i upuść archiwum.
  3. Po zakończeniu instalacji zakładka HTML Cleaner pojawia się w menu Katalog.

Instalacja tworzy tabelę ps_dfhtmlcleaner_backup, przechowującą zastąpione wartości. Jest ona usuwana przy odinstalowaniu.

Wykonaj kopię zapasową bazy danych przed pierwszym realnym czyszczeniem. Moduł zachowuje nadpisane wartości i potrafi je przywrócić, ale pełna kopia pozostaje podstawową siatką bezpieczeństwa.

Wymagania wstępne

  • PrestaShop 8.0 do 9.x
  • PHP 7.4 do 8.3
  • Aktywne rozszerzenia PHP dom i mbstring

Pierwszy przebieg: symuluj przed zapisem

Otwórz Katalog → HTML Cleaner. Panel Uruchom czyszczenie znajduje się u góry strony.

  1. Zaznacz treści do przetworzenia. Produkty i Kategorie są zaznaczone domyślnie; możesz dodać strony CMS, marki i dostawców.
  2. Wybierz język albo zostaw Wszystkie języki. W multistore pojawia się także selektor sklepu.
  3. Kliknij Symuluj. Nic nie jest zapisywane w bazie.

Po zakończeniu przebiegu otrzymujesz trzy informacje: liczbę przeanalizowanych rekordów, liczbę rekordów, które czyszczenie by zmodyfikowało, oraz łączną zaoszczędzoną wagę. Poniżej wyświetlanych jest do dziesięciu porównań przed/po obok siebie, każde z bezpośrednim linkiem do danej karty.

Jeśli liczba objętych kart Cię zaskakuje, otwórz dwa lub trzy przykłady i sprawdź wynik, zanim pójdziesz dalej. Właśnie do tego służy ten tryb.

Czyszczenie na serio

Po zatwierdzeniu symulacji kliknij Wyczyść naprawdę i potwierdź. Przebieg jest identyczny, ale tym razem wartości są zapisywane.

Przetwarzanie odbywa się kolejnymi partiami w AJAX. Pasek postępu pokazuje zaawansowanie, dziennik listuje przetworzone partie, a przycisk Zatrzymaj czysto przerywa pracę na końcu bieżącej partii. Zostaw kartę otwartą podczas operacji.

Rozmiar partii

Domyślnie na jedno żądanie przetwarzanych jest 50 rekordów. Na wolnym hostingu współdzielonym zejdź do 10 lub 20 w ustawieniach ogólnych. Na serwerze dedykowanym możesz wejść aż do 500.

Reguły w szczegółach

Reguły są pogrupowane w cztery rodziny, niżej na stronie. Każda zapisana zmiana jest uwzględniana natychmiast, także przez piaskownicę.

Stare i niebezpieczne znaczniki

  • Markup Microsoft Word / Office: komentarze warunkowe, wyspy XML, znaczniki <o:p>, <w:WordDocument>, <v:shape> i atrybuty mso-*.
  • Komentarze HTML.
  • Elementy script, style, object i form. Handlery zdarzeń onclick i podobne są usuwane w każdym przypadku, niezależnie od opcji.
  • Iframe’y. Trzy tryby: zachowaj wszystko, zachowaj tylko zaufanych dostawców (domyślnie), usuń wszystko. Domyślna lista obejmuje YouTube, Vimeo, Dailymotion, Google Maps, SoundCloud, Spotify i OpenStreetMap. Dodaj własne domeny w przewidzianym polu, po jednej na linię lub rozdzielone przecinkami. Weryfikacja dotyczy rzeczywistej domeny: adres typu youtube.com.przyklad.tld jest odrzucany.

Atrybuty

  • Style inline: Zachowaj, Filtruj (domyślnie) lub Usuń. Tryb Filtruj usuwa mso-*, font-family, font-size, line-height, color i kilka innych, zachowując to, co dotyczy układu.
  • Klasy: Zachowaj, Usuń klasy edytorów (domyślnie: MsoNormal, ql-, gmail_, x_, western) lub Usuń.
  • Atrybuty id: domyślnie wyłączone, bo wewnętrzne kotwice mogą od nich zależeć.
  • Atrybuty data-*: domyślnie wyłączone, niektóre motywy i moduły z nich korzystają.
  • Przestarzałe atrybuty prezentacyjne: align, bgcolor, border, cellpadding, face, valign itd.
  • Nierozpoznane atrybuty: zachowywana jest tylko bezpieczna lista (href, src, alt, title, colspan…), uzupełniona atrybutami medialnymi na iframe, video, audio i source.
  • width i height na obrazach. Domyślnie wyłączone, bo te atrybuty ograniczają przesunięcia układu (CLS).

Struktura

  • Rozpakowywanie span bez atrybutów i, w opcji bardziej agresywnej, div bez atrybutów.
  • Rozpakowywanie znaczników font.
  • Modernizacja przestarzałych znaczników: b na strong, i na em, center na div, strike na s, tt na code.
  • Usuwanie pustych znaczników. Komórki tabel, wiersze i elementy strukturalne są wykluczone z tej reguły, aby nie zniekształcać układu.
  • Biała lista znaczników: domyślnie wyłączona. Włączona, każdy znacznik spoza listy jest rozpakowywany, a jego treść tekstowa zachowywana.

Typografia i media

  • Twarde spacje: serie są redukowane do jednej.
  • Kolejne łamania linii: trzy lub więcej <br> stają się dwoma, a <br> przyklejone do zamknięcia bloku są usuwane.
  • Spacje i wcięcia. Zawartość znaczników pre, code i textarea jest wyłączona z tej normalizacji.
  • Zabezpieczanie linków: dodanie rel="noopener noreferrer" na linkach z target="_blank", usunięcie adresów javascript:.
  • Brakujący atrybut alt na obrazach oraz opcjonalnie loading="lazy".

Kopie zapasowe i przywracanie

Dopóki opcja Kopia przed zapisem jest aktywna, każda zastąpiona wartość jest kopiowana do tabeli modułu z identyfikatorem wykonania. Panel Kopie zapasowe i przywracanie listuje wykonania według daty i typu treści.

Przycisk Przywróć przywraca wszystkie pola danego wykonania, a potem usuwa odpowiadające wpisy. Retencję ustawia się w dniach w ustawieniach ogólnych; zostaw 0, aby przechowywać historię bezterminowo. Wygasłe wpisy są czyszczone przy otwarciu strony.

Automatyczne czyszczenie przy zapisie nie tworzy wpisu kopii zapasowej, w przeciwieństwie do przetwarzania partiami.

Automatyczne czyszczenie przy zapisie

Opcja Czyść automatycznie przy zapisie stosuje te same reguły przy każdym zapisie produktu lub kategorii w back-office, przez hooki uruchamiane przed zapisem obiektu. Obejmuje zarówno stronę produktu v2, jak i strony historyczne.

Jest domyślnie wyłączona. Zweryfikuj reguły w symulacji przed jej aktywacją.

Piaskownica

Panel Piaskownica stosuje obowiązujące reguły do wklejonego fragmentu HTML i wyświetla wynik wraz z zyskiem wagi. Nic nie jest odczytywane ani zapisywane w bazie. To najszybszy sposób sprawdzenia efektu ustawienia przed ponowną pełną symulacją.

Po dużym czyszczeniu

  • Wyczyść cache PrestaShop w Zaawansowane → Wydajność.
  • Jeśli automatyczne indeksowanie wyszukiwania jest aktywne, a Twój indeks obejmuje opisy, przebuduj go w Ustawienia sklepu → Wyszukiwanie.

Rozwiązywanie problemów

Przyciski Symuluj i Wyczyść nie reagują

Najpierw sprawdź, czy masz wersję 1.0.1 lub nowszą, potem przeładuj stronę przez Ctrl+F5, aby wyczyścić cache przeglądarki. Jeśli problem trwa, otwórz konsolę przeglądarki: komunikat dfHtmlCleanerAjaxUrl is not defined oznacza, że plik JavaScript modułu nie został zaserwowany, zwykle przez cache serwera lub uprawnienia odczytu na modules/dfhtmlcleaner/views/js/.

Przetwarzanie zatrzymuje się po kilku partiach

Zmniejsz rozmiar partii do 10 lub 20 w ustawieniach ogólnych i uruchom ponownie. Przetwarzanie zaczyna od początku, ale już czyste karty nie są modyfikowane: silnik jest idempotentny, drugi przebieg nie generuje żadnych zbędnych zapisów. Dziennik pokazuje kod HTTP zwrócony, gdy partia zawiedzie, co pozwala odróżnić timeout (504) od błędu PHP (500) czy problemu z tokenem (403).

Osadzone wideo zniknęło

Dostawca prawdopodobnie nie jest na liście zaufanych domen. Dodaj go, potem przywróć dane wykonanie z panelu Kopii zapasowych i uruchom ponownie.

Tabela straciła formatowanie

Atrybuty width, border i cellpadding tabel należą do przestarzałych atrybutów prezentacyjnych. Jeśli Twój motyw nie ma stylów CSS dla tabel, wyłącz tę regułę i przywróć wykonanie.

Czyszczenie nic nie zmienia

To oczekiwane zachowanie na już czystym katalogu. Sprawdź w piaskownicy, czy znany problematyczny fragment jest faktycznie przekształcany i czy odpowiednie reguły są aktywne.

Odinstalowanie

Odinstalowanie z menedżera modułów usuwa tabelę kopii zapasowych, wpisy konfiguracji i zakładkę menu. Już wyczyszczone opisy nie są przywracane: przed odinstalowaniem przywróć odpowiednie wykonania, jeśli chcesz się cofnąć.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia