Seit Januar 2020 ist Shopware 6.1 als Stable Version verfΓΌgbar. Die neue Version bringt dabei nicht nur neue Features mit, sondern stellt eine grundlegende Γberarbeitung und Modernisierung des Systems dar. Dazu gehΓΆrt unter anderem ein brandneuer Tech-Stack mit Twig, Sass, Bootstrap, Vue.js, Node.js und Webpack. Dem Backend wurde ebenfalls ein komplett neues Interface verpasst, was deutlich benutzer- und entwicklerfreundlicher ist.
Eine Γbersicht der wichtigsten neuen Features fasst Shopware selbst am besten zusammen: https://www.shopware.com/de/produkte/shopware-6/
Was die neue Version fΓΌr Entwickler konkret bedeutet und wie man am besten mit Shopware 6 durchstartet, mΓΆchten wir hier Schritt fΓΌr Schritt zusammenfassen, indem wir unsere Erkenntnisse zu Installation, Theme-Entwicklung und Plugin-Entwicklung teilen.
Was ist neu?
Wie schon erwΓ€hnt ist einer der wohl deutlichsten Unterschiede zu Shopware 5 der neue Tech-Stack, der in der Frontend-Entwicklung zum Einsatz kommt.
WΓ€hrend Shopware 5 auf die Templating-Engine Smarty und den CSS-Preprocessor LESS setzt, nutzt Shopware 6 Twig und Sass fΓΌr seine Templates und Stylesheets. Die Umstellung ist dabei reine GewΓΆhnungssache, da sich die Sprachen hauptsΓ€chlich syntaktisch unterscheiden und kaum neue Konzepte erlernt werden mΓΌssen.
Konzeptionell gilt es bei Shopware 6, sich vom βBareβ- und βResponsiveβ-Theme zu verabschieden. Es gibt ab sofort nur noch das βStorefrontβ-Theme. Das ist vergleichbar mit dem βResponsiveβ-Theme, jedoch um einiges schlanker, was Anpassungen an ein eigenes Design erleichtert. Durch neue KonfigurationsmΓΆglichkeiten hat man nun die MΓΆglichkeit, prΓ€zise zu steuern, ob und in welcher Reihenfolge man Templates, Stylesheets oder JavaScripts von ΓΌbergeordneten Themes erben mΓΆchte.
Dazu kommt, dass das neue Shopware βStorefrontβ-Standardtheme mithilfe des weitverbreiteten Frontend-Frameworks Bootstrap aufgebaut ist. Das kommt vor allem Entwicklern entgegen, die bisher noch nicht mit Shopware gearbeitet haben. Aber auch fΓΌr Entwickler, die mit Bootstrap nicht vertraut sind, wird durch eine ausfΓΌhrliche Dokumentation und vereinheitlichte Konzepte das Arbeiten erleichtert.
Neue MΓΆglichkeiten gibt es auch bei den Erlebniswelten, ehemals bekannt als Einkaufswelten. Diese kΓΆnnen nun auch benutzt werden, um Seiten mit dynamischen Inhalten wie Kategorie-Listings zu gestalten. ZukΓΌnftig sollen auch einzelne Produktseiten als Erlebniswelten gestaltet werden kΓΆnnen.
Wer etwas tiefer unter die Haube blickt, wird feststellen, dass der Node Package Manager (npm) und fΓΌr die Kompilierung von Themes der Modul-Bundler Webpack zum Einsatz kommen. AuΓerdem beschleunigt der neue βHot Modeβ das Erstellen und Testen von Stylesheets mithilfe des Hot Module Replacements (HMR).
Was geht (noch) nicht?
Da Shopware 6 noch in den Kinderschuhen steckt, gibt es einige Features und Funktionen, die man bislang noch vergeblich sucht. Dazu gehΓΆrt unter anderem die in Shopware 5 enthaltene Blog-Funktion. Auch eine HΓ€nderregistrierung fΓΌr B2B-Kunden gibt es noch nicht, ebenso vermisst man die Erstellung von weiteren Backend-Benutzern.
Γberraschend ist, dass es noch keine UnterstΓΌtzung fΓΌr das fundamentale Feature von Sales bzw. Streichpreisen gibt. Auch in der Roadmap ist nirgends davon die Rede. Es bleibt aber abzuwarten, ob das Feature zum endgΓΌltigen Release nicht doch noch auftaucht.
Bis dahin muss man sich bei allen noch fehlenden Features vorerst mit Plugins behelfen, die die Funktionen ergΓ€nzen.
Verzeichnisstruktur
Die Verzeichnisstruktur hat sind im Gegensatz zu Shopware 5 deutlich verΓ€ndert.
Eigene Themes bzw. Plugins liegen ab sofort im Ordner /custom/plugins. Der Shopware Core liegt nun gekapselt und als Composer-Dependency im Ordner /vendor/platform. Das Standard-βStorefrontβ-Theme findet man unter /vendor/platform/src/Storefront/Resources.
Stylesheets liegen, ausgehend vom Plugin-Root, im Ordner app/storefront/src/scss. Die Verzeichnisstruktur der Stylesheets folgt dabei der 7-1-Konvention. JavaScripts sind unter app/storefront/src zu finden, Templates unter views/storefront.
Hier ein Γberblick ΓΌber die wichtigstens Verzeichnisse:
.βββ bin/| βββ console| β βββββββββββββββββββββββββββββββ| β PHP-Kommandozeilen-Interface β| βββββββββββββββββββββββββββββββββββ custom/| βββ plugins/| βββ [Prefix][ThemeName]/| |β βββββββββββββββββββββββ| |β Eigenes Theme/Plugin β| |ββββββββββββββββββββββββ| βββ src/| | βββ Resources/| | | βββ app/| | | | βββ storefront/| | | | βββ build/| | | | | βββ webpack.config.js| | | | | β βββββββββββββββββββββββββββββββββββββββββββββββ| | | | | β ZusΓ€tzliche Webpack-Konfiguration fΓΌr Plugin β| | | | | ββββββββββββββββββββββββββββββββββββββββββββββββ| | | | βββ dist/| | | | | βββ storefront/| | | | | βββ js/| | | | | βββ [prefix]-[theme-name].js| | | | | β ββββββββββββββββββββββββββ| | | | | β Kompiliertes JavaScript β| | | | | βββββββββββββββββββββββββββ| | | | βββ src/| | | | βββ storefront/| | | | βββ asset/| | | | | β βββββββββββββββββββββββββ| | | | | β Speicherort fΓΌr Medien β| | | | | ββββββββββββββββββββββββββ| | | | βββ scss/| | | | | βββ base.scss| | | | | β ββββββββββββββββββββββββββββββββββββββββ| | | | | β Einstiegspunkt fΓΌr eigene Stylesheets β| | | | | βββββββββββββββββββββββββββββββββββββββββ| | | | βββ main.js| | | | β ββββββββββββββββββββββββββββββββββββββββ| | | | β Einstiegspunkt fΓΌr eigenes JavaScript β| | | | βββββββββββββββββββββββββββββββββββββββββ| | | βββ config/| | | | βββ config.xml| | | | β βββββββββββββββββββββββββββββββββββββββββββββββ| | | | β ZusΓ€tzliche Backend-Konfiguration fΓΌr Plugin β| | | | ββββββββββββββββββββββββββββββββββββββββββββββββ| | | βββ views/| | | | βββ storefront/| | | | β ββββββββββββββββββββββββ| | | | β Eigene Twig-Templates β| | | | βββββββββββββββββββββββββ| | | βββ theme.json| | | β ββββββββββββββββββββββ| | | β Theme-Konfiguration β| | | βββββββββββββββββββββββ| | βββ [Prefix][ThemeName].php| | β βββββββββββββββββββββββββββββββββ| | β Einstiegspunkt fΓΌr eigenes PHP β| | ββββββββββββββββββββββββββββββββββ| βββ composer.json| β βββββββββββββββββββββββ| β Plugin-Konfiguration β| βββββββββββββββββββββββββββ vendor/βββ shopware/βββ platform/βββ src/βββ Storefront/|β βββββββββββββββββ|β Standard-Theme β|βββββββββββββββββββββ Resources/βββ app/| βββ storefront/| βββ build/| | β ββββββββββββββββββββββββ| | β Webpack-Konfiguration β| | βββββββββββββββββββββββββ| βββ dist/| | β βββββββββββββββββββββββββββββββββ| | β Kompilierte Scripts und Assets β| | ββββββββββββββββββββββββββββββββββ| βββ src/| |β ββββββββββββββββββββββββββββββββββββββββββββββ| |β Hauptverzeichnis fΓΌr Quelldateien (JS/SCSS) β| |βββββββββββββββββββββββββββββββββββββββββββββββ| βββ scss/| | βββ base.scss| | β ββββββββββββββββββββββ| | β Einstiegspunkt SCSS β| | βββββββββββββββββββββββ| βββ main.js| β ββββββββββββββββββββ| β JS-Einstiegspunkt β| ββββββββββββββββββββββββ views/| |β βββββββββββββββββ| |β Twig-Templates β| |ββββββββββββββββββ| βββ storefront/| βββ base.html.twig| β ββββββββββββββββββββββ| β Einstiegspunkt Twig β| ββββββββββββββββββββββββββ theme.jsonβ βββββββββββββββββββββββ Theme-Konfiguration ββββββββββββββββββββββββ
Installation und Setup von Shopware 6
Nachdem wir nun die grundlegenden Unterschiede zu Shopware 5 betrachtet und uns einen ersten Γberblick ΓΌber Shopware 6 verschafft haben, kΓΆnnen wir (fast) mit der Installation starten. Wir betrachten dabei die Installation ΓΌber die Kommandozeile auf einem Unix-basierten Betriebssystem (Linux, Mac, etc.). Es gibt auch die MΓΆglichkeit, den visuellen Installer zu nutzen, wovon wir aber abraten, da man in der Konsole bessere Kontrolle hat und Ursachenforschung bei eventuellen Problemen betreiben kann.
Bevor Shopware 6 installiert werden kann, muss allerdings zunΓ€chst sichergestellt werden, dass die folgenden AbhΓ€ngigkeiten installiert sind:
| AbhΓ€ngigkeit | PrΓΌfen mit | Installieren z.B. mit |
| Composer | composer -v | brew install composer |
| Git | git –version | brew install git |
AuΓerdem muss sichergestellt werden, dass ein lokaler Webserver mit PHP 7 und MySQL installiert ist. Dazu empfiehlt sich die Verwendung von MAMP, womit sich virtuelle Hosts ganz einfach erstellen und verwalten lassen. MAMP bringt dabei auch PHP und MySQL mit.
PHP 7 und MySQL mΓΌssen auf der Kommandozeile verfΓΌgbar sein. Das kann man mit php -v bzw. mysql -v prΓΌfen.
Nachdem alle Voraussetzungen erfΓΌllt sind, kann folgender Befehl ausgefΓΌhrt werden, um das aktuelle Repository von Shopware 6 lokal zu klonen:
git clone https://github.com/shopware/development MeinShopware6Projekt
Nachdem das Repository geklont wurde, lΓ€sst man den lokalen Webserver auf das Verzeichnis /public zeigen.
Nun geht man in das neue Verzeichnis: cd MeinShopware6Projekt
Dort fΓΌhrt man nun das Setup-Skript mit folgendem Befehl aus: bin/setup
Das Skript fragt nach diversen Daten wie Datenbank-Host, -Nutzer, und -Passwort. Nachdem diese eingegeben sind, fΓΌhrt das Skript automatisch alle notwendigen Schritte aus, um Shopware 6 zu installieren.
Nachdem das Setup abgeschlossen ist, ist das Backend unter /admin mit dem Benutzernamen admin und dem Passwort shopware erreichbar.
Auch fΓΌr das Frontend hat das Setup einen Testzugang generiert. Eingeloggt werden kann sich unter /account/login mit dem Benutzernamen test@example.com und dem Passwort shopware.
Fazit
Shopware 6 bringt neben grundlegenden Modernisierungen zahlreiche Neuerungen mit sich, die die Entwicklung erleichtern. Gerade Shopware-Neulingen sollte der Einstieg dank zeitgemΓ€Γer Technologien wie Twig, Sass, NPM und Bootstrap nun deutlich leichter fallen. Auch dem Endnutzer werden neben Zukunftssicherheit und deutlich verbesserter User Experience im Backend viele neue MΓΆglichkeiten geboten.
Wir haben uns in diesem Artikel die Unterschiede zu Shopware 5 angesehen und einen ersten Γberblick ΓΌber Shopware 6 verschafft und dabei gelernt, wie wir Shopware 6 ΓΌber die Kommandozeile lokal installieren kΓΆnnen.
