Du planst eine neue Landingpage unter /kampagne oder willst einen JSON-Endpunkt für Live-Verfügbarkeiten bauen? Du öffnest das Backend, suchst in den Erlebniswelten – und stellst fest: Das geht so nicht. Die URL liefert 404, und die Daten, die du brauchst, sind nirgends verfügbar. Genau hier kommt der Shopware Controller ins Spiel – und wenn du dafür externe Unterstützung brauchst, hilft dir eine Shopware-Agentur oft schneller zur passenden Lösung. Aber bevor du loslegst: Brauchst du wirklich einen Controller? Oder reichen Shopware-Standard, Theme oder ein fertiges Plugin? In diesem Artikel erfährst du, wann ein Controller sinnvoll ist, welche Alternativen günstiger und schneller sind – und wie du die richtige Entscheidung für dein Projekt triffst.
Ein Shopware Controller ist technisch gesehen der Einstiegspunkt für Anfragen (HTTP-Requests) in deinem Shop. Praktisch bedeutet das: Eine URL (z. B. /kampagne) wird auf eine bestimmte Funktion im Code gemappt. Diese Funktion lädt die benötigten Daten (z. B. Produkte, Texte, Verfügbarkeiten) und liefert eine Antwort – entweder als HTML-Seite (die du im Browser siehst) oder als JSON-Daten (für JavaScript/AJAX).
Wichtig: Ein Controller orchestriert nur – er ruft andere Dienste auf, die die eigentliche Arbeit machen (Daten laden, berechnen, speichern). Er sollte selbst keine Geschäftslogik enthalten, sondern nur die Anfrage entgegennehmen, die richtigen Helfer beauftragen und das Ergebnis zurückgeben.
Oft lautet die Antwort: Nein. Shopware bietet mächtige Standardwerkzeuge, die viele Anforderungen ohne Code abdecken. Bevor du Custom Code in Auftrag gibst, prüfe diese Alternativen:
Du willst eine Kampagnenseite mit Bildern, Texten, Produkten und Call-to-Actions? Nutze die Erlebniswelten. Du baust Blöcke zusammen, pflegst Inhalte direkt im Backend – kein Code, keine Agentur nötig. Das CMS deckt 80 % aller „Ich brauche eine neue Seite"-Fälle ab.
Wann reicht CMS? Wenn du nur Layout, Bilder, Texte, statische Produkte zeigen willst. Wann nicht? Wenn du serverseitig Daten aus externen Systemen laden, komplexe Berechnungen machen oder spezielle URLs brauchst (die nicht über CMS-Kategorien abbildbar sind).
Willst du nur das Aussehen ändern (andere Sidebar, zusätzliches Element, andere Farben)? Reicht Theme-Anpassung. Du überschreibst Templates (Twig-Dateien) oder CSS – ohne Controller, ohne Logik.
Viele dynamische Anforderungen lassen sich über Shopware-Bordmittel konfigurieren: Preise je Kundengruppe, Versandkosten-Regeln, automatische E-Mails, zusätzliche Produktfelder. Prüfe, ob deine Anforderung über den Rule Builder oder Flows abbildbar ist – oft spart das Wochen Entwicklungszeit.
Brauchst du JSON-Daten für JavaScript (z. B. Live-Suche, Warenkorb-Status)? Shopware liefert viele Standard-Endpunkte (Produkte, Kategorien, Cart, Checkout). Diese sind optimiert, sicher und upgrade-stabil. Prüfe die offizielle Shopware Store-API-Dokumentation – oft ist dein Endpunkt schon da.
Vielleicht gibt es bereits eine Lösung im Shopware Store oder von Drittanbietern. Ein fertiges Plugin kostet oft 50–500 €, Custom-Entwicklung 2.000–10.000+ €. Lohnt sich die Recherche.
Controller wird relevant, wenn Standard-Mittel nicht ausreichen. Konkret:
/konfigurator, /antragsformular, /api/verfuegbarkeit).Stelle dir diese Fragen:
| Anforderung | Standard-Lösung | Controller nötig? | Typischer Aufwand |
|---|---|---|---|
| Nur Inhalt/Layout (Landingpage) | Erlebniswelten / Theme | Nein | Stunden bis 1-2 Tage |
| Neue URL mit statischen Daten | CMS-Kategorie oder Controller + Template | Ggf. ja | 2-5 Tage |
| Dynamische Daten (Context, externe Quellen) | Controller + Daten-Service | Ja | 1-2 Wochen |
| JSON für JavaScript (AJAX) | Store-API prüfen, sonst Controller | Ggf. ja | 2-5 Tage |
| Checkout-kritisch (Prozesse ändern) | Events nutzen, minimal-invasiv | Vorsicht, meist Events | 1-2 Wochen + QA |
Aus Projekt- und Entscheider:innen-Sicht ist die Frage nicht nur „technisch möglich?", sondern „wirtschaftlich sinnvoll?". Hier eine realistische Einordnung:
Wichtig: Einplanen solltest du Wartung, Updates und Tests. Custom Code ohne Tests ist riskant – plane 20–30 % Aufschlag für Qualitätssicherung, Deployment und Dokumentation ein.
Wenn du mit einer Agentur arbeitest, kläre vor Beauftragung:
Falls du dich für Custom-Entwicklung entscheidest, hier die Grundlagen – nicht zum Selberbauen (das macht dein Dev-Team), sondern zum Verständnis, was „unter der Haube" passiert:
Eine Route mappt eine URL (z. B. /kampagne) auf eine Methode im Controller. Diese Methode nimmt die Anfrage entgegen, ruft Services auf und liefert eine Antwort (HTML oder JSON).
Der Controller selbst lädt keine Daten – er beauftragt Services (z. B. „PageLoader", „DataService"). Diese holen Daten aus Shopware (Produkte, Kategorien), externen Systemen (ERP, API) oder berechnen Werte (Verfügbarkeit, Preise).
Für HTML-Seiten rendert der Controller ein Template (Twig-Datei) – das ist die „Maske", die Daten ins Layout einbaut. Für AJAX liefert er JSON – strukturierte Daten für JavaScript.
Der SalesChannelContext gibt dem Controller Infos über Sprache, Währung, Kunde, Kundengruppe, Sales Channel (DE/EN, B2B/B2C). So kannst du Inhalte personalisieren – z. B. unterschiedliche Preise je Kundengruppe oder Texte je Sprache. Wenn dein Setup mehrere Länder/Sprachversionen abbildet, lohnt auch ein Blick auf Shopware Sprachen als Grundlage für sauberes Routing und Content-Strukturen.
Typische Use Cases: Live-Suche, Warenkorb-Status, Verfügbarkeitscheck, Custom-Filter. Erste Regel: Prüfe, ob Store-API schon einen passenden Endpunkt hat – oft ist das der Fall und spart dir Custom-Code.
Wenn du einen eigenen Endpunkt brauchst, beachte:
Shopware 6 nutzt HTTP-Cache (Reverse Proxy), aber nicht alle Seiten sind cachebar. Was beeinflusst Caching?
?page=1 vs. ?page=2).Praktische Tipps: Statische Teile cachen (Header, Footer), personalisierte Teile per AJAX nachladen. Performance messen mit Tools wie Shopware Profiler (zeigt DB-Queries, Ladezeiten) oder Blackfire.
| Fehler | Wahrscheinliche Ursache | Was dein Dev-Team prüft |
|---|---|---|
| Route liefert 404 | Route nicht registriert, Cache, falsche URL | Routen-Config, Cache leeren, Debug-Tools |
| Seite lädt, aber leer | Template nicht gefunden, Daten fehlen | Template-Pfad, Controller-Logik, Fehler-Logs |
| Daten fehlen im Template | Service lädt nicht, Variable nicht übergeben | Controller/Service-Code, Debugging-Tools |
| Performance schlecht | Zu viele Queries, kein Cache, schwere Logik | Profiler, DB-Queries optimieren, Cache-Strategie |
| Aspekt | Shopware 5 | Shopware 6 |
|---|---|---|
| Routing | Konvention (module/controller/action) | Explizit (Attribute/Annotations) |
| Templates | .tpl (Smarty) | .html.twig (Twig) |
| Service-Inject | $this->get('service') | Constructor Injection (Dependency Injection) |
| Events | PreDispatch/PostDispatch | PageLoadedEvent, Custom Events |
Ein Shopware Controller ist der Einstiegspunkt für HTTP-Anfragen: Er nimmt Requests an, ruft Services auf und liefert HTML oder JSON. Technisch ist er mächtig – aber oft gar nicht nötig. Die wichtigste Erkenntnis: Shopware bietet Standard-Mittel – Erlebniswelten, Theme, Rule Builder, Store-API – die viele Anforderungen ohne Code abdecken. Erst wenn du eigene URLs, serverseitige Datenaufbereitung, komplexe Validierung oder spezielle AJAX-Endpunkte brauchst, lohnt sich Custom-Entwicklung.
Für Entscheider:innen: Kläre vor Beauftragung, ob Standard reicht, wer später pflegt, wie Tests/QA laufen. Custom Code ohne Tests ist riskant, und Wartung kostet. Rechne mit 2.000–10.000+ € je nach Komplexität – aber oft reicht CMS für 500–2.000 €. Wenn du Custom Code baust: Achte auf Security (CSRF, Auth, Rate-Limiting), Performance (Store-API, Caching) und Upgrade-Sicherheit (Tests, minimal-invasiv). So baust du Lösungen, die stabil laufen, wartbar sind und auch nach Updates funktionieren – ohne unnötigen Overhead.
Next Steps: Wenn du unsicher bist, ob dein Projekt einen Controller braucht: Sprich mit deiner Agentur oder einem Shopware-Entwickler. Ein 30-minütiges Beratungsgespräch spart oft Wochen Entwicklungszeit und Tausende Euro Budget. Und wenn Standard reicht: umso besser – dann kannst du selbst loslegen, ohne auf Code-Deployment zu warten. Falls du gerade vor größeren Änderungen oder einem Relaunch stehst, kann außerdem ein Shopware-Check helfen, Risiken und Quick Wins frühzeitig zu erkennen.