Shopware Administratie & productiviteit

Dynamic Product Groups subcategorieën Shopware 6: DfStreamCategoryTree, recursief categoriefilter inclusief onderliggende categorieën

Een categoriefilter dat eindelijk in de boomstructuur afdaalt, zonder elke subcategorie handmatig opnieuw in te voeren.

U maakt een dynamische productgroep aan op de categorie Heren, u slaat op, en de stream geeft slechts 12 producten terug in plaats van de verwachte 138. Er is niets kapot: het Categories-filter van Shopware steunt op de directe toewijzingen, en uw producten zijn ondergebracht in Sneakers, Boots, Jassen, niet in de bovenliggende categorie. De enige native uitweg bestaat erin de twintig subcategorieën één voor één aan te vinken, en dat opnieuw te doen telkens als de catalogus verandert. DfStreamCategoryTree stelt het veld product.categoryTree beschikbaar in de voorwaardenbouwer: dat veld bevat het volledige voorouderpad van elk product, dus het selecteren van de bovenliggende categorie vangt de hele subboom, inclusief categorieën die later zijn aangemaakt.

At a glance
  • Nieuw veld Category (including subcategories) in de Dynamic Product Groups
  • Filteren op een bovenliggende categorie neemt automatisch alle producten uit de subcategorieën mee, op elke diepte
  • Steunt op het native veld product.categoryTree van het Shopware DAL, geen extra query en geen impact op de indexeringsprestaties
  • Geen configuratie: installeren, activeren, het veld verschijnt in de voorwaardenkiezer
  • Beheerinterface vertaald naar het Engels, Duits en Frans
Shopware 6.7 PHP 8.2+ Nul configuratie 3 admintalen Broncode inbegrepen
  • 30 dagen geld terug
  • 12 maanden updates
  • Support binnen 24 uur
www.datafirefly.com/nl/
Voorwaardenbouwer van een dynamische productgroep in Shopware 6 met het veld Categorie inclusief subcategorieën en de vastgelegde categorieboom
v1.0.0 · bijgewerkt 2026-08-08
Wat het doet

De korte versie.

01

Recursief categoriefilter

Selecteer een bovenliggende categorie met de operator Is equal to any of: alle producten die in zijn kinderen, kleinkinderen en lagere niveaus zijn ondergebracht komen in de dynamische groep terecht.

02

Steunt op een native DAL-veld

De plugin voegt geen tabel, geen index en geen query toe. Hij stelt eenvoudigweg product.categoryTree beschikbaar, een veld dat Shopware al voor elk product onderhoudt via de CategoryIndexer.

03

Volgt de evolutie van de catalogus

Een subcategorie die na de configuratie van de groep is aangemaakt wordt onmiddellijk meegenomen. U hoeft niet langer elke stream opnieuw te openen na een reorganisatie van de boomstructuur.

04

De varianten volgen ook

Het veld categoryTree houdt rekening met de parent-child overerving van variabele producten: de varianten van een product dat in een subcategorie is ondergebracht komen correct in de groep terecht.

05

Bestaat naast het native filter

Het oorspronkelijke Categories-veld blijft beschikbaar. U kiest per geval tussen strikt directe toewijzing en de volledige subboom, in dezelfde voorwaardenbouwer en op dezelfde stream.

06

Installatie zonder neveneffect

De plugin beperkt zich tot één regel in de allowlist van de service productStreamConditionService van de administratie. Geen service-override, geen databasemigratie, neutrale deïnstallatie.

De lange versie

Alles wat u wilt weten voordat u installeert.

Een gedetailleerde blik op hoe Dynamic Product Groups subcategorieën Shopware 6: DfStreamCategoryTree, recursief categoriefilter inclusief onderliggende categorieën werkt, waarom we het zo gebouwd hebben en de gedachte achter de bovenstaande functies.

§ 01

Waarom het native categoriefilter niet in de boomstructuur afdaalt

De voorwaardenbouwer van de dynamische productgroepen stelt een veld Categories beschikbaar dat de relatie product.categoriesRo bevraagt. Die relatie somt alleen de categorieën op waaraan een product expliciet is gekoppeld op zijn tabblad Categories. Een goed georganiseerde catalogus brengt zijn producten onder in de bladcategorieën: een sneakermodel zit in Heren, Schoenen, Sneakers, niet in Heren. Het gevolg is mechanisch: een filter op Heren geeft alleen de zeldzame producten terug die rechtstreeks aan dat niveau zijn toegewezen. Dat is geen bug, het is het gedocumenteerde gedrag van de relatie, maar het verrast steevast op het moment dat u een merchandisingstream voor een hele familie wilt maken.

§ 02

Wat product.categoryTree doet

Shopware onderhoudt voor elk product al een JSON-veld genaamd categoryTree dat de id bevat van alle categorieën op het pad, van de wortel tot de categorie van toewijzing. Dat veld wordt herberekend door de CategoryIndexer bij elke verplaatsing van een categorie en bij elke wijziging van een producttoewijzing. Het wordt intern door de storefront gebruikt voor de categorielijsten. Een equalsAny-filter op dat veld met de id van een bovenliggende categorie haalt dus alle producten op waarvan het pad daarlangs loopt, ongeacht de diepte. Het veld bestaat en werkt in het DAL, maar de administratie biedt het niet aan in de kiezer van de voorwaardenbouwer: het staat niet in de allowlist van de service productStreamConditionService.

§ 03

De precieze rol van de plugin

DfStreamCategoryTree voegt één regel toe aan die allowlist en levert de bijbehorende vertaalde labels. Dat is alles, en dat is bewust. Hij introduceert geen service decorator, geen listener op productgebeurtenissen, geen tabel, geen migratie. Het filter dat in de interface wordt gebouwd is een volstrekt standaard DAL-filter, geëvalueerd door dezelfde engine als de andere voorwaarden van de stream. Dat betekent ook dat een stream die met deze plugin is geconfigureerd leesbaar en bruikbaar blijft, zelfs als de plugin later wordt uitgeschakeld: het filter blijft aan de DAL-kant werken, alleen de weergave van het veld in de interface verdwijnt.

§ 04

Typische toepassingen

Een navigatiecategoriepagina gevoed door een dynamische groep op een hele productfamilie, zonder de subcategorieën handmatig op te sommen. Een promotieregel die een korting toepast op een hele afdeling, subafdelingen inbegrepen. Een automatisch cross-sellingblok gebouwd op de afdeling waartoe het bekeken product behoort. Een exportfeed of een Shopping Experience blok gevoed door een stream die een hele tak van de catalogus moet weerspiegelen. In al die gevallen dwingt de native versie u om de configuratie bij elke nieuwe subcategorie opnieuw te openen. De categoryTree-versie vraagt geen enkel onderhoud.

§ 05

Installatie en rebuild van de administratie

De plugin wordt geïnstalleerd door een ZIP te uploaden in Extensies, Mijn extensies, of door de map in custom slash plugins te plaatsen gevolgd door plugin:refresh en plugin:install --activate. Omdat hij het gedrag van de administratie aanpast, is na de installatie eenmalig een rebuild van de adminbundel nodig via het commando build-administration of bin slash console bundle:dump gevolgd door de compilatie. Op een productieomgeving die door een deploymentpipeline wordt beheerd maakt die rebuild meestal al deel uit van de standaardstappen. Zodra de administratie opnieuw is gecompileerd verschijnt het veld onmiddellijk in de voorwaardenkiezer, zonder pluginconfiguratie die u moet invullen.

§ 06

Wat de plugin niet doet

Hij vervangt het native Categories-filter niet, hij komt ernaast te staan. Hij wijzigt het indexeringsalgoritme van de categorieën of de berekening van de categoryTree niet, hij gebruikt wat Shopware al produceert. Hij geldt niet voor de listingfilters van de storefront of voor de facetnavigatie, die onder een ander mechanisme vallen. Hij werkt niet op Shopware Cloud, omdat de door Shopware gehoste SaaS-versie de installatie van serverplugins niet toestaat. Tot slot pretendeert hij niet de evaluatie van de streams te versnellen: omdat het veld native en geïndexeerd is, is de evaluatiekost die van een standaardfilter, niet meer en niet minder.