RcDynamicPrice: Längenbasierte Preisberechnung für Meterware

Ein Kunde will 3,5 Meter Kabel bestellen. Er öffnet die Produktseite — und sieht einen Meterpreis von 12,50 EUR. Was kostet seine Wunschlänge? Shopware lässt ihn mit dem Taschenrechner allein. RcDynamicPrice ergänzt ein Eingabefeld für die gewünschte Länge und berechnet den Preis live auf der Produktseite. Kein Rätselraten, kein Seitenreload.

Warum Meterware ein eigenes Plugin braucht

Shopware rechnet in Stückpreisen. Ein Produkt kostet X Euro, der Kunde legt es in den Warenkorb, fertig. Bei Meterware passt dieses Modell nicht. Der Preis hängt von der bestellten Länge ab, und die kennt nur der Kunde. Varianten wären ein Workaround — eine Variante pro Länge — aber bei Millimeter-Genauigkeit hätte man Tausende Varianten pro Produkt. Das ist weder wartbar noch performant.

RcDynamicPrice löst das anders: Der reguläre Produktpreis ist der Meterpreis. Der Kunde gibt seine Wunschlänge in Millimetern ein, und das Plugin berechnet daraus den Endpreis. Die Formel ist simpel: Meterpreis mal Eingabe in Millimetern geteilt durch 1000. Bei 12,50 EUR pro Meter und 3500 mm ergibt das 43,75 EUR. Dieser Preis wird live auf der Produktseite angezeigt und geht exakt so in den Warenkorb.

So funktioniert das Plugin

Auf der Produktdetailseite erscheint ein Eingabefeld für die gewünschte Länge in Millimetern. Sobald der Kunde einen Wert eingibt, wird der Preis direkt im Browser berechnet — ohne Seitenreload, ohne Serveranfrage. Optional zeigt ein Popup-Hinweis über dem Feld, was der Kunde eingeben soll.

Die Eingabe wird validiert: Minimal- und Maximalwerte verhindern unsinnige Bestellungen. Wer will schon 50 Meter Kabel liefern, wenn die Rolle nur 30 Meter hat? Die Grenzen definierst du in der Plugin-Konfiguration. Fehlermeldungen erscheinen direkt am Feld, bevor der Kunde das Produkt in den Warenkorb legen kann.

Zusätzlich gibt es die Option, auf volle Meter aufzurunden. Das ist sinnvoll, wenn du nur ganze Meter vom Rollenmaterial abschneiden kannst — aus 3500 mm werden dann 4000 mm, und der Preis berechnet sich entsprechend auf 50,00 EUR.

Im Warenkorb landen verschiedene Längen desselben Produkts als separate Positionen. Bestellt ein Kunde einmal 2000 mm und einmal 5000 mm vom gleichen Kabel, sieht er zwei Positionen. Das hält die Zuordnung klar und verhindert Verwirrung bei der Kommissionierung.

Installation

Installation per Composer in der DDEV-Umgebung:

ddev composer require ruhrcoder/rc-dynamic-price
ddev exec bin/console plugin:refresh
ddev exec bin/console plugin:install --activate RcDynamicPrice
ddev exec bin/console cache:clear

Konfiguration

Die globalen Einstellungen findest du unter Erweiterungen > Meine Erweiterungen > RcDynamicPrice > Konfiguration:

EinstellungBeschreibungStandard
Popup-Hinweis aktivZeigt einen Hinweistext über dem EingabefeldJa
Popup-TextDer angezeigte HinweistextBitte geben Sie die Länge in mm ein
Minimum (mm)Minimale Eingabelänge100
Maximum (mm)Maximale Eingabelänge50000
Auf Meter rundenEingabe auf volle Meter aufrundenNein

Am Produkt selbst stellst du zwei Dinge ein: Der reguläre Produktpreis wird zum Meterpreis, und über ein Custom Field am Produkt schaltest du die dynamische Preisberechnung frei. Nur Produkte mit aktiviertem Custom Field zeigen das Längeneingabefeld — alle anderen Produkte verhalten sich wie gewohnt.

Praxisbeispiel: Kabel nach Maß

Ein Elektro-Shop verkauft Kabel als Meterware. Der Meterpreis für ein NYM-J 3×1,5 liegt bei 1,89 EUR. Ein Elektriker braucht 17,5 Meter für eine Renovierung. Er gibt 17500 mm ein, sieht sofort 33,08 EUR als Preis und legt das Kabel in den Warenkorb. Später merkt er, dass er noch 3 Meter für den Keller braucht — das wird eine zweite Position im Warenkorb mit 5,67 EUR.

Das gleiche Prinzip funktioniert für Stoffe und Textilien, Profile und Leisten, Dichtungen und Schläuche — alles, was einen Meterpreis hat und in individuellen Längen bestellt wird. Auch Rollenware wie Folien oder Vliesstoffe lässt sich so abbilden.

Zusammenspiel mit RcCustomFields

Beide Plugins können gleichzeitig am selben Produkt aktiv sein. Ein typischer Fall: Der Kunde bestellt ein Kabel in Wunschlänge über RcDynamicPrice und gibt zusätzlich einen Beschriftungstext für die Steckerbeschriftung über RcCustomFields ein. Die Eingabefelder erscheinen untereinander auf der Produktseite, und alle Werte landen gemeinsam im Warenkorb.

Die Reihenfolge ist dabei klar definiert: Zuerst der Preisrechner von RcDynamicPrice, darunter die Custom Fields. So sieht der Kunde seinen berechneten Preis, bevor er die zusätzlichen Angaben ausfüllt.

Update

Updates laufen über Composer:

ddev composer update ruhrcoder/rc-dynamic-price
ddev exec bin/console plugin:update RcDynamicPrice
ddev exec bin/console cache:clear

Die gezeigten Code-Beispiele dienen zur Veranschaulichung. Nutzung auf eigene Verantwortung. Mehr dazu