Shopware Administração & Produtividade

Dynamic Product Groups com Subcategorias Shopware 6: filtro de categoria recursivo que inclui as categorias filhas

Um filtro de categoria que finalmente desce na árvore, sem voltar a introduzir cada subcategoria à mão.

Cria um grupo de produtos dinâmico na categoria Homem, guarda, e o stream devolve apenas 12 produtos em vez dos 138 esperados. Nada está avariado: o filtro Categories do Shopware assenta nas atribuições diretas, e os seus produtos estão arrumados em Sneakers, Botas, Casacos, e não na categoria principal. A única saída nativa é assinalar as vinte subcategorias uma a uma, e recomeçar sempre que o catálogo evolui. O DfStreamCategoryTree expõe o campo product.categoryTree no construtor de condições: esse campo contém o caminho completo dos ascendentes de cada produto, pelo que selecionar a categoria principal apanha a totalidade da subárvore, incluindo as categorias criadas mais tarde.

At a glance
  • Novo campo Category (including subcategories) nos Dynamic Product Groups
  • Filtrar uma categoria principal inclui automaticamente todos os produtos das subcategorias, a qualquer profundidade
  • Assenta no campo nativo product.categoryTree do DAL do Shopware, sem consultas adicionais e sem impacto no desempenho da indexação
  • Sem configuração: instalar, ativar, e o campo aparece no seletor de condições
  • Interface de administração traduzida em inglês, alemão e francês
Shopware 6.7 PHP 8.2+ Zero configuração 3 idiomas na administração Código-fonte incluído
  • Reembolso em 30 dias
  • 12 meses de atualizações
  • Suporte em 24h
www.datafirefly.com/pt/
Construtor de condições de um grupo de produtos dinâmico Shopware 6 com o campo Categoria subcategorias incluídas
v1.0.0 · atualizado 2026-08-08
O que faz

A versão curta.

01

Filtro de categoria recursivo

Selecione uma categoria principal com o operador Is equal to any of: todos os produtos arrumados nos seus filhos, netos e níveis inferiores entram no grupo dinâmico.

02

Assente num campo nativo do DAL

A extensão não acrescenta tabela, índice nem consulta. Limita-se a expor product.categoryTree, um campo que o Shopware já mantém para cada produto através do CategoryIndexer.

03

Acompanha a evolução do catálogo

Uma subcategoria criada depois da configuração do grupo é tida em conta imediatamente. Deixa de ser preciso reabrir cada stream após uma reorganização da árvore.

04

As variantes também acompanham

O campo categoryTree tem em conta a herança entre produto principal e variantes: as variantes de um produto arrumado numa subcategoria entram corretamente no grupo.

05

Convive com o filtro nativo

O campo Categories original mantém-se disponível. Escolhe caso a caso entre atribuição direta estrita e subárvore completa, no mesmo construtor de condições e no mesmo stream.

06

Instalação sem efeitos colaterais

A extensão limita-se a uma entrada na lista de permissões do serviço productStreamConditionService da administração. Sem sobreposição de serviços, sem migração na base de dados, desinstalação neutra.

A versão longa

Tudo o que quer saber antes de instalar.

Uma análise detalhada de como o Dynamic Product Groups com Subcategorias Shopware 6: filtro de categoria recursivo que inclui as categorias filhas funciona, porque o construímos assim e o raciocínio por trás das funcionalidades acima.

§ 01

Porque é que o filtro de categoria nativo não desce na árvore

O construtor de condições dos grupos de produtos dinâmicos expõe um campo Categories que consulta a relação product.categoriesRo. Essa relação lista apenas as categorias às quais um produto está explicitamente associado no seu separador Categories. Um catálogo bem organizado arruma os produtos nas categorias folha: um modelo de sneakers está em Homem, Calçado, Sneakers, e não em Homem. A consequência é mecânica: um filtro sobre Homem devolve apenas os raros produtos atribuídos diretamente a esse nível. Não é um bug, é o comportamento documentado da relação, mas surpreende sistematicamente na altura de criar um stream de merchandising para uma família inteira.

§ 02

O que faz o product.categoryTree

O Shopware já mantém, para cada produto, um campo JSON chamado categoryTree que contém o identificador de todas as categorias do caminho, desde a raiz até à categoria de atribuição. Este campo é recalculado pelo CategoryIndexer a cada movimentação de categoria e a cada alteração de atribuição de produto. É usado internamente pelo storefront para as listagens de categoria. Um filtro equalsAny sobre este campo com o identificador de uma categoria principal devolve portanto todos os produtos cujo caminho passa por ela, seja qual for a profundidade. O campo existe e funciona no DAL, mas a administração não o propõe no seletor do construtor de condições: não está na lista de permissões do serviço productStreamConditionService.

§ 03

O papel exato da extensão

O DfStreamCategoryTree acrescenta uma linha a essa lista de permissões e fornece as etiquetas traduzidas associadas. É tudo, e é propositado. Não introduz qualquer decorador de serviço, qualquer listener nos eventos de produto, qualquer tabela, qualquer migração. O filtro construído na interface é um filtro DAL perfeitamente normal, avaliado pelo mesmo motor que as restantes condições do stream. Isto significa também que um stream configurado com esta extensão continua legível e utilizável mesmo que a extensão seja desativada mais tarde: o filtro continua a funcionar do lado do DAL, apenas a apresentação do campo na interface desaparece.

§ 04

Casos de uso típicos

Uma página de categoria de navegação alimentada por um grupo dinâmico sobre toda uma família de produtos, sem listar as subcategorias à mão. Uma regra de promoção que aplica um desconto a um sector inteiro, subsectores incluídos. Um bloco de cross-selling automático construído sobre o sector a que pertence o produto consultado. Um feed de exportação ou um bloco Shopping Experience alimentado por um stream que deve refletir um ramo inteiro do catálogo. Em todos estes casos, a versão nativa obriga a reabrir a configuração a cada nova subcategoria. A versão categoryTree não exige qualquer manutenção.

§ 05

Instalação e rebuild da administração

A extensão instala-se por upload do ZIP em Extensões, As minhas extensões, ou colocando a pasta em custom barra plugins seguido de plugin:refresh e plugin:install --activate. Como altera o comportamento da administração, é necessário um rebuild do bundle de administração uma vez após a instalação, através do comando build-administration ou de bin barra console bundle:dump seguido da compilação. Num ambiente de produção gerido por um pipeline de deploy, esse rebuild já costuma fazer parte das etapas normais. Uma vez recompilada a administração, o campo aparece imediatamente no seletor de condições, sem qualquer configuração a preencher.

§ 06

O que a extensão não faz

Não substitui o filtro Categories nativo, acrescenta-se ao lado dele. Não altera o algoritmo de indexação das categorias nem o cálculo do categoryTree, consome o que o Shopware já produz. Não se aplica aos filtros de listagem do storefront nem à navegação por facetas, que dependem de outro mecanismo. Não funciona no Shopware Cloud, uma vez que a versão SaaS alojada pela Shopware não permite a instalação de extensões de servidor. Por fim, não pretende acelerar a avaliação dos streams: sendo o campo nativo e indexado, o custo de avaliação é o de um filtro normal, nem mais nem menos.