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, nicht 1,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, ceil und floor gibt 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>.price in 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, nicht 0,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, floor nur 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.