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.
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.
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.
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.
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.
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.
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.
Ainda não existem avaliações.