Zum Hauptinhalt springen
Online-Preise gelten nur eine begrenzte Zeit. Mit dem Beispiel auf dieser Seite zeigen Sie dem Käufer im Warenkorb, wie lange seine Preise noch gelten. Der Countdown richtet sich nach dem Produkt mit der kürzesten Restgültigkeit, denn sobald dessen Preis abläuft, erneuert der Shop die Preise aller Online-Preis-Produkte im Warenkorb. Wegweiser: Online-Preise Online Preis Timer

Voraussetzungen

Das Beispiel braucht jQuery. Im Vorlagenshop kommt jQuery aus der WEBSALE Systembibliothek, die zusammen mit ihrer Design-Komponente im head-Bereich des Templates stehen muss.
Das Beispiel nutzt von der Systembibliothek ausschließlich jQuery. Wenn Ihr Shop jQuery bereits auf anderem Weg einbindet, brauchen Sie die beiden Dateien hier nicht. Für neue Shops ist ohnehin der Weg über die WS-Module vorgesehen, nicht über die Systembibliothek. Materialien: WEBSALE JavaScript-Bibliothek

Das Beispiel

Der erste Teil läuft im Shop und ermittelt die kürzeste Restzeit, der zweite läuft im Browser und zählt herunter.

Wie der Shopteil arbeitet

~DC-Int1~ dient als Zwischenspeicher für die bisher kleinste gefundene Restzeit. Der Ablauf: ~BASKET-PR-OnlinePriceTimeLeft~ liefert die Restzeit in Sekunden. Ist der Preis bereits abgelaufen, gibt es 0 zurück. Das Tag gibt es nur als Einzel-Tag und nur innerhalb einer Position, die tatsächlich einen Online-Preis hat. Außerhalb von {BASKET-PR-OnlinePrice} ist es ungültig.
Die Schleife hat eine Lücke: Ein Produkt, dessen Preis bereits abgelaufen ist, liefert 0 und wird von {!DC-Int1(0)} wie der Anfangszustand behandelt. Es gewinnt den Vergleich also nie. Enthält der Warenkorb ein abgelaufenes und ein noch gültiges Online-Preis-Produkt, zeigt der Countdown die Restzeit des gültigen an, obwohl die Preise bereits veraltet sind.Prüfen Sie diesen Fall zusätzlich mit {BASKET-PR-OnlinePriceTimedOut} und zeigen Sie dann einen Hinweis statt des Countdowns.
Ob der Warenkorb überhaupt ein Online-Preis-Produkt enthält, beantwortet {BASKET-HasOnlinePriceProduct} in einem Schritt. Für eine reine Ja-Nein-Frage brauchen Sie die Schleife oben nicht. Referenz: BASKET-PR-Data · BASKET-PR-OnlinePrice · BASKET-PR-OnlinePriceTimeLeft · BASKET-PR-OnlinePriceTimedOut · DC-CompareDigitLT() · DC-Int1…3()

Wann die Preise wirklich erneuert werden

Der Countdown zeigt an, wann die Preise ablaufen. Er erneuert sie nicht. Erneuert werden sie serverseitig beim nächsten Aufruf des Warenkorbs: Der Shop prüft, ob mindestens ein Online-Preis-Produkt abgelaufen ist, und holt in diesem Fall für alle Online-Preis-Produkte im Warenkorb neue Preise. Deshalb genügt es, die kürzeste Restzeit anzuzeigen.
Läuft der Countdown auf 0:00, passiert von selbst nichts. Der Käufer sieht weiterhin die alten Preise, bis er den Warenkorb neu lädt oder eine Aktion auslöst.Wenn Sie wollen, dass sich die Seite bei 0:00 selbst neu lädt, ergänzen Sie das im if (left < 0)-Zweig, beispielsweise mit location.reload().
Wie lange ein Online-Preis gilt, stellen Sie in der shop.config ein. Die Restzeit, die ~BASKET-PR-OnlinePriceTimeLeft~ ausgibt, ergibt sich aus dem Zeitpunkt des letzten Abrufs plus dieser Dauer. Das Listing trägt den HTML5-Doctype zusammen mit charset=iso-8859-1. Übernehmen Sie für einen neuen Shop den Zeichensatz Ihrer übrigen Templates, üblicherweise UTF-8.