Shopware 6: Erster Überblick und Installation

β€’
β€’
Shopware 6: Erster Überblick und Installation

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Γ€ngigkeitPrΓΌfen mitInstallieren z.B. mit
Composercomposer -vbrew install composer
Gitgit –versionbrew 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.

NΓΌtzliche Links