Magento 2.4.0

Magento 2.4.0 wurde am 28.07.2020 veröffentlicht. Es war das erste Minor-Release seit 2.3.0 am 28.11.2018.

Die Hauptpunkte, die nach außen sichtbar sind, beschreibt die offizielle Ankündigung. Eine vollständige Liste der Änderungen findet man in den Release Notes für Open Source und Commerce. Wer Videos lieber hat, kann sich dieses fast 9 Minuten lange Erklärungsvideo von Mark Shust ansehen.

Hier gehe ich auf wichtige Neuigkeiten und Änderungen ein.

Neue Features

Store Pickup

Store Pickup (oder auch „Click und Collect“) hält als Erweiterung von MSI Einzug in die neue Version. HändlerInnen sollen für jede „Source“ (Lager) definieren können, ob das Abholen der Ware dort möglich ist. KundInnen können im Checkout die gewünschte Filiale auswählen. Multi-Shipping ist vorerst für den In-Store Pickup nicht geplant.

PWA Studio 100% für B2C, wichtigste Teile für B2B

PWA Studio soll in Magento 2.4.0 das Frontend für B2C-KundInnen komplett abdecken. Für B2B werden die „wichtigsten“ Teile implementiert sein. Außerdem wird man PWA-Erweiterungen über den Marketplace beziehen können. Die Qualität und Performance gegenüber Magento 2.3 wird verbessert.

Hochperformante GraphQL-Storefront

Was genau darunter zu verstehen ist, ist aktuell noch nicht klar, doch das schreibt das Community Engineering Team im Dezember 2019:

Today, we are happy to announce that we are ready to share our R&D results and deliver a more highly-performant GraphQL storefront to the community. In addition, we are introducing the new concept of the Storefront API to the platform. In early 2020, we are going to open these code repositories to the Magento community so that you can join these community projects! We are wrapping up preparations on infrastructure and tooling to support these projects so stay tuned for updates from the Magento team!

Forums-Post „Getting Ready for Magento 2.4 release

Neue B2B-Features

Der B2B-Teil der Commerce Edition wird um diese Funktionen erweitert:

  • Workflow für Quote- und Order-Approvals im Frontend, unter Berücksichtigung von Grenzwerten (Manual 1, Manual 2)
  • Transferieren von Quotes zwischen Company-Usern
  • Verwaltung von Adressen auf der Kunden-Ebene (statt User-Ebene)
  • Usability-Verbesserungen im Backend
  • Ein B2B-Referenz-Theme

Alle Neuerungen: B2B Release Notes 1.2.0

Login als Kunde

Unter dem Feature-Namen „Seller-Assisted Shopping“ oder „Login as Customer“ können sich Admin-User nun als Frontend-User einloggen, um Hilfe beim Einkauf zu leisten oder Probleme zu reproduzieren.

Für Privacy und Sicherheit ist gesorgt: das User-Passwort müssen die Admins dafür nicht kennen. Außerdem werden alle Aktionen in diesem „Ghost-Modus“ protokolliert, damit im Zweifelsfall nachvollzogen werden kann, ob ein Admin (und welcher) am Werk war oder die KundInnen selbst. Zudem kann im Backend konfiguriert werden, welche Admin-User auf die Funktion zugreifen dürfen und welche nicht.

Die Media-Gallery im Backend wurde überarbeitet und ist nun besser durchsuchbar und verwendbar.

Payment Request API („Web Payments“)

Hierbei handelt es sich um einen neuen Browser-Standard, de von Chrome und co. entweder schon implementiert ist oder noch implementiert wird.

„Web Payments“ erlauben es KundInnen, über Browser-natie Features schneller und einfacher zu bestellen und zu bezahlen. Zum Beispiel können Zahlungsdaten einmalig im Browser hinterlegt und in verschiedenen Webshops wieder verwendet werden. Das ist besonders für UserInnen auf Mobilgeräten wichtig.

Dieses Feature wird in Magento integriert. Ein Video von Google zeigt, wie diese Integration aussieht:

Zeitbeschränkung für Admin Accounts

Als Beitrag aus der Community hat man nun die Möglichkeit, Backend-Accounts zeitlich zu beschränken. Nach der angegebenen Zeit wird der Account automatisch deaktiviert. Die Userin oder der User werden ausgeloggt, falls sie gerade eingeloggt sind. Man kann den Zeitpunkt bis auf Minuten-Ebene genau angeben.

Das Feature ist vor allem nützlich, wenn man Dritten wie Extension-Herstellern zeitweiligen Zugriff geben möchte.

PHPStan: statische Code-Analyse

Das Tool PHPStan für statische Code-Analyse überprüft nun den Code von Magento auf potentielle Bugs.

PHPUnit: Update auf PHPUnit 9

Dank des tollen Einsatzes der Magento-Community setzt Magento 2.4 auf PHPUnit 9 (bisher: PHPUnit 6). Den Aufwand, der dahinter steckt, beschreibt Lukasz Bajsarowicz im Blog.

Unangekündigte Features

Auslagerung von Bild-Resizing an Dritt-Anbieter

Es ist noch nicht als offizielles Feature angekündigt, aber ein Commit im Entwicklungszweig von Magento 2.4 deutet daraufhin: in Zukunft ist es vielleicht möglich, Bilder über Drittanbieter wie Fastly zu resizen.

In früheren Versionen gibt es zwei Möglichkeiten, was die unterschiedlichen Bildgrößen (Thumbnails, Vorschaubilder, Bilder für mobile Versionen …) angeht:

  1. Man kann diese Bilder über einen Kommandozeilen-Befehl vorab generieren. Das verkompliziert allerdings die Build/Deployment-Pipeline ein wenig.
  2. Die Bilder werden von Magento beim Seitenaufruf on-the-fly generiert, falls sie noch nicht existieren. Das erhöht die CPU-Last am Server.

Drittanbieter wie Fastly sind hoch-effizient, wenn es um das Bilder-Resizing angeht. Außerdem bieten sie oft zusätzliche Bilder und ein CDN. Das Feature könnte also besonders für Shops mit viel Traffic oder großem Produktkatalog nützlich sein.

Änderungen

Elasticsearch als Suche anstatt MySQL

Der wahrscheinlich größte Umbruch mit Magento 2.4 ist, dass die Suche von MySQL auf Elasticsearch umgestellt werden muss. Stellen Sie frühzeitig sicher, dass Ihr Hoster Elasticsearch unterstützt.

Stellen Sie die Suche idealerweise zuerst auf Elasticsearch um und aktualisieren Sie dann auf Magento 2.4, om Probleme beim Update zu vermeiden.

Unterstützung für PHP 7.3 und PHP 7.4

Neu hinzugekommen ist die Unterstützung von PHP 7.4. Magento geht sogar soweit zu sagen, dass sich 2.4.0 mit PHP 7.3 installieren lässt, aber das nur für die Zeit des Upgrades empfohlen ist und danach auf PHP 7.4 umgestellt werden soll.

Der Support für PHP 7.1 und 7.2 wurde eingestellt, was damit zusammenhängt, dass der offizielle PHP-Support für 7.1 schon ausgelaufen ist und für 7.2 Ende diesen Jahres ausläuft.

Auslagerung von Third-Party PSP Extensions

Magento hat sich vernünftigerweise, mehrere Drittanbieter-Extensions von Payment-Service-Providern (PSPs) aus dem Core zu entfernen:

  • Authorize.net
  • Authorize.net (Direct Post)
  • Braintree
  • CyberSource
  • eWay
  • WorldPay

In Zukunft kann man diese kostenlosen Extensions über den Marketplace einbinden. Damit ist man mit Updates unabhängiger vom Core und der Core bringt weniger Ballast mit.

Auslagerung von Signifyd

Auch der optional verwendbare Fraud-Protection-Service von Signifyd muss nun separat installiert werden.

Zwei-Faktor-Authentifizierung (2FA) für Admin-User standardmäßig aktiviert

Für das Backend ist die Zwei-Faktor-Authentifizierung (2FA) nun standardmäßig aktiviert.

Aus Sicherheisperspektive ist die Maßnahme sinnvoll. Manche wollen 2FA aber deaktivieren, z.B. während der Entwicklung oder in Test-/Staging-Umgebungen. Mark Shust hat das kostenlose Modul MarkShust_DisableTwoFactorAuth gebaut, das das ermöglicht.

Templating: $escaper statt $block->escape*** verwenden

Mit Magento 2.4 wird die Klasse \Magento\Framework\Escaper in Templates als Variable $escaper verfügbar gemacht.Die „escape“-Methon von $block werden deprecated. Man sollte deswegen ab jetzt $escaper statt $block für das Escaping verwenden. Details findet ihr im Dokumentations-Abschnitt „Security > XSS Prevention„.

Decomposition der Magento-Controller

Danke der Arbeit der Community-Mitglieder Vinai Kopp und Łukasz Bajsarowicz hat es ein Pull Request in Magento 2.4 geschafft, dank dem Controller nicht mehr die AbstractAction erweitern müssen. Es reicht, stattdess das ActionInterface zu implementieren. Laut Messungen von Łukasz erzielt man damit – abhängig von dem, was im Controller passiert – Performance-Zugewinne von 5 bis über 30 Prozent!

Details dazu findet ihr in seinem Post.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.