Zum Hauptinhalt springen
Die JSON-Schnittstelle holt Daten aus Dateien in das Template, die nicht aus der Warenwirtschaft stammen. Wie sie eingerichtet wird und was die EJD--Tags im Einzelnen können, steht in der Referenz. Diese Seite zeigt, wie sie in konkreten Aufgaben zusammenspielen. Wegweiser: JSON-Schnittstelle · Referenz: EJD- (JSON-Daten) Alle Beispiele folgen demselben Dreischritt: Datei laden und mit einer Kennung versehen, prüfen ob das geklappt hat, dann über den Zugriffspfad auf die Werte zugreifen. Zu jedem Produkt gehört eine Datei mit Querverweisen, wahlweise auf einzelne Produkte oder auf eine Gruppe, jeweils mit eigener Überschrift. Die Datei heißt nach der Produktnummer und liegt global:
Im Template der Produktdetailansicht:
DC-ZeroLoop zählt ab 0, die gewöhnliche Schleife ab 1. Für Zugriffe in ein JSON-Array ist deshalb DC-ZeroLoop die richtige Wahl, denn crosslinkProducts[0] ist das erste Element.
Der Umweg über TouchValue und einen freien Parameter sieht umständlich aus, ist aber nötig. EJD-DA-Value() gibt einen Wert aus, es setzt ihn nicht als Argument in ein anderes Tag ein. EJD-DA-TouchValue() legt den Wert deshalb in EJD-LastValueAccessed ab, von wo ihn ein anderes Tag abholen kann.Das zweite Argument von PR-LoadData() entscheidet, wie das erste gelesen wird: 0 als Produktindex, 1 als Produktnummer. Das Feld im Beispiel heißt productID und enthält eine Produktnummer, deshalb steht hier 1. Prüfen Sie, welche der beiden Angaben in Ihren JSON-Dateien steht.
Referenz: EJD-LoadData() · EJD-SetUseID() · EJD-DA-TouchArrayElements() · EJD-DA-NameExists() · DC-ZeroLoopX · DC-DynamicLoopX · PR-LoadData()

Zwei Dateien verschränkt lesen

Eine Datei enthält die sprachabhängigen Beschriftungen, eine zweite die Bilddaten eines Produkts. Beide werden gleichzeitig geladen und bekommen eigene Kennungen.
Weil beide Dateien einen Eintrag MainPicture haben, muss hier bei jedem Zugriff die Kennung mitstehen. EJD-SetUseID() wäre an dieser Stelle gerade falsch, es würde die Unterscheidung aufheben. Die Schleife wird gesetzt, bevor die Überschrift ausgegeben wird, und die Überschrift steht innerhalb der Prüfung auf mehr als null Elemente. So erscheint keine Überschrift über einer leeren Liste.
Die Pfade in URL zeigen auf das Templateverzeichnis des Shops, nicht auf den FTP-Zugang der JSON-Schnittstelle. Die Schnittstelle liefert die Daten, die Bilder liegen weiterhin dort, wo die übrigen Bilder des Shops liegen.
Die Beschreibung aus der Datei gehört in das alt-Attribut und nicht als Text unter das Bild, wie es die bisherige Beschreibung zeigt. Dann hat das Bild einen Namen, und der Text erscheint nicht doppelt.

Eine unbekannte Datei durchlaufen

Ist der Aufbau der Datei nicht im Voraus bekannt, läuft EJD-ElementIterator über die vorhandenen Elemente.
Der Name des aktuellen Elements steht in EJD-ElementIterator selbst. Für die zweite Ebene muss er vorher in einen freien Parameter gelegt werden, weil die innere Schleife das Tag mit ihrem eigenen Namen überschreibt.
Das Beispiel geht nur eine Ebene tief und behandelt nur Objekte. Ein Array meldet sich mit dem Typ array und bleibt uneröffnet. Für Arrays brauchen Sie zusätzlich EJD-DA-TouchArrayElements() und eine Zählschleife, wie im ersten Beispiel.
Referenz: EJD-ElementIterator · EJD-DA-IsObject()

Die technische Antwort eines Zahlungsdienstleisters lesen

Der Typ intern greift auf Daten zu, die der Shop selbst abgelegt hat, hier die Antwort des Zahlungsdienstleisters.
EJD-DataOK() arbeitet als Klammerung und als Einzeltag. Als Klammerung greift es, wenn die Daten da sind. Als Einzeltag gibt es den Fehlercode aus, deshalb steht es im negativen Zweig noch einmal.
Die Antworten der Dienstleister sind für die Fehlersuche gedacht. Geben Sie daraus nichts auf einer Seite aus, die der Käufer sieht. Technische Kennungen und Fehlercodes gehören in das Protokoll, nicht in den Bestellablauf.

Nutzlast für ein serverseitiges Ereignis

Für ASSE-Fire() wird ein JSON-Objekt gebraucht. Dafür gibt es zwei Wege. Von Hand zusammengesetzt, mit einem freien Parameter:
Mit den JSON-Tags entsteht dasselbe Ergebnis, ohne eine einzige Klammer von Hand. Das Beispiel dazu steht in der Referenz unter “Ein Beispiel aus dem Tracking”. Referenz: EJD- (JSON-Daten) · Wegweiser: Asynchronous Server Side Events Beide Wege erzeugen:
Nehmen Sie den Weg über die JSON-Tags.Dass der Shop die Klammern setzt, ist dabei der kleinere Vorteil. Der größere: Er maskiert auch die Werte. Enthält ein Produktname ein Anführungszeichen oder einen Rückwärtsschrägstrich, entsteht beim Zusammensetzen von Hand ungültiges JSON, und der Empfänger verwirft die ganze Übertragung. Bemerken würden Sie das erst, wenn die Zahlen im Zielsystem fehlen.Der Weg von Hand bleibt nachvollziehbar, solange nur Zahlen und Produktindizes übertragen werden. Sobald Texte dazukommen, ist er ein Risiko.
~WS-DisablePriceAndNumberFormat~ vor dem Preis ist in beiden Varianten unverzichtbar. Ohne diese Zeile wird der Preis mit Tausendertrennzeichen und Komma eingesetzt, und das Zielsystem liest daraus eine falsche Zahl oder bricht ab. Referenz: DC-FPX_append · ASSE-Fire() · WS-DisablePriceAndNumberFormat

Verwandte Themen