Herausforderung

Viele unserer Kunden nutzen Magento in Verbindung mit Akeneo als PIM. An sich eine bewährte und starke Kombinationen bei der es aber immer wieder zu Herausforderungen beim Bilderabgleich kam. Obwohl wir zum Speichern der Bilder die Magento-API verwendeten, kam es immer wieder vor, dass Bildrollen nicht sauber (auf allen Storeviews) angelegt wurden oder dass der Magento eigene Image-Resizer (catalog:images:resize) alte Bilder nicht ordentlich aus allen Cache-Verzeichnissen entfernt/überschrieben hat.

Irgendwann entstand dann folgende Idee: Wieso die Bilder überhaupt erst in Magento importieren? Wieso nicht einfach einen Proxy/Relay Service schreiben, welcher die Bilder direkt aus Akeneo beziehen kann?

Idee

Gewählte Technologien

Der für uns richtige Techstack wurde schnell gefunden:

Service-Implementierung

Zunächst wurde über den Laravel-Installer ein neues Projekt erstellt und die Dependencies mit Composer ins Projekt geholt. Anschließend wurde sowohl der Akeneo-Connector als auch Intervention/Image entsprechend konfiguriert.

Nun war das Grundsetup erledigt und es konnte an die Implementierung gehen.

Die Migrationsscripte und die dazugehörigen Models wurden mit Artisan generiert und mit Leben gefüllt. Für übersichtlichen und wartbaren Code wurde zudem von Anfang an auf das Repository-Service Pattern gesetzt. Somit kann der Service ohne viel Einarbeitung von jedem erweitert werden.

Der Service bietet zwei Commands:

Command Funktion
cccc:images:update Ruft alle Bilder von Magento ab und löscht Bilder, welche nicht mehr existieren.
cccc:images:optimize Generiert verschiedene größen und Formate vor, welche in der .env definiert sind.