Vorwort
Wenn ich ein Handbuch wie dieses in der Hand halte, lautet meine erste Frage immer: Kann ich dem Buch folgen? Welche Voraussetzungen muss ich erfüllen, welche Erfahrungen muss ich haben, um mit dem Buch gut arbeiten zu können? Umgekehrt lautet die Frage beim Schreiben: Wer sind meine Leser?
Zu meinem Glück kenne ich meine Zielgruppe in diesem Fall sehr gut von vielen Shopware-Events, Schulungen oder Terminen: Sie arbeiten als Freelancer oder Angestellte für Agenturen, für Shopbetreiber oder für sich selbst. Einige von Ihnen werden Shopware sicher schon länger aus der Praxis kennen, andere stoßen gerade erst dazu und müssen das erste anspruchsvollere Projekt umsetzen. Oft möchte man als Shopbetreiber mit wenig Programmiererfahrung auch nur ein, zwei Kleinigkeiten für sich anpassen und sucht eine Schritt-für-Schritt-Anleitung zu den ersten Erfolgen.
Dieses Buch richtet sich gleichsam an Einsteiger und Fortgeschrittene – und das aus gutem Grund: Mit dem neuen Erweiterungssystem seit Shopware 5.2 gibt es bessere Wege und Herangehensweisen, um Shopware den eigenen Wünschen entsprechend zu erweitern. Auch für erfahrene Entwickler hat sich also vieles geändert.
Außerdem bietet dieses Buch eine zusammenhängende Übersicht von Ratschlägen und bewährten Vorgehensweisen, die es in dieser Form bisher schlicht noch nicht gab. Auch das macht es für Neueinsteiger ebenso interessant wie für alte Hasen. Denn gerade in Teams ist es wichtig, dass es einheitliche Vorgehensweisen gibt – dass die Entwickler also Abkürzungen und Fallstricke gleichermaßen kennen und »dieselbe Sprache« sprechen.
Häufig haben wir als Entwickler auch eine besondere Vorliebe für Frontend-Techniken (JavaScript, CSS, Less, jQuery) oder Backend-Techniken (PHP, MySQL). Auch hier kann das Buch blinde Flecken beseitigen und Ihnen einen Überblick über das Vorgehen in Bereichen geben, die Sie bisher eher gemieden haben.
Darüber hinaus habe ich festgestellt, dass wir als Entwickler dazu neigen, die gesamte Software eher aus Quellcode-Sicht als aus Anwendersicht zu betrachten. Daher stelle ich in einem Abschnitt die grundlegenden Funktionalitäten von Shopware vor und gehe kurz darauf ein, in welchen Bereichen Sie als Entwickler mit Sicherheit immer wieder tätig sein werden und wo im Buch Sie weitere Informationen dazu finden.
Für wen ist dieses Buch geschrieben?
Jetzt stellt sich noch die Frage, welche Anforderungen und Erfahrungen Sie mitbringen sollten, um diesem Buch gut folgen zu können. Zunächst einmal ist dieses Buch keine Einführung in PHP, JavaScript, CSS oder MySQL. Etwas Erfahrung in diesen oder verwandten Sprachen sollten Sie also auf jeden Fall haben.
Dagegen sind z. B. Kapitel 2, »Mit Shopware loslegen«, Kapitel 3, »Schnelleinstieg: Shopware kennenlernen«, oder Abschnitt 4.1, »Einstieg in Templates und Themes«, besonders für Einsteiger relevant und werden auch für Nichttechniker interessant sein.
Im Rahmen dieses Buches zeige ich, wie ein einfacher Webserver aufgesetzt wird und Dateien via FTP oder SSH dorthin übertragen werden. Auch hier empfehle ich etwas Vorerfahrung, wenngleich viele Details in diesem Buch besprochen werden.
Kapitelüberblick
In der Einleitung in Kapitel 1 stelle ich Shopware und das Ökosystem um Shopware kurz vor. Sie erfahren Wissenswertes zur Geschichte der Software und über ihre Anwendungsszenarien.
In Kapitel 2, »Mit Shopware loslegen«, werden Systemvoraussetzungen ebenso besprochen wie verschiedene Möglichkeiten, Shopware lokal in Betrieb zu nehmen. Ich stelle verschiedene Installationsmöglichkeiten vor, sowohl für reguläre Release-Pakete als auch für die Entwicklerversion aus GIT. Auch die Einrichtung der Arbeitsumgebung wird im Detail geschildert.
In Kapitel 3, »Schnelleinstieg: Shopware kennenlernen«, stelle ich die Funktionen von Shopware vor. Sie erfahren, wie Sie einen Shopware-Shop initial einrichten und was Sie bei der Grundkonfiguration für einen Produktivbetrieb beachten müssen. Hier lernen Sie auch die Performance-Konfiguration, das Anlegen von Artikeln und Marketing-Möglichkeiten kennen und erhalten die wichtigsten Hinweise zum Shop-Frontend.
Mit Kapitel 4, »Shopware-Templating«, beginnt die Entwicklungsarbeit: Neben der einfachen Konfiguration von Themes über das Shopware-Backend stelle ich zunächst einfache Gestaltungsmöglichkeiten mit CSS und Smarty vor. Danach lernen Sie anhand eines Praxisbeispiels die Arbeit mit Less und kleinen JavaScript-Erweiterungen kennen. Dabei lege ich besonderes Augenmerk darauf, dass die Anpassungen auf jedem Gerätetyp wie gewünscht aussehen.
In Kapitel 5, »Einstieg in die Plugin-Entwicklung«, wird das zuvor entwickelte Theme in ein Plugin überführt, und ich zeige Ihnen ausführlich grundlegende Konzepte wie das Eventsystem. Anschauliche Beispiele helfen Ihnen dabei, das Gelernte in der Praxis nachzuvollziehen.
Da der Umgang mit der Datenbank in der Praxis viele Möglichkeiten bietet, aber auch Fallstricke aufweist, ist diesem Thema Kapitel 6, »Arbeiten mit der Datenbank«, gewidmet: Hier lernen Sie, wie Sie in Shopware effektiv mit der Datenbank arbeiten, wann die Nutzung des ORM-Systems empfehlenswert ist und wann Sie besser darauf verzichten sollten.
Eine besonders beliebte Funktion von Shopware sind die Einkaufswelten: Auch technische Laien können über Einkaufswelten leicht ansprechende Shopseiten gestalten und richtige Geschichten erzählen. Die Erweiterung dieser Einkaufswelten wird in Kapitel 7, »Eigene Einkaufswelten-Elemente«, besprochen.
Kapitel 8, »Storefront-Komponenten«, widmet sich eben jenen Komponenten. Diese bestimmen nicht nur, welche Artikel auf den jeweiligen Shopseiten zu sehen sind: Auch ihre Reihenfolge und Daten werden darüber ausgesteuert. In dem Kapitel stelle ich die Storefront-Komponenten detailliert vor und bespreche eigene Listings ebenso wie eigene Filtermöglichkeiten und die Ausgabe zusätzlicher Hinweise an bestimmten Artikeln.
Mit dem Attributsystem, das Sie in Kapitel 9, »Das Shopware-Attributsystem«, kennenlernen, können Sie zu Shopware-Artikeln zusätzliche Informationen speichern und diese an vielen Stellen im Shop berücksichtigen. Sie lernen hier aus Entwicklersicht, wie Sie mit Attributen umgehen.
Kapitel 10, »Backend-Module schreiben«, behandelt die Administrationsoberfläche von Shopware: In einem Beispiel wird sie um ein neues Modul erweitert. Ebenso wird ein bestehendes Modul um weitere Elemente ergänzt. Auch das Erstellen eigener Widgets ist Thema dieses Kapitels.
Wie Sie die (REST-)API nutzen und mit ihr arbeiten, lernen Sie in Kapitel 11, »Shopware-API«. Verschiedene Praxisbeispiele zeigen, wie etwa Artikel in Shopware angelegt, gelöscht oder aktualisiert werden können, ohne dass Sie Vollzugriff auf das System benötigen. Ich entwickele mit Ihnen auch einen eigenen API-Endpunkt.
Gerade für erfahrene Entwickler sind die Kommandozeilenbefehle interessant, die Thema von Kapitel 12, »Shopware-Kommandos«, sind. Anhand eines einfachen Beispiels erweitern Sie Shopware um einen neuen Befehl, der direkt aus der Shell oder mithilfe eines Cronjobs ausgeführt werden kann. Auch das Arbeiten mit den Standardkommandos kommt natürlich ausführlich zur Sprache.
Die Konfiguration des Elasticsearch-Suchservers sowie das Schreiben von Elasticsearch-kompatiblen Plugins behandele ich in Kapitel 13, »Elasticsearch einsetzen«.
Benutzereingaben im Shop-Frontend zu verarbeiten ist oft lästig und immer sicherheitskritisch: Kapitel 14, »Arbeiten mit Formularen«, demonstriert, wie Sie sich das Verarbeiten von Benutzereingaben mit den Symfony-Form-Komponenten etwas erleichtern.
In Kapitel 15, »Plugin-Entwicklung im Alltag«, lernen Sie viele kleine Bausteine kennen, die im Entwickleralltag von großer Bedeutung sind.
Kapitel 16, »Shopware hinter den Kulissen«, beleuchtet etwas umfassendere Themen wie das Caching, die SEO-Engine oder das Arbeiten mit Elasticsearch. Auch die häufig gewünschte Übersicht über den Shopware-Bootstrapping-Vorgang finden Sie hier.
Wenn Sie an Shopware mitarbeiten oder einfach nur eine kleine Verbesserung einreichen möchten, finden Sie in Kapitel 17, »An Shopware mitarbeiten«, wertvolle Tipps. Hier erfahren Sie nicht nur, wie und wo Fehlerreports eingereicht werden: Auch das Erzeugen von Pull-Requests (also das Vorschlagen von Quellcode-Änderungen), das Übersetzen von Shopware mit Crowdin oder das Hochladen und Verkaufen von Plugins über den Community Store werden...