Zum Hauptinhalt springen
Hat ein Kunde Produkte abonniert, will er sie auch wieder im Griff haben: nachsehen, wann die nächste Lieferung kommt, die Menge ändern, ein Abo für den Sommer pausieren oder ganz beenden. Dafür gibt es eine eigene Seite im Shop, und die Tags dieser Seite bauen sie auf. Alles dreht sich dabei um eine Schleife. SUBS-Data läuft über die Abos des angemeldeten Kunden, und innerhalb dieser Schleife liefern alle weiteren Tags die Angaben zum jeweiligen Abo.

Die Schleife über die Abos

SUBS-Data kann drei Dinge: als Einzel-Tag die Anzahl der Abos ausgeben, als Klammerung prüfen ob es überhaupt welche gibt, und als Schleife über sie laufen.
Alle übrigen Tags dieser Seite sind außerhalb der SUBS-Data-Schleife ungültige Tags. Das gilt auch innerhalb der Klammerung {SUBS-Data}, denn erst die Schleife legt fest, um welches Abo es geht. Die Ausnahme sind die beiden Tags für den Knopf, mit dem neue Abos angestoßen werden.
SUBS-Data gibt es nicht nur auf der Verwaltungsseite. Die Schleife arbeitet auf allen Templates, solange ein Käufer angemeldet ist. Auf einer Übersichtsseite lässt sich damit beispielsweise die Zahl der laufenden Abos anzeigen.

Das abonnierte Produkt

Produktname, Preis und Währungscode sind am Abo gespeichert und stammen aus dem Zeitpunkt der letzten Bestellung oder der letzten Änderung des Abos. Sie sind damit eine Momentaufnahme und nicht der heutige Stand des Produkts. Soll der aktuelle Preis erscheinen, lesen Sie das Produkt über seinen Index neu ein.
SUBS-Data_Index ist die Kennung, mit der das Shopsystem dieses eine Abo anspricht. Sie steckt in allen Feldnamen innerhalb der Schleife und sorgt dafür, dass eine Formularseite mit mehreren Abos eindeutig bleibt. SUBS-Data_SubShop() nimmt wahlweise Subshop-Kennungen als Parameter entgegen und greift dann als Klammerung nur für diese. Ohne Parameter gibt es die Kennung aus, in der das Produkt abonniert wurde.

Das Lieferintervall

Auch hier folgen die Codes nicht der Länge der Zeiträume. Die Woche hat den Code 3 und steht hinter dem Jahr. Werten Sie _unit_code deshalb nie mit einem Größenvergleich aus.

Das Intervall ändern lassen

Soll der Kunde das Intervall umstellen, bauen Sie innerhalb der Schleife dieselbe Auswahl wie auf der Produktseite auf. SUBS-CycleSelection_input liefert dort automatisch den auf dieses Abo bezogenen Feldnamen, und SUBS-CycleSelection_data_selected vergleicht gegen das gespeicherte Intervall statt gegen eine Formulareingabe.
Referenz: Die Zyklusauswahl auf der Seite SUBS- (Abo abschließen)

Zeitpunkte und Zähler

Alle vier Zeitangaben kommen als Unix-Zeitstempel und werden über die Datums-Tags in eine lesbare Form gebracht.
Bei SUBS-Data_nextorder_unixtimestamp ist nur der Datumsanteil belastbar. Die Uhrzeit darin sagt nichts darüber aus, wann an diesem Tag tatsächlich bestellt wird. Alle fünf Tags greifen als Klammerung dann, wenn ein Wert vorliegt. Bei einem frisch angelegten Abo sind der Zeitpunkt der letzten Bestellung und der Zähler noch leer. Klammern Sie die Ausgabe deshalb, statt eine 0 oder den 1.1.1970 anzuzeigen. Referenz: DC- (Datum und Uhrzeit)

Der Zustand des Abos

SUBS-Data_state_code gibt den technischen Code aus, vier Klammerungen fragen ihn ab.
Die vier Zustände schließen sich gegenseitig aus. SUBS-Data_state_isactive greift ausschließlich beim Code 0 und damit gerade nicht bei einem neuen Abo, obwohl dieses ebenfalls läuft. Wollen Sie “läuft” im Sinne von “nicht pausiert” ausdrücken, nehmen Sie die negative Klammerung von SUBS-Data_state_ispaused.
Die Zustände 1 und 2 betreffen den Übergang vom Abschluss zur ersten Lieferung. Ein Abo ist zunächst neu, und sobald die erste Bestellung angestoßen wurde, gilt es als angestoßen. Danach wechselt es auf aktiv. SUBS-Data_state_code ist ausschließlich ein Einzel-Tag. Für Fallunterscheidungen nehmen Sie die vier Klammerungen.

Pausieren, fortsetzen und löschen

Die Aktionen laufen über je einen Knopf. SUBS-Data_Buttonname liefert den Namen, die drei Buttonvalue-Tags den Wert.
Pausieren und Fortsetzen sind nur im jeweils passenden Zustand verfügbar. SUBS-Data_Buttonvalue_pause liefert bei einem bereits pausierten Abo nichts und greift dort auch als Klammerung nicht, SUBS-Data_Buttonvalue_resume umgekehrt nur bei einem pausierten Abo. Klammern Sie die beiden Knöpfe deshalb mit ihrem eigenen Tag, dann erscheint jeweils nur der sinnvolle. Löschen ist immer verfügbar. Die Klammerung von SUBS-Data_Buttonvalue_delete greift in jedem Zustand und dient eher der Einheitlichkeit des Templates als einer Fallunterscheidung.
Das Löschen geschieht ohne Rückfrage des Shopsystems. Bauen Sie eine Sicherheitsabfrage in das Template ein, denn ein versehentlich gelöschtes Abo lässt sich vom Kunden nicht wiederherstellen.

Die Rückmeldung nach einer Aktion

Nach dem Absenden sagen fünf Tags je Abo, was mit ihm geschehen ist.
Der Code 0 bedeutet “nicht betroffen”. Er wird nie ausgegeben, denn in diesem Fall greift bereits SUBS-Data_affected nicht. Die vier Codes sind damit: 0 nicht betroffen, 1 geändert, 2 pausiert, 3 fortgesetzt.
Für ein gelöschtes Abo gibt es keine Rückmeldung. Es steht nach der Aktion nicht mehr in der Liste, und die Schleife läuft nicht darüber. Eine Erfolgsmeldung zum Löschen gehört deshalb außerhalb der Schleife, nicht hinein.
Die Rückmeldung gilt für den Aufruf unmittelbar nach dem Absenden. Lädt der Kunde die Seite neu, ist sie weg.

Zahlungsart, Bankverbindung und Lieferadresse je Abo

Diese drei Angaben sind am einzelnen Abo gespeichert. Alle drei Tags geben den Wert als Einzel-Tag aus und greifen als Klammerung, wenn er gesetzt ist. Mit einem Parameter prüfen sie stattdessen auf Gleichheit.
Beim Index 0 greift die Klammerung nicht. Das ist hier kein fehlender Wert, sondern eine Aussage: 0 bedeutet bei SUBS-Data_DelivAddress(), dass keine abweichende Lieferadresse hinterlegt ist, und bei SUBS-Data_BankIndex(), dass keine Bankverbindung am Abo hängt. Fangen Sie diesen Fall mit der negativen Klammerung ab.
Das ist ein Fehler in der Vorlage. Hier steht der berichtigte Vergleich.
Der Bankindex ist nur bei Lastschrift von Belang. Bei anderen Zahlungsarten steht dort in aller Regel die 0.

Die Auswahl zum Ändern aufbauen

Soll der Kunde diese drei Angaben umstellen, nehmen Sie dieselben _input und _selected-Tags wie auf der Produktseite. Innerhalb der Schleife hängen die _input-Tags die Abo-Kennung an den Feldnamen an, sodass auch eine Seite mit mehreren Abos eindeutig bleibt.
Die _selected-Tags vergleichen gegen die zuletzt abgeschickte Formulareingabe, nicht gegen den am Abo gespeicherten Wert. Für den gespeicherten Stand nehmen Sie SUBS-Data_PaymentCode(), SUBS-Data_BankIndex() und SUBS-Data_DelivAddress() mit Parameter. Die Ausnahme ist SUBS-CycleSelection_data_selected, das innerhalb der Schleife von sich aus gegen das gespeicherte Intervall prüft.

Neue Abos anstoßen

Hat der Kunde ein Abo frisch abgeschlossen, steht es zunächst als neu in der Liste, ohne dass schon bestellt wurde. Ein eigener Knopf stößt die erste Bestellung an.
Beide Tags gehören außerhalb der SUBS-Data-Schleife, denn sie beziehen sich auf alle neuen Abos zugleich und nicht auf ein einzelnes. Sie stehen damit auch als einzige Tags dieser Seite außerhalb der Schleife zur Verfügung. Die Klammerung greift, solange mindestens ein Abo im Zustand “neu und aktiv” ist, also Code 1. Ein bereits angestoßenes Abo mit Code 2 zählt nicht mehr dazu.

Die Tags im Überblick

Die Tabelle gibt die Tag-Maske des Shopsystems wieder. Mehrere Tags sind darin als Einzel-Tag zulässig, geben dort aber nichts aus. Das betrifft alle reinen Klammerungen, also die Einheiten, die Zustände und die Tags der Familie SUBS-Data_affected. Alle Tags außer SUBS-Buttonname und SUBS-Buttonvalue_triggernewsubscriptions gehören in die SUBS-Data-Schleife. Außerhalb sind sie ungültige Tags.

Verwandte Themen