PS PrestaShop Principiante

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.

Aggiornato Versione del modulo 1.0.1

Installazione

  1. Scarica l’archivio dfhtmlcleaner.zip dal tuo account cliente DataFirefly.
  2. Nel back office apri Moduli → Gestore moduli, fai clic su Carica un modulo e trascina l’archivio.
  3. 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 dom e mbstring attive

Primo passaggio: simulare prima di scrivere

Apri Catalogo → HTML Cleaner. Il pannello Avvia una pulizia si trova in cima alla pagina.

  1. Spunta i contenuti da elaborare. Prodotti e Categorie sono già selezionati; puoi aggiungere pagine CMS, marchi e fornitori.
  2. Scegli una lingua oppure lascia Tutte le lingue. In multinegozio compare anche un selettore di negozio.
  3. 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 attributi mso-*.
  • Commenti HTML.
  • Elementi script, style, object e form. I gestori di eventi come onclick vengono 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.tld viene rifiutato.

Attributi

  • Stili inline: Mantieni, Filtra (predefinito) o Rimuovi. La modalità Filtra elimina mso-*, font-family, font-size, line-height, color e 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, valign e altri.
  • Attributi non riconosciuti: viene conservato solo un elenco sicuro (href, src, alt, title, colspan…), integrato dagli attributi specifici dei media su iframe, video, audio e source.
  • 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: b in strong, i in em, center in div, strike in s, tt in code.
  • 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, code e textarea sfugge a questa normalizzazione.
  • Mettere in sicurezza i link: aggiunta di rel="noopener noreferrer" sui link con target="_blank", rimozione degli URL javascript:.
  • 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.

Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza