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