Zum Hauptinhalt springen
Im Template lässt sich rechnen, und zwar mit vier Familien von Tags, die sich in dem unterscheiden, womit sie rechnen. Von den ersten drei Familien gibt es je drei Stück, angesprochen über die Ziffer im Namen: DC-Counter1 bis DC-Counter3. Mehr sind es nicht, und sie gelten für die gesamte Seite. Wer drei Zähler gleichzeitig braucht und einen vierten benötigt, muss einen davon zurücksetzen und wiederverwenden.

Der Zähler

DC-Counter1…3 zählt und gibt seinen Stand aus. Mehr kann er nicht, und genau darum ist er die richtige Wahl für die häufigste Aufgabe: Nummerieren, was eine Schleife durchläuft.
Setzen Sie den Zähler vor jeder Schleife zurück. Sonst zählt er von dem Stand weiter, den eine frühere Schleife auf derselben Seite hinterlassen hat.

Auf bestimmte Positionen reagieren

Als Bereichs-Tag prüft DC-Counter1…3 gegen eine kommagetrennte Liste von Zählerständen.
Für regelmäßige Muster ist die Aufzählung unpraktisch, weil die Liste mit der Produktzahl wächst. Nehmen Sie dafür DC-Int1…3_mod(), siehe unten.

Zwei Listen getrennt zählen

Soll jede Liste bei 1 beginnen, gehört das Zurücksetzen an den Anfang jeder Liste.

Die Ganzzahl-Variable

DC-Int1…3 rechnet mit ganzen Zahlen. Alle Zusätze verändern den gespeicherten Wert, ausgegeben wird er allein durch DC-Int1…3. Alle Zusätze mit Argument sind Tag-in-Tag-fähig, der Ausgangswert kann also aus einem anderen Tag kommen.
Eine Division durch 0 bleibt wirkungslos: Der Wert behält seinen bisherigen Stand, es gibt weder Fehlermeldung noch Abbruch. Prüfen Sie den Divisor deshalb selbst, wenn er aus einem Tag kommt.

Jede zweite Zeile

Das ist der klassische Einsatz von _mod(): Der Rest der Division durch 2 ist bei geraden Positionen 0 und bei ungeraden 1.
Genauso legen Sie ein Raster an: _mod(3) ergibt 0, 1, 2 und wiederholt sich, das Ergebnis 0 markiert also jede dritte Position und damit den Anfang einer neuen Zeile. Materialien: Modulo-Rechnung

Auf Werte klammern

Wie der Zähler prüft auch DC-Int1…3 als Bereichs-Tag gegen eine kommagetrennte Liste.

Die kaufmännische Rechnung

DC-CommercialCalc1…3 rechnet mit Dezimalzahlen und gibt das Ergebnis in der Preisformatierung aus, die in der Shopkonfiguration shop.config eingestellt ist. Gerechnet wird intern mit voller Genauigkeit, gerundet wird erst bei der Ausgabe.
_percent(), _VAT(), _VATadd() und _VATsub() unterscheiden sich in einem Punkt, der leicht übersehen wird. _VATadd() rechnet vom Nettowert aufwärts, _VAT() und _VATsub() rechnen aus einem Bruttowert heraus. Bei 100,00 € und 19 Prozent ergibt _VATadd(19) also 119,00 €, _VAT(19) dagegen 15,97 € und _VATsub(19) 84,03 €.

Preise als Ausgangswert

Als Argument sind alle Einzel-Tags zulässig, die einen von WEBSALE formatierten Preis ausgeben. Die Preisformatierung wird dabei automatisch abgeschaltet, bevor der Wert übernommen wird.
Feste Werte im Argument schreiben Sie ohne Tausendertrennzeichen und mit einem Punkt als Dezimaltrenner. Eine Währungsangabe darf nicht mitkommen, sonst ist das Ergebnis unbrauchbar.

Ein Rabatt in zwei Schritten

Zwei der drei Rechner lassen sich kombinieren: einer hält den Ausgangswert, der andere berechnet den abzuziehenden Betrag.

Mehr Nachkommastellen

DC-CommercialCalc1…3 rundet auf zwei Nachkommastellen. Brauchen Sie mehr, hängen Sie _prec und die gewünschte Stellenzahl an.
Die Ausgabe mit _prec verwendet nicht die Preisformatierung des Shops, sondern das technische Format: kein Tausendertrennzeichen, Punkt als Dezimaltrenner. Für Beträge, die der Käufer lesen soll, ist deshalb das Tag ohne Zusatz die richtige Wahl. _prec ist für Werte gedacht, die weiterverarbeitet werden, beispielsweise in einer Schnittstelle.
Zulässig sind 1 bis 10 Nachkommastellen. Eine höhere Angabe macht das Tag ungültig.

Einzelrechnungen ohne Zwischenspeicher

Für eine Rechnung, die nur an einer Stelle gebraucht wird, gibt es vier Tags, die beide Werte im Argument entgegennehmen und das Ergebnis sofort ausgeben. Ein Rechner wird dafür nicht belegt.
Beide Argumente sind Tag-in-Tag-fähig, und _prec funktioniert genauso wie bei DC-CommercialCalc1…3.
Ist der zweite Wert bei DC-Div() gleich 0, gibt das Tag nichts aus. An der Stelle bleibt die Seite dann einfach leer.

Die Tags im Überblick

Zulässig sind alle Tags auf allen Templates. Die Zusätze der Familien DC-Int und DC-CommercialCalc werden mit einem Unterstrich angehängt: ~DC-Int1_add(3)~.

Verwandte Themen