# Contador de Carrinhos Shopware 6: instalação e configuração

> A extensão DfCartPopularity apresenta na página de produto um selo com o número de carrinhos que contêm atualmente o produto, por exemplo «Em mais de 20 carrinhos». A contagem assenta…

- Página: <https://www.datafirefly.com/pt/documentation/compteur-paniers-shopware/>
- Idioma: pt
- Atualizado em: 2026-09-02
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/compteur-paniers-shopware/index.md), [en](https://www.datafirefly.com/en/documentation/compteur-paniers-shopware/index.md), [es](https://www.datafirefly.com/es/documentation/compteur-paniers-shopware/index.md), [de](https://www.datafirefly.com/de/documentation/compteur-paniers-shopware/index.md), [it](https://www.datafirefly.com/it/documentation/compteur-paniers-shopware/index.md), [pl](https://www.datafirefly.com/pl/documentation/licznik-koszykow-shopware/index.md), [nl](https://www.datafirefly.com/nl/documentation/compteur-paniers-shopware/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

A extensão **DfCartPopularity** apresenta na página de produto um selo com o número de carrinhos que contêm atualmente o produto, por exemplo «Em mais de 20 carrinhos». A contagem assenta nos seus dados reais de carrinho.

## Pré-requisitos

- Shopware 6.5, 6.6 ou 6.7 em instalação auto-alojada (o SaaS Shopware Cloud não aceita extensões de servidor)
- PHP 8.1 ou superior
- Acesso SSH para os comandos de consola e a compilação do tema

## Instalação

Carregue o ZIP em Extensões e depois As minhas extensões, ou copie a pasta para `custom/plugins/`, e execute:

```
bin/console plugin:refresh
bin/console plugin:install --activate DfCartPopularity
bin/console cache:clear
./bin/build-storefront.sh
```

A compilação do storefront é necessária uma vez, para integrar a folha de estilos do selo. Num ambiente gerido por um pipeline de deploy, esse passo costuma já fazer parte do processo normal.

## Inicializar o índice

Na instalação, o índice está vazio: os contadores partem de zero e enchem-se à medida que os clientes alteram o carrinho. Para apresentar números credíveis logo no primeiro dia, execute a reconstrução:

```
bin/console df:cart-popularity:rebuild
```

O comando lê os carrinhos já guardados na loja e alimenta o índice. É idempotente e pode ser reexecutado sem risco. A opção `--truncate` esvazia o índice antes da reconstrução.

Os carrinhos já convertidos em encomenda são eliminados pelo Shopware da tabela de carrinhos. A reconstrução só vê portanto os carrinhos ativos, que é exatamente o âmbito pretendido.

## Configuração

Definições, Sistema, Extensões, DataFirefly Cart Popularity, e depois Configurar. Cada opção pode ser substituída canal de venda a canal de venda.

### Apresentação

- **Ativar o selo**: o acompanhamento dos carrinhos continua mesmo com o selo desativado, pelo que os dados ficam prontos para o dia em que o ativar.
- **Limiar mínimo** (predefinição 5): abaixo desse número de carrinhos nada é apresentado.
- **Modo de apresentação**: escalão arredondado ou número exato.
- **Passo do escalão** (predefinição 10): uma contagem de 23 aparece como «mais de 20». Se a contagem for inferior ao passo, a extensão passa automaticamente ao número exato em vez de anunciar um escalão falso.
- **Posição**: acima ou abaixo do bloco de compra.
- **Estilo do selo**: fundo leve, contorno ou texto simples.

### Regras de contagem

- **Janela temporal** (predefinição 7 dias): só são contados os carrinhos atualizados nessa janela. O valor 0 desativa a janela.
- **Apenas carrinhos ativos**: exclui os carrinhos já convertidos em encomenda.
- **Limitar ao canal de venda**: evita que um pico numa loja inflacione o contador de outra.
- **Agregar as variantes**: todas as variantes de um produto partilham o contador do produto principal. Desative esta opção se cada variante deve ter o seu próprio contador.

### Desempenho e retenção

- **Tempo de vida da cache** (predefinição 900 segundos): a consulta de contagem só é executada uma vez por tempo de vida e por produto. O valor 0 desativa a cache. A cache é limpa automaticamente a cada gravação da configuração.
- **Retenção** (predefinição 60 dias): os registos mais antigos são eliminados. A limpeza é executada automaticamente, no máximo uma vez por hora, sem depender do message queue.

## Personalizar o texto

A etiqueta do selo vive nos snippets do Shopware. Definições, Snippets, e pesquise `dfCartPopularity`. Estão disponíveis três chaves:

- `dfCartPopularity.badge.textTier`: modo escalão, contém o marcador do número
- `dfCartPopularity.badge.textExact`: modo exato, contém o marcador do número
- `dfCartPopularity.badge.textSingular`: modo exato com um único carrinho

O marcador escreve-se `%count%` e tem de ser mantido na sua formulação. São fornecidas as traduções inglesa, alemã, francesa, espanhola, italiana e polaca.

## Como funciona a contagem

O Shopware serializa o carrinho completo numa coluna payload da tabela `cart`, muitas vezes comprimida. Nenhuma consulta SQL consegue portanto saber o que um carrinho contém sem o desserializar. A extensão mantém a sua própria tabela `df_cart_popularity` que associa um token de carrinho, um produto, um canal de venda, uma quantidade e um indicador de encomenda.

Essa tabela é sincronizada a cada persistência de carrinho através do `CartSavedEvent`, em duas consultas indexadas. O evento `CartConvertedEvent` marca as linhas como encomendadas no momento da passagem a encomenda. A apresentação faz então uma simples contagem distinta sobre um índice composto, colocada em cache.

Não é registado qualquer dado pessoal: o índice contém apenas o token de carrinho, que é um identificador técnico pseudonimizado, a referência do produto, o canal de venda e marcas temporais.

## Comandos CLI

```
bin/console df:cart-popularity:rebuild
bin/console df:cart-popularity:rebuild --truncate
bin/console df:cart-popularity:cleanup
bin/console df:cart-popularity:cleanup --days=30
```

## Resolução de problemas

### O selo não aparece

Verifique por ordem: o selo está ativo para o canal de venda em causa, o número de carrinhos atinge o limiar, a janela temporal não exclui todos os carrinhos, e o storefront foi de facto recompilado após a instalação. Limpe também a cache HTTP se a página for servida a partir da cache.

### O selo aparece sem estilo

A folha de estilos da extensão é integrada na compilação do tema. Execute de novo `./bin/build-storefront.sh` ou `bin/console theme:compile`.

### O comando de reconstrução indica carrinhos ignorados

Esses carrinhos usam um formato de payload que o comando não sabe ler, tipicamente um armazenamento de carrinho externo. Serão indexados normalmente na próxima alteração feita pelo cliente, uma vez que o acompanhamento por eventos funciona independentemente do modo de armazenamento.

## Desinstalação

A desinstalação com eliminação dos dados do utilizador elimina a tabela `df_cart_popularity` e a configuração da extensão. Conservando os dados do utilizador, a tabela mantém-se e os contadores retomam tal como estavam em caso de reinstalação.
