EJD- (External JSON Data) sind der Zugang dazu. Sie decken drei Aufgaben ab.
Wegweiser: JSON-Schnittstelle
Der Ablauf
Jeder Zugriff läuft in drei Schritten: laden, prüfen, zugreifen. Die Daten bekommen beim Laden eine frei gewählte ID, über die alle weiteren Tags sie wiederfinden.EJD-SetUseID() erspart es, sie jedes Mal zu wiederholen.
Die Beispiele auf dieser Seite beziehen sich auf diese Datei:
Daten laden
Der Typ
subshop wählt der Shop das passende Unterverzeichnis selbst. Im englischen Subshop lädt ~EJD-LoadData(subshop,file.json,jdat)~ also die Datei /English/file.json. Dieselbe Zeile im Template funktioniert damit in allen Subshops.
Der Pfad beim Typ “intern”
Beim Typintern steht im zweiten Parameter keine Datei, sondern die technische Bezeichnung der bereitliegenden Daten.
Weitere Bezeichnungen kommen mit neuen Modulen hinzu und sind bei der WEBSALE AG oder beim jeweiligen Dienstleister zu erfragen.
Bei internen Daten wissen Sie oft nicht im Voraus, welche Felder geliefert werden.
EJD-RawDataOutput() gibt den kompletten Datensatz aus und ist der schnellste Weg, sich einen Überblick zu verschaffen.
Prüfen, ob das Laden geklappt hat
EJD-DataOK() klammert auf den Erfolg. Als Einzel-Tag gibt es den Fehlercode aus.
Die ID einmal setzen
EJD-SetUseID() legt die ID fest, die alle folgenden Zugriffs-Tags verwenden, wenn sie selbst keine mitbekommen.
Der Zugriffspfad
Alle Zugriffs-Tags erwarten als ersten Parameter den Pfad zum Element.Werte lesen
EJD-DA-ArrayElements() greift als Bereichs-Tag nur, wenn das Element wirklich ein Array und nicht leer ist. Die Klammerung beantwortet damit in einem Schritt die Frage, ob sich eine Schleife überhaupt lohnt.
Den Typ eines Werts prüfen
JSON kennt mehrere Werttypen. Acht Bereichs-Tags prüfen, welcher vorliegt.null ist, lässt eine ungeprüfte Ausgabe sonst leer.
Werte weiterverwenden
Die Zugriffs-Tags tragen Parameter. Damit lassen sie sich nicht als$…$ in ein anderes Tag schreiben, denn Tag-in-Tag funktioniert nur mit Einzel-Tags ohne eigenes Argument.
Deshalb merkt sich der Shop bei jedem Zugriff den angesprochenen Namen und Wert. Zwei parameterlose Tags geben sie wieder aus.
EJD-DA-TouchName(), EJD-DA-TouchValue() und EJD-DA-TouchArrayElements() gibt es nur dafür: Sie merken sich etwas, ohne selbst etwas auszugeben.
DC-ZeroLoopX zählt ab 0 und passt damit genau auf die Array-Indizes.
Referenz: DC- (Schleifen)
Über Elemente iterieren
Bei einem Objekt, dessen Schlüssel Sie nicht kennen, hilft keine Zählschleife.EJD-ElementIterator() läuft stattdessen über die Kinder eines Elements und gibt deren Namen aus.
EJD-ElementIterator den Namen des aktuellen Elements aus. Weil es dann parameterlos ist, lässt es sich als $EJD-ElementIterator$ in den Zugriffspfad einsetzen. Genau darauf beruht das Muster oben.
Fließkommazahlen ausgeben
EJD-SetRealOutputFormat() legt fest, mit wie vielen Nachkommastellen Fließkommazahlen ausgegeben werden. Zulässig sind 0 bis 6.
JSON erzeugen und ändern
EJD-CreateNewData() legt ein leeres JSON-Objekt an, das Sie im Template füllen.
Alle diese Tags funktionieren nicht nur auf neu erzeugten Daten, sondern ebenso auf geladenen. Damit lässt sich eine eingelesene Datei im Template anreichern und anschließend weitergeben.
Ein Array aufbauen
_root_ an: ~EJD-DA-SetToEmptyArray(_root_,jdat)~ ergibt [].
Ein Beispiel aus dem Tracking
Auf der Produktübersichtsseite ein JSON mit Index und Preis aller gezeigten Produkte aufbauen:Prüfen, ob die Änderung geklappt hat
EJD-ModificationOK klammert auf den Erfolg der letzten Änderung und gibt als Einzel-Tag den Fehlercode aus.
Rohdaten ein- und ausgeben
Ein JSON Web Token erzeugen
EJD-GenerateJWT() signiert die geladenen JSON-Daten und gibt sie als JSON Web Token aus. Damit lassen sich Daten fälschungssicher an ein Fremdsystem übergeben.
Das Geheimnis für die Signatur ist derselbe Konfigurationseintrag, den auch
DC-FPX_hash() und DC-FPX_encrypt() verwenden.
Referenz: Abschnitt <[DesignControl](/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik#designcontrol)>
Die Tags im Überblick
Zulässig sind alle Tags auf allen Templates. Die ID ist bei allen Tags optional, sobald sie mit
EJD-SetUseID() gesetzt wurde, mit Ausnahme von EJD-DataOK() und EJD-RawDataOutput().
Verwandte Themen
- Wegweiser: JSON-Schnittstelle
- Wegweiser: href-Attribut
- Referenz: DC- (Schleifen)
- Referenz: DC- (Freie Parameter und Session-Parameter)
