Varianten auf der Produktdetailseite im Twig verfügbar machen #2
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Auf der Produktdetailseite soll das Storefront-Twig Zugriff auf die Geschwister-Varianten des aktuellen Produkts haben – mindestens die Artikelnummer, idealerweise die vollständigen Varianten-Entities (Name, Preis, Optionen, Cover).
Analog zu Funktion 1 „Varianten im Listing" (
VariantenListingSubscriber), aber für die Detailseite.Betroffen
src/Subscriber/(z. B.VariantenDetailSubscriber)src/Resources/config/services.xmlsrc/Resources/config/config.xml(Karte „Varianten auf der Detailseite"):variantenDetailActive(bool, Defaultfalse) – GuardvariantenDetailDebug(bool, Defaultfalse) – Debug-LoggingLösungsweg A – Minimal (Erstvorschlag)
Subscriber auf
ProductPageCriteriaEvent,->addAssociation('parent.children'), Zugriff im Twig überpage.product.parent.children.Einschränkungen:
parentId) –->addAssociation('children')liefert dann nichts,childrenhängt am Vater. Daherparent.children+ Sonderfall, wenn der Vater direkt aufgerufen wird.ProductEntityohne Sales-Channel-Kontext: keine berechneten Preise, keine Aktiv-/Lagerfilterung.Lösungsweg B – empfohlen
Subscriber auf
ProductPageLoadedEvent:parentId = product.parentId ?? product.idsales_channel.product.repositoryladen (FilterparentId), ggf.addAssociations(['options.group', 'cover.media'])->setChildren()ans Produkt hängen → im Twigpage.product.childrenmit vollen Sales-Channel-EntitiesKonsistent mit
VariantenListingSubscriber, gleiche Datenqualität wie im Listing.Akzeptanzkriterien
false, Guard im Subscriber (beifalsesofortiger Abbruch)variantenDetailDebugphp -lsauber, php-cs-fixer + phpstan (Level 3) grünUmgesetzt mit Lösungsweg B in
9d2fc0a, gemerged nachmain(58af781), Release v1.6.0.VariantenDetailSubscriberaufProductPageLoadedEvent,parentId = product.parentId ?? product.id, Geschwister übersales_channel.product.repository(Assoziationenoptions.group+cover.media, Sortierung nachname),setChildren()→page.product.children.services.xml, Config-Karte 5 (variantenDetailActive/variantenDetailDebug, Defaultfalse, Guard).1.5.1 → 1.6.0.DDEV-Verifikation: php-cs-fixer 0/25, phpstan Level 3 „No errors", Detailseite (Variante + Vater-Direktaufruf) HTTP 200 ohne Fehler, Debug-Log korrekt (6 Geschwister-SKUs), Guard greift bei Default
false, Simple-Produkt ohne Geschwister → leerechildren, kein Crash.Alle Akzeptanzkriterien erfüllt.