PS PrestaShop Iniciante

DF Recently Viewed: produtos vistos recentemente (PrestaShop 8/9)

Instalar e configurar o bloco de produtos vistos recentemente: histórico entre dispositivos, badges de descida de preço, renderização compatível com full page cache, analytics e RGPD.

Atualizado Versão do módulo 1.0.1

Apresentação

O DF Recently Viewed (dfrecentlyviewed) mostra os produtos vistos recentemente pelos seus visitantes, mas com uma arquitetura pensada para a conversão: o histórico é guardado do lado do servidor, fundido na conta do cliente no início de sessão, renderizado em AJAX para se manter exato atrás de uma cache de página, e enriquecido com badges de descida de preço. Um painel analítico completa o conjunto com uma taxa de conversão de visualização para compra.

Pré-requisitos

  • PrestaShop 8.0 a 9.x
  • PHP 7.4 a 8.3
  • Nenhuma dependência externa (nem Composer, nem jQuery, nem biblioteca de carrossel)

Instalação

  1. No back-office, abra Módulos > Gestor de módulos.
  2. Clique em Instalar um módulo e carregue o ficheiro dfrecentlyviewed.zip.
  3. Clique em Instalar. O módulo cria a sua tabela, regista os seus hooks e acrescenta um separador Catálogo > Estatísticas de produtos vistos.
  4. Clique em Configurar para aceder às definições.

O módulo funciona desde a instalação com definições por defeito sensatas: 8 produtos, carrossel, renderização AJAX, badges de descida de preço ativados, retenção de 90 dias.

Configuração

Separador Apresentação

  • Título do bloco: traduzível em cada um dos seus idiomas.
  • Número de produtos: de 1 a 24 produtos apresentados no bloco.
  • Disposição em carrossel: ativado, carrossel horizontal com setas de navegação; desativado, grelha responsiva.
  • Mostrar nas fichas de produto: hook displayFooterProduct.
  • Mostrar na página inicial: hook displayHome.
  • Mostrar na página do carrinho: hook displayShoppingCartFooter.
  • Mostrar a ligação « limpar o meu histórico »: recomendado para a transparência RGPD.

Separador Comportamento inteligente

  • Excluir o produto atualmente apresentado: evita recomendar a ficha já no ecrã.
  • Ocultar os produtos esgotados: o filtro tem em conta as pré-encomendas autorizadas.
  • Ocultar os produtos já no carrinho: o carrinho é recalculado do lado do servidor, nunca a partir da página em cache.
  • Badges de descida de preço: mostra um badge « -X % » quando o preço baixou desde a última consulta do visitante.
  • Renderização AJAX (compatível com cache): vivamente recomendada, ver a secção dedicada mais abaixo.
  • Retenção do histórico (dias): de 1 a 730 dias. As visualizações mais antigas são purgadas automaticamente.

Compatibilidade com o full page cache

Numa loja equipada com Varnish, Cloudflare, LiteSpeed Cache ou um CDN, um bloco personalizado renderizado do lado do servidor é guardado em cache com a página: o visitante seguinte vê o histórico de outra pessoa, ou um bloco vazio.

O modo Renderização AJAX, ativado por defeito, resolve este problema: o bloco é injetado depois da renderização da página, através de um pedido ao controlador front do módulo. O registo da visualização do produto parte, por sua vez, em beacon não bloqueante, que funciona igualmente quando a página vem da cache.

Só desative o modo AJAX se a sua loja não usar nenhuma cache de página. Caso contrário, o bloco mostrará dados incorretos.

Badges de descida de preço

A cada consulta de uma ficha de produto, o módulo regista o preço com IVA apresentado nesse momento para esse visitante preciso. Na apresentação do bloco, compara esse preço memorizado com o preço atual:

  • Se o preço tiver baixado pelo menos 1 %, um badge vermelho « ↓ -X % » aparece no canto superior esquerdo da miniatura.
  • O preço memorizado é atualizado a cada nova consulta: o badge significa portanto sempre « o preço baixou desde a sua última visita a esta ficha ».
  • Se o preço subir, o badge desaparece.

Histórico entre dispositivos

As visualizações são registadas com o identificador de convidado (id_guest) para os visitantes anónimos, e com o identificador de cliente (id_customer) para os visitantes autenticados.

No momento do início de sessão (hook actionAuthentication), o histórico de convidado é fundido na conta do cliente: os contadores de visualizações são somados e é conservada a data de última consulta mais recente. O cliente reencontra assim os seus produtos consultados em todos os seus dispositivos.

Página « O meu histórico de navegação »

O módulo acrescenta um mosaico na área de cliente (hook displayCustomerAccount) que leva a uma página dedicada com até 48 produtos consultados, com um botão de limpeza se a opção estiver ativada.

URL da página: /module/dfrecentlyviewed/history (reescrito consoante a sua configuração de URLs).

Widget

O bloco pode ser chamado a partir de qualquer template do seu tema:

{widget name='dfrecentlyviewed'}
{widget name='dfrecentlyviewed' limit=6}

O parâmetro limit é facultativo e limitado a 24; sem ele, aplica-se o número configurado no back-office.

Painel analítico

Vá a Catálogo > Estatísticas de produtos vistos. Encontra aí, num período de 7, 30, 90 ou 365 dias:

  • Visualizações de produtos: número total de consultas registadas.
  • Produtos distintos consultados: extensão real da descoberta do catálogo.
  • Visitantes únicos: convidados e clientes em conjunto.
  • Conversão de visualização para compra: percentagem de pares cliente/produto consultados que deram origem a uma encomenda válida posterior à consulta. Calculada apenas nos clientes autenticados.
  • Produtos mais consultados: classificação com ligação direta para a ficha de produto no back-office.

RGPD e retenção

Hooks psgdpr

O módulo implementa actionExportGDPRData e actionDeleteGDPRCustomer: se o módulo oficial psgdpr estiver instalado, o histórico de navegação é incluído nas exportações e nas eliminações de dados pessoais pedidas pelos seus clientes.

Limpeza em autosserviço

Quando a opção está ativada, uma ligação « Limpar o meu histórico » aparece ao lado do título do bloco e na página de histórico. O visitante pode eliminar ele próprio os seus dados, com confirmação.

Purga automática

As visualizações mais antigas do que a duração de retenção configurada são purgadas automaticamente, de forma oportunista (em cerca de 1 % das visualizações registadas). Não é necessária nenhuma configuração.

CRON facultativo

Para as lojas com muito tráfego, um URL de purga protegido por token é apresentado na página de configuração. Pode chamá-lo diariamente:

0 4 * * * curl -s "https://a-sua-loja.pt/module/dfrecentlyviewed/tracking?action=cleanup&token=O_SEU_TOKEN"

Integração no tema

Os produtos são renderizados através da miniatura nativa do seu tema (catalog/_partials/miniatures/product.tpl). O bloco herda portanto automaticamente o design das suas listagens: imagem, nome, preço, badges de promoção, botão de adição rápida se o seu tema o propuser.

Se quiser personalizar o contentor, sobreponha os templates do módulo a partir do seu tema:

themes/o-seu-tema/modules/dfrecentlyviewed/views/templates/hook/recentlyviewed.tpl
themes/o-seu-tema/modules/dfrecentlyviewed/views/templates/hook/_products.tpl

Multiloja

Os históricos são separados por loja: um visitante que consulte um produto na loja A não o verá aparecer na loja B. Todas as definições são guardadas através da tabela Configuration do PrestaShop, com suporte multiloja nativo.

Desinstalação

A desinstalação elimina a tabela de histórico, o conjunto das definições e o separador de estatísticas. É pedida uma confirmação antes da operação.

Resolução de problemas

O bloco não aparece

  • Verifique que o hook correspondente à página está ativado na configuração (ficha de produto, página inicial, carrinho).
  • O bloco só é apresentado se o visitante tiver consultado pelo menos um produto elegível. Um visitante que chegue pela primeira vez à loja não verá nada.
  • Se a exclusão do produto atual e a exclusão do carrinho estiverem ambas ativas, é possível que não reste nenhum produto para mostrar.

O bloco fica vazio numa página em cache

Certifique-se de que o modo Renderização AJAX está ativado. Verifique também que a sua configuração de cache não interceta os pedidos para /module/dfrecentlyviewed/tracking.

Os badges de descida de preço nunca aparecem

O badge só pode aparecer se o visitante tiver consultado o produto antes da descida de preço. Depois de uma alteração de tarifa, dê tempo aos visitantes para voltarem. Verifique também que a opção está ativada.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte