Zuweisung von Variantenprofilen
Variantenprofile können bestimmten Entitäten zugewiesen werden. Sowohl die Information über Variantenprofile, als auch deren Zuweisung erfolgt über die Meta-Informationen eines Datensatzes. Das Variantenprofil erhält einen Eintrag in den Informationen. In diesem Eintrag wird das ggf. vorhandene Variantenprofil angezeigt. Außerdem erhält der Nutzer die Möglichkeit das gewählte Variantenprofil zu ändern.
Struktur
Shop/ArticleVariant
Shop/ArticleVariant bindet die UI-Elemente in die Meta-Informationen ein, da die Artikel eine explizite Implementierung der Varianten haben. Für die Platzierung der UI-Elemente wird das Event OnPopulateEditMetaInformation
von Base/Edit
genutzt.
Shop/Variant
Shop/Variant verarbeitet die Zuweisung des Variantenprofils zu den gewählten Entitäten.
Ui/Variant
Ui/Variant bietet die UI-Elemente an, um ein Variantenprofil zuzuweisen. Der Button, der von Shop/ArticleVariant
zur Zuweisung platziert wird, öffnet ein Modal, welches von Ui/Variant
bereitgestellt wird. Die Informationen aus dem Modal werden wiederum an Verarbeitungslogik von Shop/Variant
weitergegeben (Ui\Variant\Engine::changeVariantProfile
).
Erzeugen von Varianten
Um Varianten auf Basis eines Variantenprofils zu erzeugen, kann der Button "Varianten erzeugen" genutzt werden. Beim Klick auf diesen Button wird ein Modal geöffnet, in dem eine Selektion an Entitäten gewählt werden kann, für die Varianten erzeugt werden sollen. Das Modal und die Generierung der Varianten sind über die Events ApplyVariantProfile\OnPopulateModalContent
und ApplyVariantProfile\OnApplyVariantProfile
erweiterbar.
Variantenauswahl
Das Variantenprofil bietet verschiedene Möglichkeiten die Auswahl der generierten Varianten zu definieren. Die Art der Auswahl wird in der Property shopArticleVariantProfileViewType gespeichert. Diese Property wird demnach als Kriterium genutzt, um die Auswahl an den Implementationsstellen darzustellen (bspw. auf der Artikeldetailseite im Shop).
Den Einstiegspunkt für die Variantenauswahl bildet View\Variant\Engine::chooseVariantViewDetail
. Diese erzeugt aufgrund von Artikel und Variante einen Kontext und emitiert ein Event, um den Container für die Variantenauswahl zu füllen. Der Produktstandard enthält drei Listener, welche auf dieses Event reagieren können:
- Buttons
- Auswahlfelder
- Manuelle Auswahlfelder
Je nach konfigurierter Darstellung der Variantenauswahl wird ein Listener den bereitgestellten Container mit UI-Elementen füllen. Jeder Listener steuert seine UI-Elemente und deren Aktualisierung nach einer Interatkion über ein eigenes JavaScript.
Auswahlfelder
Die Auswahlfelder werden an dieser Stelle hervorgehoben, da sie über eine besondere Komplexität verfügen. Die Auswahlfelder sind reguläre Auswahlfelder aus der Input/Select-Library, welche in StructureDefinition Dateien definiert werde und entsprechend einige Eventlistener nutzen um das gewünschte Verhalten zu erreichen.
Eventlistener
Event | Funktion |
---|---|
\Brandbox\Framework\Input\Select\Lib\Event\OnPopulatePayload | Das Event wird genutzt um dem Auswahlfeld die nötigen Parameter zu geben, um die Suche im Anschluss entsprechend einzuschränken |
\Brandbox\Framework\Input\Select\Lib\Event\OnPopulateValues | Dieses Event definiert das im Auswahlfeld ausgewählte Merkmal auf Basis der gewählten Variante. |
\Brandbox\Framework\Input\Select\Lib\Event\OnPopulateSearch | Dieses Event ermittelt auf Basis der Payload-Parameter und des Suchbegriffs die Suchergebnisse. |
Darüber hinaus werden Listener clientseitig in JavaScript genutzt, um die Darstellung zu beeinflussen (z.B. das Ergänzen der muted-Variante (ChooseVariantSelect.onElementResultPopulate
)).