PS PrestaShop Iniciante

Limpeza HTML das descrições de produtos e categorias: documentação

Instalar e utilizar o módulo dfhtmlcleaner: simular, afinar as 24 regras, limpar por lotes e restaurar uma execução.

Atualizado Versão do módulo 1.0.1

Instalação

  1. Descarregue o arquivo dfhtmlcleaner.zip a partir da sua conta de cliente DataFirefly.
  2. No back-office, abra Módulos → Gestor de módulos, clique em Carregar um módulo e coloque o arquivo.
  3. Terminada a instalação, aparece um separador HTML Cleaner no menu Catálogo.

A instalação cria a tabela ps_dfhtmlcleaner_backup, que guarda os valores substituídos. É eliminada na desinstalação.

Faça uma cópia de segurança da base de dados antes da primeira limpeza real. O módulo guarda os valores substituídos e sabe restaurá-los, mas uma cópia completa continua a ser a rede de segurança de referência.

Pré-requisitos

  • PrestaShop 8.0 a 9.x
  • PHP 7.4 a 8.3
  • Extensões PHP dom e mbstring ativas

Primeira passagem: simular antes de escrever

Abra Catálogo → HTML Cleaner. O painel Executar uma limpeza está no topo da página.

  1. Assinale os conteúdos a tratar. Produtos e Categorias estão ativos por predefinição; pode acrescentar as páginas CMS, as marcas e os fornecedores.
  2. Escolha um idioma ou deixe Todos os idiomas. Em multiloja, aparece também um seletor de loja.
  3. Clique em Simular. Nada é escrito na base de dados.

No fim do percurso, obtém três informações: o número de registos analisados, o número de registos que a limpeza alteraria e o peso total poupado. Por baixo, são apresentadas até dez comparações antes/depois lado a lado, cada uma com ligação direta para a ficha em causa.

Se o número de fichas abrangidas o surpreender, abra dois ou três exemplos e verifique o resultado antes de avançar. É precisamente essa a função deste modo.

Limpar a sério

Validada a simulação, clique em Limpar realmente e confirme. O percurso repete-se de forma idêntica, mas desta vez os valores são escritos.

O tratamento é feito por lotes sucessivos em AJAX. Uma barra de progresso indica o avanço, um registo lista os lotes tratados e o botão Parar interrompe de forma limpa no fim do lote em curso. Mantenha o separador aberto durante a operação.

Dimensão dos lotes

Por predefinição, são tratados 50 registos por pedido. Num alojamento partilhado lento, baixe para 10 ou 20 nas definições gerais. Num servidor dedicado, pode subir até 500.

As regras em detalhe

As regras estão agrupadas em quatro famílias, mais abaixo na página. Qualquer alteração gravada é tida em conta de imediato, incluindo pela caixa de testes.

Marcação antiga e não segura

  • Marcação Microsoft Word / Office: comentários condicionais, ilhas XML, etiquetas <o:p>, <w:WordDocument>, <v:shape> e atributos mso-*.
  • Comentários HTML.
  • Elementos script, style, object e form. Os gestores de eventos onclick e equivalentes são removidos em todos os casos, independentemente da opção.
  • Iframes. Três modos: manter tudo, manter apenas os fornecedores de confiança (predefinição) ou eliminar tudo. A lista predefinida cobre YouTube, Vimeo, Dailymotion, Google Maps, SoundCloud, Spotify e OpenStreetMap. Acrescente os seus próprios domínios no campo previsto, um por linha ou separados por vírgulas. A verificação incide sobre o domínio real: um endereço do tipo youtube.com.exemplo.tld é rejeitado.

Atributos

  • Estilos inline: Manter, Filtrar (predefinição) ou Eliminar. O modo Filtrar retira mso-*, font-family, font-size, line-height, color e alguns outros, e mantém o que diz respeito à disposição.
  • Classes: Manter, Retirar as classes de editor (predefinição: MsoNormal, ql-, gmail_, x_, western) ou Eliminar.
  • Atributos id: desativado por predefinição, porque podem existir âncoras internas a depender deles.
  • Atributos data-*: desativado por predefinição, uma vez que alguns temas e módulos os utilizam.
  • Atributos de apresentação obsoletos: align, bgcolor, border, cellpadding, face, valign, etc.
  • Atributos não reconhecidos: só é mantida uma lista segura (href, src, alt, title, colspan…), completada pelos atributos próprios dos meios em iframe, video, audio e source.
  • width e height nas imagens. Desativado por predefinição, porque estes atributos limitam o desvio de disposição (CLS).

Estrutura

  • Desagrupar os span sem atributo e, como opção mais agressiva, os div sem atributo.
  • Desagrupar as etiquetas font.
  • Modernizar as etiquetas obsoletas: b para strong, i para em, center para div, strike para s, tt para code.
  • Eliminar as etiquetas vazias. As células de tabela, as linhas e os elementos de estrutura ficam excluídos desta regra para não deformar a disposição.
  • Lista branca de etiquetas: desativada por predefinição. Quando ativa, qualquer etiqueta fora da lista é desagrupada e o seu conteúdo de texto é conservado.

Tipografia e meios

  • Espaços inquebráveis: as séries são reduzidas a um só.
  • Quebras de linha consecutivas: três <br> ou mais passam a dois, e os <br> colados ao fecho de um bloco são retirados.
  • Espaços e indentação. O conteúdo das etiquetas pre, code e textarea escapa a esta normalização.
  • Proteger as ligações: adição de rel="noopener noreferrer" às ligações com target="_blank" e eliminação dos URL javascript:.
  • Atributo alt em falta nas imagens e loading="lazy" como opção.

A regra dos espaços inquebráveis é indolor em português: ao contrário do francês, a tipografia portuguesa não exige espaço antes de ;, :, ! ou ?. Se o seu catálogo foi importado de uma fonte francesa, esta regra remove precisamente esses espaços residuais.

Cópias de segurança e restauro

Enquanto a opção Guardar antes de escrever estiver ativa, cada valor substituído é copiado para a tabela do módulo com um identificador de execução. O painel Cópias de segurança e restauro lista as execuções por data e por tipo de conteúdo.

O botão Restaurar repõe todos os campos de uma execução e elimina depois as entradas correspondentes. A retenção define-se em dias nas definições gerais; deixe 0 para conservar o histórico indefinidamente. As entradas expiradas são eliminadas na abertura da página.

A limpeza automática ao gravar não cria entrada de cópia de segurança, ao contrário do tratamento por lotes.

Limpeza automática ao gravar

A opção Limpar automaticamente ao gravar aplica as mesmas regras a cada gravação de um produto ou de uma categoria no back-office, através dos hooks acionados antes da escrita do objeto. Cobre tanto a página de produto v2 como as páginas anteriores.

Está desativada por predefinição. Valide as suas regras em simulação antes de a ativar.

Caixa de testes

O painel Caixa de testes aplica as regras em vigor a um excerto de HTML colado e mostra o resultado, bem como o peso poupado. Nada é lido nem escrito na base de dados. É a forma mais rápida de verificar o efeito de uma definição antes de relançar uma simulação completa.

Depois de uma grande limpeza

  • Limpe a cache do PrestaShop em Parâmetros avançados → Desempenho.
  • Se a indexação automática da pesquisa estiver ativa e o seu índice incluir as descrições, reconstrua-o em Parâmetros da loja → Pesquisa.

Resolução de problemas

Os botões Simular e Limpar não reagem

Confirme primeiro que está na versão 1.0.1 ou superior e recarregue a página com Ctrl+F5 para limpar a cache do navegador. Se o problema persistir, abra a consola do navegador: uma mensagem dfHtmlCleanerAjaxUrl is not defined indica que o ficheiro JavaScript do módulo não foi servido, geralmente por causa de uma cache de servidor ou das permissões de leitura em modules/dfhtmlcleaner/views/js/.

O tratamento para ao fim de alguns lotes

Reduza a dimensão dos lotes para 10 ou 20 nas definições gerais e volte a executar. O tratamento recomeça do início, mas as fichas já limpas deixam de ser alteradas: o motor é idempotente, uma segunda passagem não produz qualquer escrita inútil. O registo mostra o código HTTP devolvido quando um lote falha, o que permite distinguir um tempo esgotado (504) de um erro PHP (500) ou de um problema de token (403).

Um vídeo integrado desapareceu

O fornecedor provavelmente não consta da lista de domínios de confiança. Acrescente-o, restaure a execução em causa a partir do painel de cópias de segurança e volte a executar.

Uma tabela perdeu a formatação

Os atributos width, border e cellpadding das tabelas fazem parte dos atributos de apresentação obsoletos. Se o seu tema não tiver estilo CSS para tabelas, desative esta regra e restaure a execução.

A limpeza não altera nada

É o comportamento esperado num catálogo já limpo. Verifique com a caixa de testes que um excerto conhecido como problemático é efetivamente transformado e que as regras correspondentes estão ativas.

Desinstalação

A desinstalação a partir do gestor de módulos elimina a tabela de cópias de segurança, as entradas de configuração e o separador do menu. As descrições já limpas não são repostas: restaure as execuções em causa antes de desinstalar se quiser voltar atrás.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte