$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:
- Laden -
load()liest eine Datei und gibt ihren Inhalt zurück; das Ergebnis weisen Sie einer Variable zu (z. B.$data). - Prüfen - Sie prüfen mit
{{ if $data }}, ob das Laden geklappt hat. - 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 mitload()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
"ƒ()" kennzeichnet eine Funktion.
Methoden in der Übersicht
| Methode | Rückgabe-Typ | Beschreibung |
|---|---|---|
load() | map | list | Lädt den Inhalt einer JSON-Datei. |
read() | list | Listet die Dateien eines Verzeichnisses auf (ohne Inhalt). |
getLastError() | string | Letzte Fehlermeldung von load() / read(). |
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:
- Laden -
load()liest eine Datei und gibt ihren Inhalt zurück; das Ergebnis weisen Sie einer Variable zu (z. B.$data). - Prüfen - Sie prüfen mit
{{ if $data }}, ob das Laden geklappt hat. - 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 mitload()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
"ƒ()" kennzeichnet eine Funktion.
Methoden in der Übersicht
| Methode | Rückgabe-Typ | Beschreibung |
|---|---|---|
load() | map | list | Lädt den Inhalt einer JSON-Datei. |
read() | list | Listet die Dateien eines Verzeichnisses auf (ohne Inhalt). |
getLastError() | string | Letzte Fehlermeldung von load() / read(). |
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ückgabemap | list – abhängig von der JSON-Struktur, im Fehlerfall leer/null.
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
file | string | ja | Pfad zur Datei innerhalb der Quelle (z. B. products/product_123.json). |
options | map | ja | Format- und Quell-Optionen (siehe Tabelle). |
options)
| Key | Typ | Pflicht | Default | Beschreibung |
|---|---|---|---|---|
type | string | ja | – | Dateiformat. Aktuell erlaubt: json. |
source | string | nein | user | Datenquelle: user (Bucket external-data) oder system (Bucket system). |
maxDepth | int | nein | 7 | Begrenzt die Auslese-Tiefe verschachtelter JSON-Strukturen; tiefere Ebenen werden gekürzt. |
$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ßendload(). Hilfreich, wenn dynamisch ermittelt werden soll, welche Dateien in einem Verzeichnis vorhanden sind.
Signatur$wsExternalData.read(path, options)
Rückgabelist – Pfade der gefundenen Dateien.
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
path | string | ja | Verzeichnis-Pfad innerhalb der Quelle (z. B. json/Deutsch/). |
options | map | nein | Quell- und Filter-Optionen (siehe Tabelle). |
options)
| Key | Typ | Pflicht | Default | Beschreibung |
|---|---|---|---|---|
source | string | nein | user | Datenquelle: user oder system. |
recursive | bool | nein | false | true: auch Unterordner durchsuchen. |
glob | bool | nein | – | Schaltet die Muster-Interpretation ein/aus. Erwartet einen Boolean, kein Muster-String (siehe Hinweis). |
$wsExternalData.getLastError()
Gibt die letzte Fehlermeldung als String zurück, wenn beiload() 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ückgabestring – 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 Produkt137497 liegt unter products/137497.json:
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.
Nur Blöcke vom Typ
elemente.categories werden über die passende Komponente gerendert. Andere Block-Typen werden übersprungen.
Dateien eines Verzeichnisses auflisten
Mitread() ermitteln Sie, welche Dateien vorhanden sind, ohne deren Inhalt zu laden. Den Inhalt laden Sie anschließend gezielt mit load().
Alle passenden Dateien werden gefunden und einzeln geladen.
Laden mit Fehlerbehandlung
Nur bei Erfolg ausgeben, andernfalls die Fehlermeldung in die Konsole schreiben.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).Weiterführende Links
- Externe Datenschnittstelle (Datei-/Bucket-basiert) – legt fest, welche Buckets/Quellen es gibt und wie Dateien abgelegt werden.
- join-Funktion – verbindet ein Array zu einem String (für zusammengesetzte Pfade).
