Pulizia HTML delle descrizioni prodotti e categorie
Installare e usare il modulo dfhtmlcleaner: simulare, regolare le 24 regole, pulire a lotti e ripristinare un'esecuzione.
Installazione
- Scarica l’archivio
dfhtmlcleaner.zipdal tuo account cliente DataFirefly. - Nel back office apri Moduli → Gestore moduli, fai clic su Carica un modulo e trascina l’archivio.
- A installazione completata, sotto il menu Catalogo compare la scheda HTML Cleaner.
L’installazione crea la tabella ps_dfhtmlcleaner_backup, che conserva i valori sostituiti. Viene eliminata alla disinstallazione.
Esegui un backup del database prima della prima pulizia reale. Il modulo conserva i valori sovrascritti e sa ripristinarli, ma un backup completo resta la rete di sicurezza di riferimento.
Requisiti
- PrestaShop da 8.0 a 9.x
- PHP da 7.4 a 8.3
- Estensioni PHP
domembstringattive
Primo passaggio: simulare prima di scrivere
Apri Catalogo → HTML Cleaner. Il pannello Avvia una pulizia si trova in cima alla pagina.
- Spunta i contenuti da elaborare. Prodotti e Categorie sono già selezionati; puoi aggiungere pagine CMS, marchi e fornitori.
- Scegli una lingua oppure lascia Tutte le lingue. In multinegozio compare anche un selettore di negozio.
- Fai clic su Simula. Nel database non viene scritto nulla.
Al termine del passaggio ottieni tre dati: quanti record sono stati analizzati, quanti la pulizia modificherebbe e il peso totale risparmiato. Sotto vengono mostrati fino a dieci confronti prima/dopo affiancati, ciascuno con un link diretto alla scheda.
Se il numero di schede interessate ti sorprende, apri due o tre esempi e verifica il risultato prima di proseguire. È esattamente lo scopo di questa modalità.
Pulire davvero
Quando la simulazione ti convince, fai clic su Pulisci davvero e conferma. Il passaggio si ripete identico, ma questa volta i valori vengono scritti.
L’elaborazione avviene a lotti successivi in AJAX. Una barra di avanzamento mostra il progresso, un registro elenca i lotti elaborati e il pulsante Interrompi ferma il processo in modo pulito alla fine del lotto in corso. Lascia la scheda aperta durante l’operazione.
Dimensione dei lotti
Per impostazione predefinita vengono elaborati 50 record per richiesta. Su hosting condiviso lento scendi a 10 o 20 nelle impostazioni generali. Su un server dedicato puoi salire fino a 500.
Le regole nel dettaglio
Le regole sono raggruppate in quattro famiglie più in basso nella pagina. Ogni modifica salvata ha effetto immediato, anche nell’area di prova.
Marcatura obsoleta e non sicura
- Codice Microsoft Word / Office: commenti condizionali, isole XML, tag
<o:p>,<w:WordDocument>,<v:shape>e attributimso-*. - Commenti HTML.
- Elementi script, style, object e form. I gestori di eventi come
onclickvengono rimossi in ogni caso, qualunque sia questa opzione. - Iframe. Tre modalità: tenere tutto, tenere solo i fornitori affidabili (predefinita), rimuovere tutto. L’elenco predefinito copre YouTube, Vimeo, Dailymotion, Google Maps, SoundCloud, Spotify e OpenStreetMap. Aggiungi i tuoi domini nel campo previsto, uno per riga o separati da virgole. La verifica riguarda il dominio reale: un indirizzo del tipo
youtube.com.esempio.tldviene rifiutato.
Attributi
- Stili inline: Mantieni, Filtra (predefinito) o Rimuovi. La modalità Filtra elimina
mso-*,font-family,font-size,line-height,colore alcuni altri, e conserva quanto riguarda l’impaginazione. - Classi: Mantieni, Rimuovi le classi dell’editor (predefinito:
MsoNormal,ql-,gmail_,x_,western) o Rimuovi. - Attributi id: disattivato per impostazione predefinita, perché alcune ancore interne possono dipenderne.
- Attributi data-*: disattivato per impostazione predefinita, alcuni temi e moduli li utilizzano.
- Attributi di presentazione obsoleti:
align,bgcolor,border,cellpadding,face,valigne altri. - Attributi non riconosciuti: viene conservato solo un elenco sicuro (
href,src,alt,title,colspan…), integrato dagli attributi specifici dei media suiframe,video,audioesource. - width e height sulle immagini. Disattivato per impostazione predefinita, perché questi attributi riducono lo spostamento del layout (CLS).
Struttura
- Scartare gli span senza attributi e, come opzione più aggressiva, i div senza attributi.
- Scartare i tag font.
- Ammodernare i tag obsoleti:
binstrong,iinem,centerindiv,strikeins,ttincode. - Rimuovere i tag vuoti. Le celle di tabella, le righe e gli elementi di struttura sono esclusi da questa regola per non deformare l’impaginazione.
- Lista bianca di tag: disattivata per impostazione predefinita. Se attivata, ogni tag fuori elenco viene scartato conservandone il contenuto testuale.
Tipografia e media
- Spazi unificatori: le sequenze vengono ridotte a uno solo.
- Interruzioni di riga consecutive: tre
<br>o più diventano due, e i<br>attaccati a una chiusura di blocco vengono tolti. - Spazi e indentazione. Il contenuto dei tag
pre,codeetextareasfugge a questa normalizzazione. - Mettere in sicurezza i link: aggiunta di
rel="noopener noreferrer"sui link contarget="_blank", rimozione degli URLjavascript:. - Attributo alt mancante sulle immagini e
loading="lazy"come opzione.
Backup e ripristino
Finché l’opzione Salvare prima della scrittura è attiva, ogni valore sostituito viene copiato nella tabella del modulo con un identificativo di esecuzione. Il pannello Backup e ripristino elenca le esecuzioni per data e tipo di contenuto.
Il pulsante Ripristina rimette a posto tutti i campi di un’esecuzione, poi elimina le voci corrispondenti. La conservazione si imposta in giorni nelle impostazioni generali; lascia 0 per mantenere lo storico a tempo indeterminato. Le voci scadute vengono eliminate all’apertura della pagina.
La pulizia automatica al salvataggio non crea una voce di backup, a differenza dell’elaborazione a lotti.
Pulizia automatica al salvataggio
L’opzione Pulire automaticamente al salvataggio applica le stesse regole a ogni salvataggio di un prodotto o di una categoria nel back office, tramite gli hook attivati prima della scrittura dell’oggetto. Copre sia la pagina prodotto v2 sia le pagine precedenti.
È disattivata per impostazione predefinita. Valida le tue regole in simulazione prima di attivarla.
Area di prova
Il pannello Area di prova applica le regole in vigore a un frammento HTML incollato e mostra il risultato insieme al peso risparmiato. Non viene letto né scritto nulla nel database. È il modo più rapido di verificare l’effetto di un’impostazione prima di rilanciare una simulazione completa.
Dopo un’esecuzione importante
- Svuota la cache di PrestaShop da Parametri avanzati → Prestazioni.
- Se l’indicizzazione automatica della ricerca è attiva e il tuo indice include le descrizioni, ricostruiscilo da Parametri del negozio → Ricerca.
Risoluzione dei problemi
I pulsanti Simula e Pulisci non rispondono
Verifica prima di tutto di essere in versione 1.0.1 o successiva, poi ricarica la pagina con Ctrl+F5 per svuotare la cache del browser. Se il problema resta, apri la console del browser: un messaggio dfHtmlCleanerAjaxUrl is not defined indica che il file JavaScript del modulo non è stato servito, di solito per una cache lato server o per i permessi di lettura su modules/dfhtmlcleaner/views/js/.
L’elaborazione si ferma dopo qualche lotto
Riduci la dimensione dei lotti a 10 o 20 nelle impostazioni generali, poi rilancia. Il passaggio riparte dall’inizio, ma le schede già pulite non vengono più modificate: il motore è idempotente, un secondo passaggio non produce scritture inutili. Il registro riporta il codice HTTP restituito quando un lotto fallisce, il che permette di distinguere un timeout (504) da un errore PHP (500) o da un problema di token (403).
Un video incorporato è sparito
Con ogni probabilità il fornitore non è nell’elenco dei domini affidabili. Aggiungilo, ripristina l’esecuzione interessata dal pannello Backup e rilancia.
Una tabella ha perso la formattazione
Gli attributi width, border e cellpadding delle tabelle rientrano tra gli attributi di presentazione obsoleti. Se il tuo tema non ha CSS per le tabelle, disattiva quella regola e ripristina l’esecuzione.
La pulizia non modifica nulla
È il comportamento atteso su un catalogo già pulito. Verifica con l’area di prova che un frammento che sai essere problematico venga effettivamente trasformato, e che le regole corrispondenti siano attive.
Disinstallazione
La disinstallazione dal gestore moduli elimina la tabella di backup, le voci di configurazione e la scheda del menu. Le descrizioni già pulite non vengono ripristinate: se vuoi tornare indietro, ripristina le esecuzioni che ti interessano prima di disinstallare.