$wsStores

$wsStores

Mit dem $wsStores Modul können Sie auf die konfigurierten Märkte und Filialen des Shops zugreifen. Typische Anwendungsfälle sind Click & Collect, Filialfinder und die Anzeige von Lagerbeständen im Markt. In diesem Abschnitt erfahren Sie, wie Sie Märkte laden, den ausgewählten Markt verwalten und Öffnungszeiten anzeigen können.


Inhaltsverzeichnis


Modulübersicht


Beispiel / Ausschnitt über $wsStores

{{= $wsStores | json }}


JSON-Ausgabe

{ "selectedStore": null, "loadAllStores": "ƒ()", "loadStore": "ƒ()" }

Anmerkung: "ƒ()" kennzeichnet eine Funktion.


Variablen und Methoden in der Übersicht

Name

Rückgabe-Typ

Beschreibung

Name

Rückgabe-Typ

Beschreibung

selectedStore

map

Aktuell ausgewählter Markt oder null, wenn keiner ausgewählt ist.

loadAllStores()

array

Lädt eine Liste aller verfügbaren Märkte.

loadStore()

map

Lädt einen einzelnen Markt anhand seiner ID.

 


Templates

Das $wsStores Modul wird typischerweise verwendet auf:

  • Marktsuche-Seiten (Filialfinder)

  • Produktdetailseiten (Verfügbarkeit im Markt)

  • Checkout-Seiten (Click & Collect Auswahl)

  • Header/Footer (ausgewählter Markt anzeigen)


Variablen

 

$wsStores.selectedStore

Gibt den aktuell in der Session ausgewählten Markt aus. Ist null, wenn kein Markt ausgewählt wurde.

{{ if $wsStores.selectedStore }} Ihr Markt: {{= $wsStores.selectedStore.name }} {{ else }} Kein Markt ausgewählt {{ /if }}

 


Methoden

 

$wsStores.loadAllStores()

Lädt eine Liste aller verfügbaren Märkte.

Signatur
$wsStores.loadAllStores()

Rückgabe
array - Liste mit Store-Maps.


Beispiel, das alle Märkte lädt und anzeigt.

{{ foreach $store in $wsStores.loadAllStores() }} <p>{{= $store.name }} – {{= $store.city }}</p> {{ /foreach }}

 

 

$wsStores.loadStore()

Lädt einen einzelnen Markt anhand seiner ID.

Signatur
$wsStores.loadStore(storeId)


Rückgabe
map - Store-Map mit allen Marktdaten.


Beispiel, das einen Markt lädt.

{{ var $store = $wsStores.loadStore(1) }} Marktname: {{= $store.name }}

 

Mit Verwendung der Rückgabe-Daten von $wsStores.loadStore stehen verschiedene Eigenschaften zur Verfügung, die verwendet werden können. Nachfolgend eine Übersicht, welche Eigenschaften verfügbar sind.


Eigenschaften von $wsStores.loadStore

Eigenschaften

Rückgabe-Typ

Beschreibung

Eigenschaften

Rückgabe-Typ

Beschreibung

id

int

Eindeutige ID des Marktes.

name

string

Name des Marktes.

street

string

Straße (ggf. mit Hausnummer).

zipCode

string

Postleitzahl.

city

string

Stadt.

country

string

Land.

storageId

string

ID des Markt-Lagers zur Abfrage des Lagerbestands über $wsInventory.load().

clickAndCollect

bool

Verfügbarkeit von Click & Collect.

openNow

bool

Prüfung, ob der Markt aktuell geöffnet ist.

location

map

GPS-Koordinaten (latitude, longitude)

latitude

float

Breitengrad.

longitude

float

Längengrad.

openingHours

map

Öffnungszeiten nach Wochentag (0-6).

0-6

array

Öffnungszeiten pro Wochentag (0=Sonntag, 1=Montag, … , 6=Samstag).

specialDays

array

Tage mit abweichenden Öffnungszeiten (z.B. Feiertage).

month

int

Monat (1-12).

day

int

Tag (1-31).

times

array

Öffnungszeiten für diesen Tag.

startTime

map

Startzeit mit hours und minutes.

endTime

map

Endzeit mit hours und minutes.

zipPrefix

array

Postleitzahl-Präfixe, die diesem Markt zugeordnet sind (für automatische Marktvorschläge basierend auf Kundenadresse).

allowedSubshop

array

Liste der Subshop-IDs, in denen dieser Markt verfügbar ist.


Aktionen


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


Beispiele

 

Alle Märkte auflisten

Beispiel, das alle Märkte mit Adresse und Öffnungsstatus anzeigt:

{{ foreach $store in $wsStores.loadAllStores() }} <div class="store"> <h3>{{= $store.name }}</h3> <p>{{= $store.street }}, {{= $store.zipCode }} {{= $store.city }}</p> {{ if $store.openNow }} <span class="open">Jetzt geöffnet</span> {{ else }} <span class="closed">Geschlossen</span> {{ /if }} </div> {{ /foreach }}

 

Markt auswählen (Session)

Beispiel, das eine Marktauswahl mit der Action SelectStore implementiert:

{{ var $action = $wsActions.create("SelectStore") }} {{ if $action.success }} <div class="alert success">Markt erfolgreich geändert.</div> {{ /if }} <form method="post" action="{{= $wsViews.current.url() }}"> <input type="hidden" name="wsact" value="{{= $action.id }}"> <input type="hidden" name="wscsrf" value="{{= $action.csrf }}"> <input type="hidden" name="wstarget" value="{{= $wsViews.current.url() }}"> {{ foreach $store in $wsStores.loadAllStores() }} <label> <input type="radio" name="storeId" value="{{= $store.id }}" {{ if $wsStores.selectedStore and $store.id == $wsStores.selectedStore.id }}checked{{ /if }}> {{= $store.name }} {{ if $store.openNow }}<span class="open">Jetzt geöffnet</span>{{ /if }} </label> {{ /foreach }} <button type="submit">Markt auswählen</button> </form>

 

Öffnungszeiten anzeigen

Beispiel, das die Öffnungszeiten eines Marktes formatiert ausgibt:

{{ var $days = [ {"id": "1", "name": "Montag"}, {"id": "2", "name": "Dienstag"}, {"id": "3", "name": "Mittwoch"}, {"id": "4", "name": "Donnerstag"}, {"id": "5", "name": "Freitag"}, {"id": "6", "name": "Samstag"}, {"id": "0", "name": "Sonntag"} ] }} {{ foreach $day in $days }} <div> <strong>{{= $day.name }}:</strong> {{ var $slots = $store.openingHours[$day.id] }} {{ if $slots | len > 0 }} {{ foreach $slot in $slots }} {{= $slot.startTime.hours }}:{{= $slot.startTime.minutes | pad(2, "0") }} - {{= $slot.endTime.hours }}:{{= $slot.endTime.minutes | pad(2, "0") }} {{ /foreach }} {{ else }} Geschlossen {{ /if }} </div> {{ /foreach }}

 

Click & Collect im Checkout

Beispiel, das nur Märkte mit Click & Collect für Abholung anzeigt:

{{ foreach $method in $wsConfig.shippingMethods }} {{ if $wsCheckout.selectedShippingMethod == $method.id and $method.type == "pickup" }} {{ var $storeAction = $wsActions.create("CheckoutStoreIdSelect") }} <form method="post" action="{{= $wsViews.current.url() }}"> <input type="hidden" name="wsact" value="{{= $storeAction.id }}"> <input type="hidden" name="wscsrf" value="{{= $storeAction.csrf }}"> <label>Abholmarkt auswählen:</label> <select name="storeId"> {{ foreach $store in $wsStores.loadAllStores() }} {{ if $store.clickAndCollect }} <option value="{{= $store.id }}" {{ if $wsCheckout.selectedStoreId == $store.id }}selected{{ /if }}> {{= $store.name }} – {{= $store.city }} </option> {{ /if }} {{ /foreach }} </select> <button type="submit">Markt auswählen</button> </form> {{ if $storeAction.error }} {{ foreach $error in $storeAction.errors }} <div class="alert danger"> {{ if $error.code == "reservationFailed" }} Produkt nicht verfügbar in diesem Markt: {{= $error.details.productId }} {{ else }} {{= $error.text | default($error.code) }} {{ /if }} </div> {{ /foreach }} {{ /if }} {{ /if }} {{ /foreach }}

 

Lagerbestand im Markt prüfen

Beispiel, das den Lagerbestand eines Produkts in einem bestimmten Markt prüft:

{{ var $store = $wsStores.selectedStore }} {{ if $store }} {{ var $inventory = $wsInventory.load($product.id, $store.storageId) }} {{ if $inventory.active }} <p>Verfügbar in {{= $store.name }}: {{= $inventory.amount }} Stück</p> {{ else }} <p>Nicht verfügbar in {{= $store.name }}</p> {{ /if }} {{ /if }}

 


Weiterführende Links