Benutzerdefiniertes Magento-Modul: Schritt für Schritt, um es in Magento 2 zu erstellen

Veröffentlicht: 2020-11-11

Das benutzerdefinierte Magento-Modul ist ein entscheidender Entwicklungsprozess für jeden Magento-Entwickler. Wie Sie wissen, muss ein Entwickler möglicherweise irgendwann seine eigene Funktionalität oder sein eigenes Modul integrieren. In diesem heutigen Blogbeitrag führen wir Sie Schritt für Schritt durch die Entwicklung eines benutzerdefinierten Moduls in Magento 2

Letztes Update: Wir haben gerade die Version 2.0 von Claue Multipurpose Magento 2 Theme veröffentlicht, mit einer Reihe von Leistungsverbesserungen und exklusiven Funktionen. Probieren Sie dieses Thema jetzt aus: Claue Magento Theme 2. 0

claue2_bearbeitet (1)

Live-Demo

Claue – Clean, Minimal Magento 2&1 Theme ist eine hervorragende Vorlage für einen modernen und sauberen E-Commerce-Shop mit über 40 Homepage-Layouts und unzähligen Optionen für Shop, Blog, Portfolio, Store-Locator-Layouts und andere nützliche Seiten. Claue Version 2. 0 kommt mit einer Reihe exklusiver Funktionen, darunter:

  • Basierend auf dem Luma-Thema.
  • Erfüllen Sie alle Standards von Magento Theme
  • Deutliche Leistungssteigerung
  • Kompatibel mit den meisten Erweiterungen von Drittanbietern.
  • Voll kompatibel mit Magento 2.4.x

Diese zweite erweiterte Version unterscheidet sich vollständig von ihrer vorherigen. Wenn Sie also Claue Version 1 verwenden und auf Claue Version 2 aktualisieren möchten, können Sie nur eine neue Website erstellen, anstatt von der alten Version zu aktualisieren. Kommen wir nun zum Hauptthema zurück.

Magento ist eine sehr vielseitige Plattform, die viele nützliche Funktionen bietet und sowohl kostenlose als auch kostenpflichtige Module unterstützt. Es bietet Module, die online installiert und an die Bedürfnisse des Kunden angepasst werden können. Die Anpassung wird durch Generieren eines Moduls erreicht und kann dann gemäß der Wahl unter Verwendung der Leistungsfähigkeit der PHP-Sprache modifiziert werden. Wenn unsere Website beispielsweise eine bestimmte Funktion oder eine Reihe von Funktionen oder Anforderungen aufweist, die auf dem Markt nicht üblich sind, kann ein Modul diese Lücke für uns schließen.

Magento enthält 3 Arten von Code-Pools (Code, Core und Local), in denen sich benutzerdefinierte und Core-Module befinden. Der lokale Pool (Ordner) ist der Ort, an dem sich alle benutzerdefinierten Module befinden oder platziert werden sollten. Nachfolgend sind die Komponenten aufgeführt, die ein Modul enthalten sollte.

  • Blöcke – Hier müssen Sie die Funktionen bereitstellen, die zum Anzeigen von Daten in unseren Vorlagen verwendet werden.
  • Modelle – Hier ist die gesamte Geschäftslogik enthalten.
  • Ressource – Modelle enthalten Funktionen, die für die Datenbankinteraktion verwendet werden.
  • Controller – Definiert das Seitenlayout und blockiert Dateien und werden geladen, wenn eine URL angefordert wird.
  • etc – Enthält Konfigurationsdateien in XML-Formaten, die Magento zeigen, wie viele Dateien Module haben und wie das Modul interagiert.
  • Helfer – Umfasst Funktionen, die zum Definieren allgemeiner Geschäftslogik verwendet werden (z. B. Bildgrößenänderung, Validierung). Diese Funktionen können überall in der Magento-Anwendung verwendet werden
  • sql – Enthält SQL-Skripts zum Erstellen, Ändern oder Löschen von SQL-Tabellen.

Wie erstelle ich ein benutzerdefiniertes Magento-Modul?

Erstellen Sie ein einfaches Modul in Magento 2

Das Generieren eines einfachen Moduls in Magento 2 ist einfach. Sie müssen die folgenden Aufgaben erfüllen:

  • Erstellen Sie ein neues Verzeichnis für das Modul
  • Erstellen Sie ein registration.php -Skript
  • Erstellen Sie eine Informationsdatei etc/module.xml
  • Installieren Sie das neue Modul

Erstellen Sie ein neues Verzeichnis für das Modul

Für die Position des neuen Verzeichnisses stehen zwei Optionen zur Auswahl

  • app/code/{vendor}/
  • vendor/{vendor}/

Sie können die erste Option auswählen, wenn Ihr Modul für einen bestimmten Online-Shop bestimmt ist, an dem Sie arbeiten. Wenn Sie jedoch ein Modul erstellen, um es auf verschiedenen Websites zu verwenden, ist es besser, die zweite Option auszuwählen. Jetzt verwende ich die erste Option für dieses Beispiel.

Zuerst müssen Sie ein Verzeichnis namens EndPoint (unser Anbietername) mit einem darin enthaltenen Unterverzeichnis MyModule :

 cd {website_root} mkdir -p app/code/EndPoint/MyModule

Erstellen Sie das Skript registration.php

Die Datei registration.php weist Magento an, das neue Modul unter einem bestimmten Namen und Ort zu registrieren.

Generieren Sie eine Datei mit dem Namen app/code/EndPoint/MyModule/registration.php mit dem folgenden Code

 <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );

Erstellen Sie die Informationsdatei etc/module.xml

In diesem Schritt müssen Sie unsere Modulinformationsdatei erstellen, in der wir die Modulversionsnummer angeben. Zuerst müssen wir das Verzeichnis etc in app/code/EndPoint/MyModule :

 mkdir app/code/EndPoint/MyModule/etc

Erstellen Sie dann module.xml mit der folgenden Befehlszeile

 <?xml version="1.0"?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:Module/etc/module.xsd" > < module name = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >

Installieren Sie das neue Modul

Jetzt müssen wir das neue Modul installieren und aktivieren, also müssen wir den Befehl von unserem Website-Root aus ausführen

 php bin/magento setup:upgrade

Magento erstellt eine Liste mit Modulnamen und Konfigurationsaktualisierungen, und das neue Modul EndPoint_MyModule sollte in dieser Liste aufgeführt werden

Fügen Sie unserem Modul eine benutzerdefinierte Route hinzu

Jetzt haben wir ein funktionierendes, aktiviertes Modul, aber es tut noch nichts! Was ist eine einfache Möglichkeit, um zu überprüfen, ob unser Modul aktiviert ist? Lassen Sie uns eine benutzerdefinierte Route einrichten. Wenn wir also auf eine URL wie https://{our_website}/mymodule/test/helloworld , können wir eine benutzerdefinierte Antwort von einem Controller zurückgeben.

Das Erstellen einer benutzerdefinierten Route erfordert einige Schritte:

  • Erstellen Sie ein neues Verzeichnis für den Controller
  • Erstellen Sie eine etc/routes.xml -Datei
  • Erstellen Sie die Steuerung
  • Aktualisieren Sie das neue Modul

Erstellen Sie ein neues Verzeichnis für den Controller

Zuerst müssen wir ein neues Verzeichnis erstellen, in dem sich der neue PHP-Controller für unsere benutzerdefinierte Route befinden wird. Der neue Verzeichnispfad sollte sein:

app/code/EndPoint/MyModule/Controller

Sie können basierend auf unserem gewünschten Pfad beliebig viele Verzeichnisebenen generieren. Wenn Sie beispielsweise eine Klasse namens Index in app/code/EndPoint/MyModule/Controller , lautet die URL, die an diesen Controller weitergeleitet wird, https://{our_website}/mymodule/index (das Verzeichnis „Controller“ ist ignoriert).

Kaufen Wenn Sie eine Klasse namens HelloWorld in app/code/EndPoint/MyModule/Controller/Test , lautet die resultierende URL https://{our_website}/mymodule/test/helloworld .

Erstellen Sie die Datei etc/routes.xml

routes.xml Magento mit, welche Basis-URL für unser Modul verwendet wird. Zuerst müssen wir das „Frontend“-Verzeichnis erstellen, in dem die Datei „routes.xml“ abgelegt werden muss:

 mkdir app/code/EndPoint/MyModule/etc/frontend

Wenn Sie die Basis-URL MyModule , müssen Sie eine XML-Datei im neuen Verzeichnis generieren, die alle Anfragen an die angegebene URL an unsere Modul-Controller weiterleitet:

 <?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >

Erstellen Sie die Steuerung

Wenn wir auf Anfragen für https://{our_website}/mymodule/test/helloworld antworten möchten, müssen Sie das Basis- Controller -Verzeichnis und das Test Unterverzeichnis generieren:

 mkdir -p app/code/EndPoint/MyModule/Controller/Test

Unter diesem Verzeichnis müssen Sie unseren benutzerdefinierten Magento-Controller generieren. Alle Route Controller sollten \Magento\Framework\App\Action\Action erweitern. Wir brauchen auch eine öffentliche construct() Methode, um den Kontext an unseren Vorfahren zu übergeben, und eine execute() Funktion, die aufgerufen wird, wenn die URL aufgerufen wird:

 <?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }

Aktualisieren Sie das neue Modul

In diesem Schritt müssen Sie unser Magento-Setup aktualisieren. Aber weil Sie einen neuen Controller eingefügt haben, der Parameter vom Dependency Injector in das Konstrukt abruft. Sie müssen auch die Abhängigkeitsinjektions-Engine kompilieren (z. B. Fabriken, Proxys und Abfangjäger). Zuletzt müssen Sie den Cache leeren, damit neue Inhalte von unserer benutzerdefinierten URL bereitgestellt werden:

 php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush

Und das ist es. Öffnen Sie die /helloworld/index/index URL in Ihrem Browser und Sie sollten so etwas erhalten: Das bedeutet, dass unser Modul funktioniert!

benutzerdefiniertes Magento-Modul

Es kommt zum Ende der Tutorials: Benutzerdefiniertes Magento-Modul: Schritt für Schritt, um es in Magento 2 zu erstellen. Wir hoffen, dass dies ein nützlicher Blog für Sie ist. Wenn Sie mehr über Magento erfahren möchten, können Sie unseren Artikel zur Magento-Plattform für weitere Einzelheiten lesen. Denken Sie auch daran, sich unsere Magento 2-Erweiterungen und unsere Magento 2-Designs zur Unterstützung Ihrer Website anzusehen.