Blog
Erste Schritte – ein Magento-Mensch auf dem Weg zu Shopware 6. Heute: Shopware Store Plugins mit Composer installieren?
Erwähnte ich schon, dass das alles sehr neu für mich ist? Also alles. Wirklich alles an Shopware? So auch:
Composer
Zu den neuen Dingen gehört für mich das magische Wörtchen „Composer“. Ja. Ich weiß, was Composer ist und macht und „composer update“ und „composer install“ hab ich auch schonmal in eine Kommandozeile getippt, aber diese ominöse Composer.json erweitern – da hörte es bis dato bei mir auf.
Also vielleicht erstmal 2 Sätze zu Composer (Wissende können die Bulletpointliste überspringen)
- Composer ist eine Software und muss installiert werden.
- Mit Composer verwaltet man ein Projekt (in diesem Fall Shopware)
- Für ein Projekt braucht man Repositories (also eine Sammlung von Paketen, die heruntergeladen werden sollen)
- Beschrieben – oder besser verwaltet – wird das Projekt (oder besser: die ganzen Pakete) in einer Json-Datei, der composer.json (und der composer.lock).
- Im Grunde arbeitet Composer die Anweisung ab: „lade Paket A in Projekt meinProjekt“, es ist im Grunde ein Einkaufsliste. Packe aus der Gemüseabteilung KOHL in KW43Liste. Oder wie heißen Eure Listen?!? #strengguck.
Das Ziel oder der Effekt – im Gegensatz zum guten alten Magento:
die ganzen Plugins und Pakete, die benötigt werden, um ein Projekt aufzubauen, liegen nicht länger im Git, sondern werden bei jeder Installation des Projekts (auch „Deployment“ genannt) aus dem Internet (da ist es wieder, DAS Internet, das irgendwie solitär auftritt) oder dem Cache geladen.
Zugegebenermaßen macht mich das nervös.
(Aber es gibt Nervositätsgegenmaßnahmen. Die beschreibe ich im nächsten Blog.)
Aber im Grunde passiert das, wenn man das Shopware-Projekt dann auf dem Staging- oder Liveserver hochspielt. Da liegt dann eine composer.lock rum, die geschrieben wurde auf Basis dessen, was in der composer.json steht und der man dann mit „composer install“ quasi das Recht gibt, sich alles „aus dem Internet“ zusammenzupuzzeln, was es so braucht.
Zum Beispiel den Shopware Core – wer hätte das gedacht.
In der Standard composer.json von Shopware ist alles drin, was man braucht, um einen Shop mit einem Frontend zusammenzupuzzeln. Wenn man das aber alles nicht braucht, kann man die Komponenten dort auch weglassen oder austauschen. Aber soweit bin ich noch nicht.
Ich stand von einem völlig blöden Problem:
Wie krieg ich eigentlich die Plugins aus dem Shopware Shop in mein Projekt?
Die erste Maßnahme war erstmal: googlen, um dann festzustellen, ich bin nicht die einzige mit dieser Frage. Die Antworten haben mir aber alle nicht gefallen.
Einer installierte jedes Plugin sowohl in der Live- als auch in der Staging, als auch in der Testumgebung. Echt jetzt? Das fühlt sich pelzig an.
Ein anderer automatisierte sein Deployment und kopierte alles aus einem bestimmten Folder auch auf den Liveserver. Das fühlte sich auch nicht richtig an.
Ein anderer verwendete Git-Submodule. Aber da gab es mir zu viele MACHDASBLOSSNICHT Aufschreie.
Ja und daher frug ich einen kundigen Composermenschen (Dank an dieser Stelle an Herrn @mautz_et_tong), der mir sagte, es muss irgendwo Packages geben, die man runter laden kann. Das gibts für jedes Projekt.
Das hatte ich schon in der Hinterhand, aber ich hatte keine Ahnung, was ich mit dieser Hinterhandkarte anfangen soll. Nun weiß ich es.
Die Lösung heißt: FriendsOfShopware
FriendsOfShopware hat erstmal nix mit der Shopware AG zu tun, ist also unabhängig davon (auch wenn natürlich im Grunde schon von Shopware abhängig ist).
Sie sagen über sich selbst:
„Wir, die Freunde von Shopware, verstehen uns als leidenschaftliche Entwickler. Für die Community haben wir uns zusammengeschlossen, um kostenlose und gut getestete Shopware-Plugins unter Berücksichtigung moderner Programmierstandards zu entwickeln.“
Sie entwickeln jedoch nicht nur Plugins, sondern sammeln alle Plugins aus dem Shopware Store ein und stellen sie dann denjenigen, die sie gerne automatisiert einsammeln möchten, zur Verfügung. Geladen oder abgeglichen wird stündlich, so dass die Pluginliste aktuell zu nennen sein dürfte.
Wie kommen die Packages jetzt in alle meine Instanzen?
Shopware-Installation
Als erstes braucht man also eine Shopware-Installation. Also fertig. Lokal zum Beispiel. Aber mit Live-URL installiert (das ist so ein vHost-Gedönse, das jetzt zu weit führen würde).
Aber ausgegangen wird nun davon, dass Shopware installiert wurde und es eine Kommandozeile gibt, auf der du Befehle ausführen kannst.
Shopware Account
Als erstes braucht man einen Shopware-Account. Den bekommt man hier:
https://www.shopware.com/de/
bzw. hier, da man sich registrieren muss.
https://account.shopware.com/register
Wenn man dann irgendwann eingeloggt sind, klickt man auf „Shopbetreiberbereich“ und dort auf „Shops“ und kann dann einen neuen Shop hinzufügen.
Das muss man dann noch verifizieren, aber egal. Urgendwann ist der Shop dann gelistet.
Einloggen bei FriendsOfShopware
Dann besucht man die FriendsOfShopare-Packages Seite:
https://packages.friendsofshopware.com/und loggt sich dort mit seinen Shopware-Login Daten ein.
Wenn man gar nicht der Inhaber des Shops ist, kann der Shopbetreiber einem die Rechte an der Domain geben. Quasi Sub-Rechte, dann wird der Shop auch im eigenen Shopware-Konto gelistet! Man braucht also NICHT die Zugangsdaten des Shopbetreibers.
In diesem Fall (dem Agentur- oder Freelancer-Fall) wird einem eine Liste an Unternehmen angeboten, die einen verifiziert haben.
Man wählt also ein Unternehmen aus und dann eine Shop-URL.
Die recht bescheiden designte Seite wartet nun mit einem gelborangefarbenen Button auf, auf dem „Setup Repository“ geschrieben steht.
Da dann mal bitte drauf klicken.
Den Code kopieren und einfügen
Dann öffnet sich ein Fenster, in dem der JSON-Code für die composer.json generiert wird.
Das wird kopiert (weil man das mit JSON in Fenstern halt so macht).
Und das Schnipselchen wird dann in die composer.json kopiert, die sich im Root-Verzeichnis der Shopware-Installation befindet. Da wo auch die .env Datei liegt.
Diese composer.json also öffnen und nach „repositories“ suchen – da gehört das hin. Und nach dem absolvierten Kopiervergnügen sollte es dann so aussehen:
So. Damit weiß der Composer, dass es „im Internet“ einen Ort gibt, an dem sich eine Suche lohnt.
Dem Composer sagen, was es suchen soll
Hierfür muss man selbst erstmal suchen. Nehmen wir mal an, wir suchen – PayPal. Dann geben wir in das Suchfeld auf der packages.friendsofshopware.com Seite das Wort „paypal“ ein und bekommen eine Liste an Packages.
https://packages.friendsofshopware.com/account?term=paypal
So auch: PayPal.
Auf das gewünschte Package geklickt (das fühlt sich alles etwas an wie ein Kochrezept), kommt man zur Detailseite des Packages. Und findet dort das, was man braucht – zum Kopieren:
composer require store.shopware.com/swagpaypal
Nun wechselt man vom Editor in sein Terminal (CLI, Kommandozeile, keine Ahnung, wie das auf Windowsrechnern heißt)
und kopiert dort das Kopierte ein – und zwar auch im Root-Folder der Shopware-Installation.
production (develop) $ composer require store.shopware.com/swagpaypal
Dann passiert so allerlei Gerödelgerödel im Terminal – das Plugin wird installiert.
Es passieren nun dreierlei Dinge.
1. Das Plugin wird „aus dem Internet“ geladen
2. Die composer.json wird ergänzt
3. Die composer.lock wird neu geschrieben
Wo ist das Plugin?
Hat’s geklappt?
Berechtigte Frage.
Wenn sich nun im Verzeichnis /vendor ein Verzeichnis befindet mit dem sinnvollen Namen „store.shopware.com“ dann schonmal Fäuste ballen und wenn sich dann auch noch in diesem Verzeichnis eines befindet, das da „swagpaypal“ heißt, dann Fäuste recken und „JA“ rufen.
Außerdem sollte sich die composer.json verändert haben. Dort findet sich nun der Eintrag:
"store.shopware.com/swagpaypal": "^1.10"
im Abschnitt „require“
Außerdem wurde die composer.lock entsprechend geändert.
Und das war’s erstmal auf der „Erstinstallationsseite“.
Update oder Install?
Wenn man mit Composer anfängt und mit Kundigen darüber spricht, passiert das, was bei Kindern passiert, wenn sie sich dem Herd nähern, dann rufen „die Großen“:
NICHT DIE PLATTE ANFASSEN.
Und wenn man sich Composer nähert, sagen einem „die Großen“:
NIEMALS „composer update“ IM LIVESHOP.
„composer update“ generiert die composer.lock, die ausgeführt wird, wenn man „composer install“ tippt.
Update aktualisiert. Install installiert. Klingt relativ logisch.
So. Ich hoffe, das hat irgendwem geholfen, der sich auch gefragt hat, wie man diese Plugins sinnvoll auf allen Installationen installiert ohne sie ständig installieren zu müssen.
Neueste Kommentare