Produkt Konfigurator
Formeln
Formeln sind das mächtigste Werkzeug des Konfigurators. Mit ihnen berechnen Sie Preise, Maße, Gewicht, eine Artikelnummer oder Anzeigewerte dynamisch aus den Eingaben Ihrer Kunden – etwa „Preis = Fläche × Quadratmeterpreis" oder „ab 100 Stück 10 % Rabatt".
Dieses Kapitel erklärt Formeln von Grund auf. Sie brauchen keine Programmierkenntnisse – nur ein wenig logisches Denken. Alle Beispiele können Sie direkt übernehmen.
Premium-Funktion: Die „Kalkulation für Experten" (alle Formel-Eingaben) ist Teil der Premium-Version. In anderen Versionen sind die Formelfelder sichtbar, aber deaktiviert – siehe Versionen.
Was ist eine Formel?
Eine Formel ist ein kleiner Rechenausdruck, der ein Ergebnis liefert. Im einfachsten Fall ist das reine Mathematik:
price + 10
Diese Formel bedeutet: Nehmen Sie den Produktpreis und addieren Sie 10. Anstelle fester Zahlen können Sie Variablen verwenden – Platzhalter, die zur Laufzeit mit den echten Werten der Kundeneingaben gefüllt werden.
Technischer Hintergrund: Formeln nutzen die Template-Sprache Twig in einer abgesicherten Umgebung. Es sind nur die hier dokumentierten Variablen, Funktionen und Filter erlaubt – das hält Formeln sicher.
Wo gebe ich Formeln ein?
Es gibt zwei Orte:
1. Konfigurator-Berechnungen (Reiter Berechnung des Konfigurators). Jede Berechnung hat einen Schalter und ein Formelfeld:
| Berechnung | Ergebnis | Variablen-Typ |
|---|---|---|
| Preis | Endgültiger Stückpreis | Zahl |
| Breite / Höhe / Länge / Gewicht | Neuer Maß-/Gewichtswert | Zahl |
| Artikelnummer | Generierte Artikelnummer | Text |
2. Feld-Berechnungen (Reiter Berechnung eines einzelnen Feldes):
| Berechnung | Ergebnis | Variablen-Typ |
|---|---|---|
| Standardwert | Vorbelegung des Feldes | Zahl/Text |
| Ergebnis-Formel (nur Feldtyp Zwischenergebnis) | Live angezeigter Wert | Text |
Verfügbare Variablen
In jeder Formel stehen Ihnen diese Variablen zur Verfügung:
| Variable | Bedeutung |
|---|---|
price |
Basis-Stückpreis des Produkts |
width, height, length, weight |
Maße und Gewicht des Produkts |
fields.<bezeichner> |
Der aktuelle Wert eines Feldes, z. B. fields.menge |
options.<bezeichner>.price |
Aufpreis der gewählten Option dieses Feldes |
options.<bezeichner>.width |
Breite der gewählten Option (analog height, length, weight) |
options.<bezeichner>.value |
Technischer Wert der gewählten Option |
<bezeichner>ist der technische Bezeichner des Feldes (siehe Elemente und Feld Typen).- Bei Mehrfachauswahl bezieht sich
options.<bezeichner>auf die erste gewählte Option. - Felder ohne Eingabe liefern einen leeren Wert – nutze dafür den Filter
default(siehe unten).
Rechnen: Operatoren
| Operator | Bedeutung | Beispiel |
|---|---|---|
+ - * / |
Grundrechenarten | price * 2 |
% |
Rest (Modulo) | fields.menge % 2 |
** |
Potenz | width ** 2 |
~ |
Texte verketten | 'NR-' ~ fields.farbe |
== != > < >= <= |
Vergleiche | fields.menge >= 100 |
and or not |
Logische Verknüpfung | width > 0 and height > 0 |
Wichtig: Zum Verbinden von Texten nutzen Sie
~, nicht+. Beim Rechnen verwenden Sie als Dezimaltrennzeichen den Punkt (1.5, nicht1,5).
Funktionen & Filter
Funktionen (Aufruf mit Klammern):
| Funktion | Bedeutung | Beispiel |
|---|---|---|
max(a, b, …) |
größter Wert | max(price, 25) |
min(a, b, …) |
kleinster Wert | min(price, 500) |
round(wert, stellen) |
runden | round(price, 2) |
Filter (angewendet mit |):
| Filter | Bedeutung | Beispiel |
|---|---|---|
round |
runden | price|round(2) |
ceil |
aufrunden | (price)|ceil |
floor |
abrunden | (price)|floor |
abs |
Betrag (positiver Wert) | price|abs |
number_format |
formatieren | price|number_format(2) |
default |
Ersatzwert bei leer | fields.menge|default(1) |
length |
Anzahl/Länge | fields.zeilen|length |
abs,ceilundfloorgibt es nur als Filter (wert|abs), nicht als Funktion.
Bedingungen und Zwischenvariablen
Sie können Fallunterscheidungen und eigene Zwischenwerte nutzen:
{% if fields.menge >= 100 %}
price * 0.9
{% elseif fields.menge >= 50 %}
price * 0.95
{% else %}
price
{% endif %}
{% set flaeche = width * height %}
price + flaeche * 0.5
Erlaubt sind die Blöcke {% if %}, {% elseif %}, {% else %}, {% set %} und {% for %}.
Wichtig: So wirkt die Preis-Formel
Die Preis-Formel ersetzt den kompletten Stückpreis – sie ist kein Aufschlag.
- Ist die Preis-Berechnung aktiv, bestimmt allein die Formel den Preis. Options-Aufpreise werden nicht automatisch addiert – wenn Sie sie brauchen, nehmen Sie sie über
options.<bezeichner>.pricein die Formel auf. - Ist die Preis-Berechnung aus, gilt: Produktpreis + Summe der gewählten Options-Aufpreise.
Mehr zum Zusammenspiel mit Warenkorb und Anzeige unter Preis und Warenkorb.
Beispiele
Fester Aufschlag
price + 15
Aufpreis einer Option einbeziehen
price + options.material.price
Flächenpreis (Breite × Höhe)
Maße aus Kundeneingaben in Zentimetern, Preis pro Quadratmeter = 40 €:
price + (fields.breite * fields.hoehe / 10000) * 40
Mengenstaffel (Rabatt ab Stückzahl)
{% if fields.menge >= 100 %}
price * 0.85
{% elseif fields.menge >= 50 %}
price * 0.9
{% else %}
price
{% endif %}
Mindestpreis sicherstellen
max(price + options.zubehoer.price, 19.90)
Preis pro Stück × Menge
(price + options.gravur.price) * fields.menge|default(1)
Aufpreis nach Materialwahl
{% if fields.material == 'eiche' %}
price + 80
{% elseif fields.material == 'nuss' %}
price + 120
{% else %}
price
{% endif %}
Sauber auf zwei Nachkommastellen runden
round(price + (fields.breite * fields.hoehe / 10000) * 40, 2)
Maß berechnen (Breiten-Formel)
Endbreite = Grundbreite + Zuschlag aus Eingabe:
width + fields.zusatzbreite|default(0)
Gewicht berechnen (Gewicht-Formel)
weight + options.material.weight
Artikelnummer generieren (Text-Formel)
'SCHILD-' ~ fields.farbe ~ '-' ~ fields.breite ~ 'x' ~ fields.hoehe
Ergebnis z. B.: SCHILD-gold-30x20
Zwischenergebnis anzeigen (Ergebnis-Formel)
Für ein Feld vom Typ Zwischenergebnis:
'Fläche: ' ~ (fields.breite * fields.hoehe / 10000)|round(2) ~ ' m²'
Zeigt dem Kunden live z. B.: Fläche: 0,06 m²
Standardwert vorbelegen (Standardwert-Formel)
width
Prüfen & Fehlerverhalten
- Formel prüfen: Beim Bearbeiten können Sie eine Formel direkt im Backend auf gültige Syntax prüfen lassen. Unbekannte Variablen oder nicht erlaubte Konstrukte werden gemeldet.
- Robustheit im Shop: Führt eine Formel zur Laufzeit nicht zu einem sinnvollen Ergebnis (z. B. wegen einer Division durch Null), fällt der Konfigurator automatisch auf den Basiswert zurück (Basispreis bzw. Grundmaß). Ihr Shop zeigt also nie einen Fehler an, sondern im Zweifel den unveränderten Preis.
Tipps & Stolperfallen
- Texte verketten mit
~, rechnen mit+ - * /.'A' + 'B'funktioniert nicht wie erwartet. - Dezimalpunkt verwenden:
0.5, nicht0,5. - Leere Felder absichern:
fields.menge|default(1)verhindert Rechnen mit einem leeren Wert. - Einheiten beachten: Rechnen Sie Längen bewusst um (z. B. cm → m² durch Teilen durch 10000), damit Ihr Quadratmeterpreis stimmt.
abs,ceil,floornur als Filter schreiben:wert|ceil.- Klein anfangen: Testen Sie eine einfache Formel, prüfen Sie das Ergebnis im Shop, und erweitern Sie sie dann Schritt für Schritt.