Skip to main content
Mit dem $wsExternalData-Modul laden Sie dateibasierte externe Daten (JSON) aus dem shop-eigenen S3 in Ihre Templates und verarbeiten sie dort. Typische Anwendungsfälle sind Zusatzinformationen, die nicht aus den Standard-Shopdaten stammen, beispielsweise PDF-Listen zu einem Produkt oder Inhalte aus WEBSALE-Komponenten wie einer Strapi-Instanz. Auf dieser Seite geht es um den lesenden Zugriff auf abgelegte Dateien. Das Befüllen der Buckets (Upload, Strapi-Export) erfolgt über die Datenschnittstelle, nicht über dieses Modul.

Grundkonzept

$wsExternalData hat keine eigenen Variablen. Stattdessen laden Sie Daten über eine Methode in eine eigene Template-Variable und arbeiten dann mit dieser weiter. Der Ablauf ist immer derselbe:
  1. Laden - load() liest eine Datei und gibt ihren Inhalt zurück; das Ergebnis weisen Sie einer Variable zu (z. B. $data).
  2. Prüfen - Sie prüfen mit {{ if $data }}, ob das Laden geklappt hat.
  3. Ausgeben - erst danach iterieren oder zeigen Sie die Inhalte.

Immer auf Erfolg prüfen

Externe Daten können fehlen oder nicht erreichbar sein (falscher Pfad, leerer Bucket, Zugriffsproblem). Umschließen Sie die Ausgabe deshalb immer mit {{ if $data }} – sonst entstehen leere Platzhalter oder „tote” HTML-Strukturen. Im Fehlerfall liefert getLastError() eine Diagnosemeldung (nur für die Entwicklung, nicht fürs Frontend).

Die drei Methoden im Zusammenspiel

  • load() lädt den Inhalt einer Datei (Map oder Liste, je nach JSON).
  • read() listet die Dateien eines Verzeichnisses auf, ohne deren Inhalt zu laden – nützlich, um dynamisch zu ermitteln, welche Dateien vorhanden sind, und diese anschließend mit load() zu laden.
  • getLastError() gibt die letzte Fehlermeldung zurück.

Datenquellen (source)

Beide Lade-Methoden kennen zwei Quellen: user (Bucket external-data, Standard) für eigene, projektbezogene Dateien und system (Bucket system) für Dateien, die WEBSALE-Komponenten bereitstellen (z. B. Strapi-Exporte).

Hinweis zum Zeitpunkt

load() und read() greifen beim Seitenaufbau auf das S3 zu. Jeder Aufruf ist ein Netzwerkzugriff. Somit laden Sie gezielt, was die Seite braucht, statt unnötig viele Dateien pro Seitenaufruf.

Modulübersicht

Beispiel / Ausschnitt über $wsExternalData
JSON-Ausgabe
Anmerkung: "ƒ()" kennzeichnet eine Funktion. Methoden in der Übersicht

Grundkonzept

$wsExternalData hat keine eigenen Variablen. Stattdessen laden Sie Daten über eine Methode in eine eigene Template-Variable und arbeiten dann mit dieser weiter. Der Ablauf ist immer derselbe:
  1. Laden - load() liest eine Datei und gibt ihren Inhalt zurück; das Ergebnis weisen Sie einer Variable zu (z. B. $data).
  2. Prüfen - Sie prüfen mit {{ if $data }}, ob das Laden geklappt hat.
  3. Ausgeben - erst danach iterieren oder zeigen Sie die Inhalte.

Immer auf Erfolg prüfen

Externe Daten können fehlen oder nicht erreichbar sein (falscher Pfad, leerer Bucket, Zugriffsproblem). Umschließen Sie die Ausgabe deshalb immer mit {{ if $data }} – sonst entstehen leere Platzhalter oder „tote” HTML-Strukturen. Im Fehlerfall liefert getLastError() eine Diagnosemeldung (nur für die Entwicklung, nicht fürs Frontend).

Die drei Methoden im Zusammenspiel

  • load() lädt den Inhalt einer Datei (Map oder Liste, je nach JSON).
  • read() listet die Dateien eines Verzeichnisses auf, ohne deren Inhalt zu laden – nützlich, um dynamisch zu ermitteln, welche Dateien vorhanden sind, und diese anschließend mit load() zu laden.
  • getLastError() gibt die letzte Fehlermeldung zurück.

Datenquellen (source)

Beide Lade-Methoden kennen zwei Quellen: user (Bucket external-data, Standard) für eigene, projektbezogene Dateien und system (Bucket system) für Dateien, die WEBSALE-Komponenten bereitstellen (z. B. Strapi-Exporte).

Hinweis zum Zeitpunkt

load() und read() greifen beim Seitenaufbau auf das S3 zu. Jeder Aufruf ist ein Netzwerkzugriff. Somit laden Sie gezielt, was die Seite braucht, statt unnötig viele Dateien pro Seitenaufruf.

Modulübersicht

Beispiel / Ausschnitt über $wsExternalData
JSON-Ausgabe
Anmerkung: "ƒ()" kennzeichnet eine Funktion. Methoden in der Übersicht

Templates

Externe Daten können in jedes Template geladen werden, je nach Anwendungsfall beispielsweise auf Produktdetailseiten (Zusatzdaten), Kategorieseiten (Zusatzlisten) oder Content-Seiten.

Variablen

$wsExternalData stellt keine eigenen Variablen bereit. Die geladenen Daten sind in der Template-Variable gespeichert, der Sie das Ergebnis von load() zuweisen (siehe Grundkonzept).

Methoden

$wsExternalData.load()

Lädt den Inhalt einer Datei aus der externen Datenschnittstelle und gibt ihn, je nach JSON-Struktur, als Map (bei einem Objekt) oder Liste (bei einem Array) zurück, um ihn im Template auszugeben (z. B. PDFs, Zusatzattribute, CMS-Inhalte). Signatur
$wsExternalData.load(file, options)
Rückgabe
map | list – abhängig von der JSON-Struktur, im Fehlerfall leer/null.
Parameter Optionen (options)

$wsExternalData.read()

Listet alle Dateien eines Verzeichnisses der externen Datenschnittstelle auf (optional inkl. Unterordnern) und gibt deren Pfade als Liste zurück. Der Dateiinhalt wird nicht geladen, nutzen Sie dafür anschließend load(). Hilfreich, wenn dynamisch ermittelt werden soll, welche Dateien in einem Verzeichnis vorhanden sind. Signatur
$wsExternalData.read(path, options)
Rückgabe
list – Pfade der gefundenen Dateien.
Parameter Optionen (options)

$wsExternalData.getLastError()

Gibt die letzte Fehlermeldung als String zurück, wenn bei load() oder read() ein Fehler aufgetreten ist (z. B. Datei nicht vorhanden, Zugriff nicht möglich). Die Meldung ist für die Fehlersuche gedacht und sollte nicht im Frontend für Kunden ausgegeben werden. Signatur
$wsExternalData.getLastError()
Rückgabe
string – Fehlerbeschreibung, oder leer/null, wenn kein Fehler vorliegt.
Geben Sie die Fehlermeldung nur in der Konsole (Entwicklung) aus, nie sichtbar ins Frontend. Der autoescape "js"-Block stellt sicher, dass Sonderzeichen in der Meldung das umgebende Skript nicht zerstören.

Aktionen

Für $wsExternalData stehen keine Aktionen zur Verfügung.

Beispiele

Produkt-Zusatzdaten (PDF-Liste) laden und ausgeben

Ein häufiger Fall: Zu einem Produkt werden über eine JSON-Datei PDF-Verlinkungen gepflegt. Für Produkt 137497 liegt unter products/137497.json:
Die Datei laden, auf Erfolg prüfen und die PDFs als Liste ausgeben:
Ergebnis
Eine Liste verlinkter PDFs. Aber nur, wenn die Datei geladen wurde und ein pdf-Array enthält.

CMS-/Strapi-Inhalte aus der Quelle system laden

Aus dem system-Bucket lädt man typischerweise Strapi-Exporte. In Content mischt Strapi verschiedene Block-Typen. Jeder Block trägt ein __component-Feld, über das Sie gezielt filtern.
Ein Block in der JSON-Datei sieht z. B. so aus:
Ergebnis
Nur Blöcke vom Typ elemente.categories werden über die passende Komponente gerendert. Andere Block-Typen werden übersprungen.

Dateien eines Verzeichnisses auflisten

Mit read() ermitteln Sie, welche Dateien vorhanden sind, ohne deren Inhalt zu laden. Den Inhalt laden Sie anschließend gezielt mit load().
Ergebnis
Alle passenden Dateien werden gefunden und einzeln geladen.

Laden mit Fehlerbehandlung

Nur bei Erfolg ausgeben, andernfalls die Fehlermeldung in die Konsole schreiben.
Ergebnis
Bei Erfolg erscheinen die Daten, sonst landet die Fehlerursache in der Browser-Konsole.
Wenn Sie einen Pfad aus mehreren Bestandteilen zusammensetzen, können Sie ein Array mit | join zu einem String verbinden, bevor Sie es an load() / read() übergeben. Für einen festen Pfad genügt der String direkt (wie in den Beispielen oben).