Voraussetzungen im Template
Das Diagramm ist ein eigenes JavaScript-Modul, das zwei Dinge im Template braucht: eincanvas-Element und zwei script-Blöcke.
Das canvas-Element
Das Plugin ist im Framework Solid.js geschrieben und zeichnet das Diagramm in eincanvas-Element. Dieses Element müssen Sie im Template vorsehen.
canvas-Elements berechnet das Modul selbst und überschreibt dabei die Werte im Markup. Die Berechnung richtet sich nach dem Style des umgebenden Elements. Geben Sie dem Container deshalb eine Höhe, sonst bleibt das Diagramm unsichtbar.
Die beiden script-Blöcke
Der erste Block lädt das Modul, der zweite konfiguriert und startet es.Das Beispiel-Template
Das Template deckt alle drei Schritte des Bestellvorgangs ab und zeigt zusätzlich eine Zusammenfassung aller Reservierungen des Kunden.Beispiel-Template für den Bestellvorgang
Beispiel-Template für den Bestellvorgang
Die drei Schritte des Bestellvorgangs
Das Modul kennt drei Seitenzustände. Welcher gerade gilt, fragen Sie mit den drei gleichnamigen Abschnitts-Tags ab. Weitergeschaltet wird über das Formularfeldwsbp_act.
Die Formularfelder, die das Modul auswertet:
An der Mengeneingabe im ersten Schritt hängt ein
onblur an, das über ws_AJAXloadTemplate die Seite neu lädt. Erst dadurch aktualisieren sich Diagramm und Staffelpreis, während der Kunde die Menge ändert.Die beiden Tags ~WS-DisableAmpersandLinkEncoding~ und ~WS-EnableAmpersandLinkEncoding~ schalten die kaufmännische Und-Kodierung im Link ab und wieder an. Ohne sie wird das & im nachgehängten amount-Parameter zu & und der Aufruf schlägt fehl.Konfiguration des Preisstaffel-Diagramms
Die Parameter übergeben Sie als Objekt annewBulkBestPrice. Parameter mit Sternchen sind notwendig, alle anderen optional.
Im
text-Feld ist nur die HTML-Entity für das Euro-Zeichen ersetzbar. Für jedes andere Währungssymbol verwenden Sie den Unicode-Wert, im Beispiel €.
Der Zähler im dataBar-Array
Das Array braucht zwischen den Einträgen Kommas, aber keines vor dem ersten. Das Beispiel löst das mit einem Zähler:DC-Counter1_inc zählt bei jedem Durchlauf hoch, und die negative Klammerung {!DC-Counter1(1)} setzt das Komma überall außer im ersten Durchlauf. Dasselbe Muster können Sie für jede andere JSON-Struktur im Template verwenden.
Der NO_PARSING-Block in der Reservierungsliste
In der Reservierungsliste steht ein Konstrukt, das auf den ersten Blick verwirrt:PR-AdvData erwartet einen Produktindex als Parameter, der hier erst zur Laufzeit aus ~E-BP_ProdIndex~ kommt. Ohne NO_PARSING würde der Parser das halbfertige Tag sofort auswerten und scheitern. Die NO_PARSING-Klammern schützen die beiden Hälften, sodass erst der zusammengesetzte Ausdruck geparst wird.
Weitere E-BP-Tags
Das Beispiel nutzt nur einen Teil der verfügbaren Tags. Die folgenden kommen darin nicht vor.
Außerdem nehmen
~E-BP_Begin~ und ~E-BP_End~ einen Formatparameter entgegen, beispielsweise ~E-BP_Begin(%d.%m.%Y)~. Ohne Parameter geben sie das Standardformat aus.
Die Adressfelder
Das Beispiel zeigt innerhalb vonE-BP_BillingAddress und E-BP_DeliveryAddress nur Vor- und Nachnamen. Verfügbar ist die vollständige Adresse.
Häufige Fehlerquellen beim Nachbauen
Drei Punkte fallen beim Nachbauen auf.E-BP_NewCompletePrice und E-BP_NewCompleteSaving gibt es nur als Einzel-Tag, nicht als Abschnitt. Sie liefern die Summe aus allen bisherigen Reservierungen und dem gerade laufenden Vorgang.E-BP_BillingAddress und E-BP_DeliveryAddress sind reine Umschalter auf den jeweiligen Adressdatensatz. Sie sind immer wahr, und eine negative Klammerung {!E-BP_BillingAddress} bewirkt nichts. Ob überhaupt eine Adresse vorliegt, fragen Sie mit E-BP_HAS-ADDRESS beziehungsweise E-BP_HAS-DELIVERY-ADDRESS ab.~E-BP_CurrentPrice_Format~ und ~E-BP_CurrentPrice_format~ sind dasselbe Tag, weshalb die uneinheitliche Schreibweise im Beispiel ohne Folgen bleibt.
Die Zustände einer Kampagne
Drei Abschnitts-Tags fragen den Status der Kampagne ab. Sie schließen einander aus.
Im Beispiel umschließt
E-BP_ACTIVE die Bestellschaltfläche. Behalten Sie das bei, sonst sieht der Kunde nach dem Ende der Kampagne eine Schaltfläche, die ins Leere läuft.