Zum Hauptinhalt springen
Mit dem $wsAccount-Modul lesen Sie die Account- und Adressdaten des aktuell eingeloggten Kunden und zeigen sie im Template an. Auf dieser Seite geht es ausschließlich um das Lesen und Anzeigen vorhandener Account- und Adressdaten. Alles, was Daten verändert (Adresse anlegen, bearbeiten, löschen, Passwort ändern), ist unter Aktionen → Account beschrieben, weil dort die auslösenden Aktionen und ihre Parameter dokumentiert sind.
Die meisten Werte von $wsAccount sind nur gefüllt, wenn der Kunde eingeloggt ist. Prüfen Sie deshalb vor dem Zugriff mit $wsAccount.isLoggedIn, ob ein Kunde angemeldet ist, sonst lesen Sie leere Werte aus und zeigen unbeabsichtigt leere Felder an.

Grundkonzept

Die Arbeit mit $wsAccount folgt immer demselben Ablauf:
Login-Zustand prüfen → Kundendaten lesen → reagieren.
Bevor Sie Kundendaten lesen, müssen Sie wissen, ob überhaupt ein Kunde eingeloggt ist. Erst der eingeloggte Zustand füllt die Variablen mit Werten. Anschließend lesen Sie die gewünschten Daten (z. B. den Anzeigenamen oder eine Adresse) und reagieren darauf, etwa mit einer persönlichen Begrüßung oder der Anzeige des Adressbuchs. Wann die Daten verfügbar sind
Wenn kein Kunde eingeloggt ist, geben die Account-Abfragen leere Werte zurück. Deshalb beginnt nahezu jedes Beispiel auf dieser Seite mit einer isLoggedIn-Prüfung.

Modulübersicht

Beispiel / Ausschnitt über $wsAccount
{{= $wsAccount | json }}
JSON-Ausgabe
{
  "addressFields": [...],
  "addresses": [...],
  "autoLogInRestriction": "...",
  "backInStockList": [...],
  "customerData": { ... },
  "defaultBillAddress": { ... },
  "defaultDeliveryAddress": { ... },
  "displayName": "...",
  "email": "...",
  "id": "...",
  "isAccountVerified": true,
  "isAutoLogInRestricted": true,
  "isAutoLoggedIn": true,
  "isLoggedIn": true,
  "isPasswordResetRequired": true,
  "lastLogin": "...",
  "loadAddress": "ƒ()",
  "loginRequired": "ƒ()",
  "pseudoCreditCards": [...],
  "typeSeparation": { ... }
}
Anmerkung: "ƒ()" kennzeichnet eine Funktion (Methode). Variablen in der Übersicht
NameRückgabe-TypBeschreibung
addressFieldsarrayListe aller verfügbaren Adressfelder mit deren Konfiguration.
addressesarrayListe aller gespeicherten Adressen des Kunden.
autoLogInRestrictionstringStatus der Auto-Login-Einschränkung.
backInStockListarrayProdukte, für die der Kunde eine Verfügbarkeits-Benachrichtigung angefordert hat.
customerDatamapKundenspezifische Felder (z. B. Label, Typ, Wert).
defaultBillAddressmapHaupt-Rechnungsadresse als Adress-Map.
defaultDeliveryAddressmapStandard-Lieferadresse als Adress-Map.
displayNamestringAnzeigename des Kunden.
emailstringE-Mail-Adresse des Kundenkontos.
idstringNutzer-ID des Kundenkontos.
isAccountVerifiedboolPrüft, ob das Kundenkonto verifiziert wurde.
isAutoLoggedInboolPrüft, ob der Nutzer automatisch eingeloggt wurde.
isAutoLogInRestrictedboolPrüft, ob beim automatischen Login nicht alle Shop-Funktionen verfügbar sind.
isLoggedInboolPrüft, ob der Nutzer eingeloggt ist.
isPasswordResetRequiredboolPrüft, ob das Passwort zurückgesetzt werden muss.
lastLoginstringDatum des letzten Logins.
pseudoCreditCardsarrayGespeicherte Kreditkarten (pseudonymisiert).
typeSeparationmapInformationen zur Adresstyp-Trennung.
Methoden in der Übersicht
MethodeRückgabe-TypBeschreibung
loadAddress()mapLädt eine Adresse anhand ihrer ID.
loginRequired()boolGibt zurück, ob eine bestimmte Aktion einen Login erfordert.

Templates

Die Daten eines eingeloggten Kunden können auf jedem Template geladen und angezeigt werden. Im Standard-Ausliefershop befinden sich die Templates für die Seiten des Kundenkontos im Verzeichnis views/account. Sie dienen als Grundlage zur Anzeige und Bearbeitung der Kundendaten. Sie können diese Daten aber auch in anderen Templates nutzen. Voraussetzung ist, dass der Kunde eingeloggt ist (siehe Grundkonzept).

Variablen

$wsAccount.isLoggedIn

Gibt zurück, ob der Nutzer eingeloggt ist. Diese Prüfung steht am Anfang fast jeder Account-Auswertung, weil alle übrigen Variablen erst im eingeloggten Zustand sinnvolle Werte liefern.
{{ if $wsAccount.isLoggedIn }}
  <!-- Kunde ist eingeloggt -->
{{ else }}
  <!-- Kunde ist nicht eingeloggt -->
{{ /if }}

$wsAccount.email

Gibt die E-Mail-Adresse des Kundenkontos zurück. Im Checkout kann ein Kunde auch als Gast bestellen. Dann liegt keine Konto-E-Mail vor, sondern eine Gast-Mailadresse aus dem Checkout. Das folgende Beispiel deckt deshalb beide Fälle ab, damit immer die passende Adresse angezeigt wird:
{{ if $wsCheckout.guestMail }}
  {{= $wsCheckout.guestMail }}
{{ else }}
  {{= $wsAccount.email }}
{{ /if }}
$wsCheckout.guestMail stammt aus dem Modul $wsCheckout und ist nur während des Bestellvorgangs gefüllt.

$wsAccount.id

Gibt die Nutzer-ID des Kundenkontos zurück. Verwenden Sie sie, um einen Kunden eindeutig zu identifizieren, etwa für das Tracking.
{{ if $wsAccount.isLoggedIn }}
  Nutzer-ID: {{= $wsAccount.id }}
{{ /if }}

$wsAccount.isAccountVerified

Gibt zurück, ob das Kundenkonto verifiziert wurde. Werten Sie das aus, wenn bestimmte Funktionen erst nach Verifizierung freigeschaltet werden sollen.
{{ if $wsAccount.isAccountVerified }}
  <!-- Konto ist verifiziert -->
{{ /if }}

$wsAccount.isAutoLoggedIn

Gibt zurück, ob der Nutzer automatisch eingeloggt wurde (über „Angemeldet bleiben”). Das ist relevant, weil ein automatischer Login eingeschränkt sein kann (siehe isAutoLogInRestricted).
{{ if $wsAccount.isAutoLoggedIn }}
  <!-- Nutzer wurde automatisch eingeloggt -->
{{ /if }}

$wsAccount.isAutoLogInRestricted

Gibt zurück, ob beim automatischen Login nicht alle Shop-Funktionen verfügbar sind. Werten Sie das aus, bevor Sie einem automatisch eingeloggten Kunden sicherheitsrelevante Aktionen (z. B. Adressänderung) anbieten, denn diese können eine erneute Anmeldung erfordern.
Mehr dazu in der Konfiguration.
{{ if $wsAccount.isAutoLogInRestricted }}
  <!-- Nicht alle Shop-Funktionen verfügbar – ggf. erneuten Login anbieten -->
{{ /if }}

$wsAccount.autoLogInRestriction

Gibt den Status der Auto-Login-Einschränkung als Zeichenkette zurück. Mehr dazu in der Konfiguration.
{{ if $wsAccount.autoLogInRestriction }}
  <!-- Auto-Login-Einschränkung ist aktiv -->
{{ /if }}

$wsAccount.lastLogin

Gibt das Datum des letzten Logins als Zeichenkette zurück.
{{ if $wsAccount.lastLogin }}
  Letzter Login: {{= $wsAccount.lastLogin }}
{{ /if }}

$wsAccount.isPasswordResetRequired

Gibt zurück, ob das Passwort zurückgesetzt werden muss. Werten Sie das aus, um den Kunden gezielt zur Passwortänderung zu führen.
Mehr dazu in der Konfiguration.
{{ if $wsAccount.isPasswordResetRequired }}
  Bitte setzen Sie Ihr Passwort zurück.
{{ /if }}

$wsAccount.customerData

Gibt kundenspezifische Felder als map zurück (z. B. Label, Typ und Wert). Verwenden Sie diese Variable, um zusätzlich konfigurierte Kundenfelder anzuzeigen, ohne jedes Feld einzeln zu kennen.
Mehr dazu in der Konfiguration.
{{ foreach $field in $wsAccount.customerData }}
  {{= $field.value }}
{{ /foreach }}

$wsAccount.addressFields

Gibt eine Liste aller verfügbaren Adressfelder mit deren Konfiguration zurück. Jedes Element ist ein Objekt mit den Eigenschaften name (Feldname, z.B. firstName ), label (konfigurierte Beschriftung, kann leer sein) und dataId . Diese Liste kann benutzt werden, um Adressformulare dynamisch aus der Konfiguration aufzubauen.
{{ foreach $field in $wsAccount.addressFields }}
  {{= $field.name }} – {{= $field.label }}
{{ /foreach }}

$wsAccount.backInStockList

Gibt die Produkte zurück, für die der Kunde eine Benachrichtigung bei Verfügbarkeit angefordert hat. Zeigen Sie die Liste beispielsweise im Kundenkonto an, damit der Kunde seine vorgemerkten Produkte sieht und verwalten kann.
{{ foreach $product in $wsAccount.backInStockList }}
  {{= $product }}
{{ /foreach }}

$wsAccount.pseudoCreditCards

Gibt die gespeicherten Kreditkarten in pseudonymisierter Form zurück. Die Pseudonymisierung ist gewollt, denn Vollständige Kartendaten dürfen aus Sicherheits- und Datenschutzgründen nicht im Frontend angezeigt werden.
{{ foreach $card in $wsAccount.pseudoCreditCards }}
  {{= $card }}
{{ /foreach }}

$wsAccount.typeSeparation

Gibt Informationen zur Adresstyp-Trennung zurück. Über diese Map können Sie prüfen, ob Rechnungs- und Lieferadressen getrennt verwaltet werden und welche Einschränkungen gelten.

Eigenschaften von $wsAccount.typeSeparation

EigenschaftRückgabe-TypBeschreibung
enabledboolPrüft, ob die Adresstyp-Trennung aktiv ist.
canCreateBillAddressboolPrüft, ob noch eine neue Rechnungsadresse angelegt werden kann.
maxBillAddressesintMaximale Anzahl erlaubter Rechnungsadressen.
0 = unbegrenzt
-1 = Trennung deaktiviert.
defaultBillAddressReadonlyboolPrüft, ob die Haupt-Rechnungsadresse schreibgeschützt ist.
{{ if $wsAccount.typeSeparation.enabled }}
  {{ if $wsAccount.typeSeparation.canCreateBillAddress }}
    <!-- Neue Rechnungsadresse kann angelegt werden -->
  {{ else }}
    <!-- Maximale Anzahl an Rechnungsadressen erreicht -->
  {{ /if }}
{{ /if }}

$wsAccount.defaultBillAddress

Gibt die Haupt-Rechnungsadresse des Kunden als Adress-Map zurück (einschließlich id), sofern eine als Standard markiert ist. Verwenden Sie sie, wenn gezielt die Haupt-Rechnungsadresse gebraucht wird. Die verfügbaren Eigenschaften entsprechen denen von $wsAccount.addresses.
{{ if $wsAccount.defaultBillAddress }}
  Vorname: {{= $wsAccount.defaultBillAddress.firstName }}
  Nachname: {{= $wsAccount.defaultBillAddress.lastName }}
{{ /if }}

$wsAccount.defaultDeliveryAddress

Gibt die Standard-Lieferadresse des Kunden als Adress-Map zurück (einschließlich id), sofern eine als Standard markiert ist. Verwenden Sie sie, wenn gezielt die Standard-Lieferadresse gebraucht wird. Die verfügbaren Eigenschaften entsprechen denen von $wsAccount.addresses.
{{ if $wsAccount.defaultDeliveryAddress }}
  Vorname: {{= $wsAccount.defaultDeliveryAddress.firstName }}
  Nachname: {{= $wsAccount.defaultDeliveryAddress.lastName }}
{{ /if }}

$wsAccount.addresses

Gibt die Liste aller gespeicherten Adressen des Kunden zurück. Verwenden Sie sie für ein Adressbuch oder wenn Sie über alle Adressen iterieren möchten.
{{ foreach $address in $wsAccount.addresses }}
  {{= $address.firstName }} {{= $address.lastName }}
{{ /foreach }}
Jede Adresse aus $wsAccount.addresses (und ebenso aus defaultBillAddress, defaultDeliveryAddress und loadAddress()) stellt die folgenden Eigenschaften zur Verfügung.

Eigenschaften von $wsAccount.addresses

EigenschaftRückgabe-TypBeschreibung
idstringAdress-ID
salutationCodestringAnredecode
titleCodestringTitelcode (z. B. Dr., Prof.)
firstNamestringVorname
lastNamestringNachname
companystringFirmenname
departmentstringAbteilung
streetstringStraße
streetNumberstringHausnummer
additionalInfostringZusätzliche Adressinformationen
zipstringPostleitzahl
citystringStadt
statestringBundesland / Region
countrystringLand
phonestringTelefonnummer
mobilePhonestringMobiltelefonnummer
faxstringFaxnummer
businessPhonestringGeschäftliche Telefonnummer
businessFaxstringGeschäftliche Faxnummer
dateOfBirthstringGeburtsdatum
taxIdstringSteuernummer
addressTypestringTyp der Adresse
addressOwnerMemberIdstringID des Kunden, dem die Adresse gehört
custommapBenutzerdefinierte Adressfelder
isBillAddressboolPrüft, ob die Adresse als Rechnungsadresse verwendet werden kann.
isDeliveryAddressboolPrüft, ob die Adresse als Lieferadresse verwendet werden kann.
isDefaultBillAddressboolPrüft, ob es sich um die Haupt-Rechnungsadresse handelt.
isDefaultDeliveryAddressboolPrüft, ob es sich um die Standard-Lieferadresse handelt.
isReadonlyboolPrüft, ob die Adresse schreibgeschützt ist.
typestringTyp der Adresse ("bill" oder "delivery").

$address.customLabel()

Gibt das benutzerdefinierte Label für ein bestimmtes Adressfeld zurück, abhängig vom Adresstyp. Nutzen Sie die Methode, um Formularbeschriftungen aus der Konfiguration zu übernehmen, statt sie fest im Template zu hinterlegen. Signatur $address.customLabel(fieldName, addressType) Rückgabe string – das konfigurierte Label für das Feld. Parameter
NameTypPflichtBeschreibung
fieldNamestringjaName des Adressfeldes (z. B. "firstName").
addressTypestringjaAdresstyp: "bill" (Rechnung), "delivery" (Lieferung) oder "both" (beide).
Vorname-Label: {{= $address.customLabel("firstName", "bill") }}

$address.defaultValue()

Gibt den konfigurierten Standardwert für ein bestimmtes Adressfeld zurück, abhängig vom Adresstyp. Nutzen Sie die Methode, um Felder mit sinnvollen Vorgaben vorzubelegen. Signatur $address.defaultValue(fieldName, addressType) Rückgabe string – der konfigurierte Standardwert für das Feld. Parameter
NameTypPflichtBeschreibung
fieldNamestringjaName des Adressfeldes (z. B. "company").
addressTypestringjaAdresstyp:
"bill" (Rechnung), "delivery" (Lieferung) oder "both" (beide).
{{= $address.defaultValue("company", "delivery") }}
Hinweis: Die Methoden customLabel() und defaultValue() haben aktuell nur im Checkout eine Wirkung, sobald der Kunde eine Adresse ausgewählt hat. Im Kundenkonto unterscheiden sie noch nicht zwischen Liefer- und Rechnungsadresse. Das ist für eine künftige Version vorgesehen.

Methoden

$wsAccount.loginRequired()

Gibt zurück, ob der Nutzer für eine bestimmte Aktion angemeldet sein muss. Werten Sie das aus, bevor Sie eine Aktion anbieten, damit Sie einen nicht angemeldeten Kunden vorab zum Login führen, statt ihn in eine abgelehnte Aktion laufen zu lassen. Mehr dazu in der Konfiguration. Signatur $wsAccount.loginRequired(actionName) Rückgabe booltrue, wenn ein Login erforderlich ist, sonst false. Parameter
NameTypPflichtBeschreibung
actionNamestringjaName der Aktion, für die geprüft wird, ob ein Login erforderlich ist (z. B. "EmailUpdate").
{{ if $wsAccount.loginRequired("EmailUpdate") }}
  <!-- Login erforderlich, bevor die E-Mail-Adresse geändert werden kann -->
{{ /if }}

$wsAccount.loadAddress()

Lädt eine einzelne Adresse anhand ihrer ID und gibt sie als Adress-Map zurück. Verwenden Sie die Methode im Checkout, um die vom Kunden gewählte Rechnungs- oder Lieferadresse auszugeben. Signatur $wsAccount.loadAddress(addressId) Rückgabe map – die geladene Adresse mit den Eigenschaften aus$wsAccount.addresses. Parameter
NameTypPflichtBeschreibung
addressIdstringjaID der zu ladenden Adresse (z. B. die im Checkout gewählte Rechnungsadresse).
{{ var $billAddress = $wsAccount.loadAddress($wsCheckout.selectedBillAddress) }}
{{= $billAddress.firstName }} {{= $billAddress.lastName }}
$wsCheckout.selectedBillAddress stammt aus dem Modul $wsCheckout und liefert die ID der im Bestellvorgang gewählten Rechnungsadresse.

Aktionen

$wsAccount selbst liest nur Daten. Aktionen, die Daten verändern (Adresse anlegen, bearbeiten, löschen, Passwort oder E-Mail ändern), sind separat dokumentiert: Aktionen → Account.

Beispiele

Die folgenden Beispiele sind nach Anwendungsfall geordnet: von der einfachen Zustandsprüfung über die persönliche Anrede bis zur Adressauflösung im Checkout. Alle Beispiele setzen einen eingeloggten Kunden voraus und prüfen das jeweils zu Beginn.

Login-Zustand prüfen und Inhalt unterscheiden

Auslöser ist der Login-Zustand. Je nachdem, ob ein Kunde eingeloggt ist, zeigen Sie unterschiedliche Inhalte an.
{{ if $wsAccount.isLoggedIn }}
  <!-- Kunde ist eingeloggt: z. B. Begrüßung und Links ins Kundenkonto -->
{{ else }}
  <!-- Kunde ist nicht eingeloggt: z. B. Login-Formular anbieten -->
{{ /if }}
Ergebnis
Eingeloggte Kunden sehen den persönlichen Bereich, nicht angemeldete Besucher das Login-Angebot.

Persönliche Anrede eines eingeloggten Kunden

Auslöser ist der Login-Zustand. Ist ein Kunde eingeloggt, sprechen Sie ihn mit Vor- und Nachnamen aus seiner Rechnungsadresse an. Die if-Prüfung auf die Adresse verhindert leere Begrüßungen, falls noch keine Adresse hinterlegt ist.
{{ if $wsAccount.isLoggedIn }}
  {{ var $address = $wsAccount.defaultBillAddress }}
  {{ if $address }}
    Willkommen, {{= $address.firstName }} {{= $address.lastName }}!
  {{ /if }}
{{ /if }}
Ergebnis
Eingeloggte Kunden mit hinterlegter Rechnungsadresse werden namentlich begrüßt.
Auslöser ist der Login-Zustand. Für eingeloggte Kunden erzeugen Sie einen Link zur Übersichtsseite. Die URL wird über $wsViews.viewUrl() gebildet, damit der Pfad zum Template korrekt aufgelöst wird.
{{ if $wsAccount.isLoggedIn }}
  <a href="{{= $wsViews.viewUrl('account/overview.htm') }}">
    Zu Ihrer Kundenkonto-Übersicht
  </a>
{{ /if }}
Ergebnis
Eingeloggte Kunden erhalten einen Link, der zuverlässig auf die Übersichtsseite zeigt.

Rechnungsadresse anzeigen

Auslöser ist der Login-Zustand. Sie lesen die Haupt-Rechnungsadresse aus und zeigen sie mit einem Bearbeiten-Link an. Der Link übergibt die Adress-id, damit die Aktion die richtige Adresse bearbeitet.
{{ if $wsAccount.isLoggedIn }}
  {{ var $address = $wsAccount.defaultBillAddress }}
  {{ if $address }}
    Ihre Rechnungsadresse
    {{= $address.firstName }} {{= $address.lastName }}
    {{= $address.street }} {{= $address.streetNumber }}
    {{= $address.zip }} {{= $address.city }}
    {{= $address.country }}

    <a href="{{= $wsViews.viewUrl('account/address.htm', {type: 'change', addressId: $address.id}) }}">
      Bearbeiten
    </a>
  {{ /if }}
{{ /if }}
Ergebnis
Die Rechnungsadresse wird angezeigt und der Bearbeiten-Link führt zur richtigen Adresse.

Adressbuch: über alle Adressen iterieren

Auslöser ist der Login-Zustand. Sie iterieren über alle gespeicherten Adressen und zeigen je Adresse einen Bearbeiten-Link. Die Schleifenvariable ($address) wird durchgängig verwendet, damit der Link genau die Adresse der aktuellen Iteration trifft.
{{ if $wsAccount.isLoggedIn }}
  {{ foreach $address in $wsAccount.addresses }}
    <p>Adresse-ID: {{= $address.id }}</p>
    <a href="{{= $wsViews.viewUrl('account/address.htm'}}">
      Bearbeiten
    </a>
  {{ /foreach }}
{{ /if }}
Ergebnis
Jede gespeicherte Adresse wird mit einem Bearbeiten-Link aufgelistet, der auf die Übersichtsseite der Adressen weiterleitet.

  • Aktionen → Account - Adressen und Konto verändern (anlegen, bearbeiten, löschen), weil $wsAccount selbst nur liest.
  • $wsCheckout - liefert die im Bestellvorgang gewählten Adress-IDs (selectedBillAddress, selectedShippingAddress) und die Gast-Mailadresse, die in den Beispielen verwendet werden.
  • Konfiguration: Accounts / Benutzerkonten - steuert Auto-Login, Verifizierung und Adressfelder, auf die mehrere Variablen verweisen.