Shopware Extensões Shopware

Contador de Carrinhos Shopware 6: prova social «Em mais de 20 carrinhos» na página de produto

A prova social que converte: mostre quantos clientes já têm este produto no carrinho.

No Shopware, um carrinho não existe sob a forma de linhas na base de dados: está serializado num payload único da tabela cart. Apresentar «este produto está em 23 carrinhos» exigiria desserializar a totalidade dos carrinhos da loja a cada apresentação de página, o que é impraticável. Esta extensão resolve o problema de outra forma: mantém o seu próprio índice (token de carrinho, produto, canal de venda, estado encomendado) alimentado em tempo real pelos eventos de carrinho do Shopware, e depois conta esse índice com uma única consulta indexada em cache. Resultado: um selo de prova social baseado nos seus dados reais de carrinho, sem impacto mensurável no tempo de renderização da página de produto.

At a glance
  • Selo «Em mais de 20 carrinhos» apresentado sob o bloco de compra da página de produto
  • Contagem real dos carrinhos em curso, sem duplicados por token de carrinho e limitada ao canal de venda
  • Índice dedicado alimentado pelos eventos de carrinho, contornando a serialização do carrinho do Shopware
  • Limiar de apresentação, janela temporal, modo escalão arredondado ou número exato, cache configurável
  • Compatível com Shopware 6.5, 6.6 e 6.7, textos traduzidos em 6 idiomas
Shopware 6.5 / 6.6 / 6.7 PHP 8.1+ Multicanal de venda 6 idiomas Código-fonte incluído
  • Reembolso em 30 dias
  • 12 meses de atualizações
  • Suporte em 24h
www.datafirefly.com/pt/
Selo «Em mais de 20 carrinhos» apresentado sob o bloco de compra de uma página de produto Shopware 6
v1.0.0 · atualizado 2026-08-11
O que faz

A versão curta.

01

Prova social instantânea

Um selo «Em mais de 20 carrinhos» sob o bloco de compra, acionado apenas acima do limiar que definir. Abaixo disso nada é apresentado: a mensagem mantém-se sempre valorizadora.

02

Baseado nos seus dados reais

Contagem dos carrinhos que contêm efetivamente o produto, sem duplicados por token de carrinho e limitada ao canal de venda atual. Nenhum número inventado, nenhuma simulação aleatória.

03

Um índice, não uma desserialização

O Shopware serializa o carrinho num payload único. A extensão mantém uma tabela de índice alimentada pelo CartSavedEvent, o que transforma um problema impossível numa consulta indexada de alguns milissegundos.

04

Desempenho controlado

Cache integrada com tempo de vida configurável, limpa automaticamente a cada alteração de configuração. Nenhum recálculo SQL a cada apresentação de página, mesmo em pico de tráfego.

05

Variantes agregadas

Num produto com variantes, os carrinhos de todas as variantes são somados no contador do produto principal. Um tamanho 42 em três carrinhos e um tamanho 43 em dois carrinhos apresentam cinco carrinhos, e não dois contadores isolados.

06

Configurável ao detalhe

Limiar, janela temporal, apenas carrinhos ativos, modo escalão ou número exato, passo de arredondamento, posição acima ou abaixo do bloco de compra, três estilos de selo, período de retenção.

A versão longa

Tudo o que quer saber antes de instalar.

Uma análise detalhada de como o Contador de Carrinhos Shopware 6: prova social «Em mais de 20 carrinhos» na página de produto funciona, porque o construímos assim e o raciocínio por trás das funcionalidades acima.

§ 01

Porque é que este módulo não existe nativamente no Shopware

No PrestaShop, contar os carrinhos que contêm um produto faz-se com uma junção à tabela das linhas de carrinho. No Shopware, essa tabela não existe: o carrinho completo está serializado numa coluna payload da tabela cart, muitas vezes comprimida. Uma consulta SQL não consegue portanto saber o que contém um carrinho sem o desserializar, e desserializar vários milhares de carrinhos a cada apresentação de página de produto está fora de questão. É por isso que este tipo de prova social é comum no PrestaShop e raro no Shopware.

§ 02

A solução: um índice alimentado pelos eventos

A extensão cria uma tabela df_cart_popularity que associa um token de carrinho, um identificador de produto, um canal de venda, uma quantidade e um indicador de encomenda. Este índice é atualizado a cada persistência de carrinho através do evento CartSavedEvent: produtos adicionados, quantidades alteradas, linhas removidas, tudo é sincronizado em duas consultas. A contagem passa a ser um simples COUNT DISTINCT sobre um índice composto, executado uma vez por duração de cache e por produto. O custo adicional do lado do carrinho é da ordem de duas consultas indexadas por alteração, invisível num perfil de desempenho.

§ 03

Duas formas de apresentar o número

O modo escalão arredonda o contador para baixo segundo o passo que definir, para um efeito «Em mais de 20 carrinhos» que se mantém credível e evolui por patamares. O modo exato apresenta o número real, para as lojas que preferem total transparência, com uma variante no singular tratada automaticamente. As três formulações vivem nos snippets do Shopware e alteram-se por idioma a partir da administração, sem tocar no código, com um marcador dinâmico para o número.

§ 04

Uma contagem honesta e configurável

A janela temporal limita a contagem aos carrinhos atualizados recentemente, o que evita acumular carrinhos fantasma com vários meses. A opção apenas carrinhos ativos exclui os carrinhos já convertidos em encomenda, detetados através do CartConvertedEvent. A limitação por canal de venda impede que um pico na sua loja alemã inflacione o contador da loja portuguesa. Cada uma destas opções pode ser substituída canal a canal a partir da configuração da extensão.

§ 05

Compatibilidade 6.5 a 6.7 sem compromissos

O template estende apenas o bloco externo do buy-widget e chama o seu bloco pai, o que o torna insensível às mudanças de nome dos blocos internos ocorridas entre a 6.5 e a 6.7 e compatível com os temas que personalizam o bloco de compra. A limpeza de retenção funciona sem tarefa agendada nem fila de mensagens, porque a assinatura do gestor de tarefas mudou entre a 6.5 e a 6.6: é executada no máximo uma vez por hora, ou a pedido através do comando CLI. A struct de apresentação está associada tanto à entidade produto como à página, o que cobre a renderização pelo elemento Buy box das Shopping Experiences tal como a vista rápida.

§ 06

Normas DataFirefly

Extensão desenvolvida sem dependências Composer, renderizada do lado do servidor, sem biblioteca JavaScript externa e sem qualquer chamada de rede para o exterior. Uma única tabela criada, eliminada na desinstalação quando não opta por conservar os dados. Nenhum dado pessoal registado: o índice contém apenas o token de carrinho pseudonimizado e a referência do produto, com retenção configurável. Código-fonte PHP e Twig não ofuscado, licença perpétua, 12 meses de atualizações incluídos.