Entwickler Doku Variantenprofil

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).



Konfiguration von Variantenprofilen / Erzeugen von Varianten

Konfiguration von Variantenprofilen / Erzeugen von Varianten (Ui/Variant)

Events

Diese UI wird über Events errichtet und ist entsprechend anpassbar.

Event

Beschreibung

Nutzung

Event

Beschreibung

Nutzung

OnPopulateTabsElement

Dieses Event kann genutzt werden, um den Ui\Base-Tab zu manipulieren.

Dieses Event genutzt, um folgende Elemente zu platzieren:

  • Fehlermeldungen / Hinweismeldungen

  • Toolbar

  • Formular

OnPopulateToolbar

Dieses Event kann genutzt werden, um die Toolbar der Ansicht zu erweitern.

Das Event wird genutzt, um folgende Elemente zu platzieren:

  • Reload-Button

  • Speichern-Button

  • "Varianten erzeugen"-Button

OnPopulateForm

Dieses Event kann genutzt werden, um das Formular zu erweitern.

Dieses Event wird genutzt, um folgende Elemente zu platzieren:

  • Tabs der Klassifikationsattribute

OnPopulateClassificationTab

Dieses Event kann genutzt werden, um die Tabs der Attribute zu erweitern.

Dieses Event wird genutzt, um folgende Elemente zu platzieren:

  • Hinweis zum Speichern der Konfiguration

  • Container zur Steuerung des Tabs

  • Container der Variantenmerkmale

OnPopulateRequestContainer

Dieses Event kann genutzt werden, um den Container für ein Attribut zu erweitern.

Dieses Event wird genutzt, um folgende Elemente zu platzieren:

  • Select-Feld für Merkmale

OnPopulateVariantAttributesContainer

Dieses Event kann genutzt werden, um den Container der Variantenmerkmale zu erweitern.

Dieses Event wird genutzt, um folgende Elemente zu platzieren:

  • Feldgruppen pro gewähltem Merkmal

OnPopulateAttributeFieldset

Dieses Event kann genutzt werden, um die Feldgruppen der Variantenmerkmale zu erweitern.

Dieses Event wird genutzt, um folgende Elemente zu platzieren:

  • Container der Preiskonfiguration

OnPopulateAttributePriceContainer

Dieses Event kann genutzt werden, um die Preiscontainer der Variantenmerkmale zu erweitern.

Dieses Event wird genutzt, um folgende Elemente zu platzieren:

  • Select-Feld der Preis Operation

  • Input-Felder für die Preisänderungen





























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

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)).