Magento Custom Module Entwicklung

Die Entwicklung von Magento-Custom-Modulen ist ein zentraler Bestandteil von Magento-Entwicklungs- oder Magento-Projekten, da Sie zu jedem Zeitpunkt Ihre eigenen Funktionen / Module in Ihr vorhandenes Magento-Projekt integrieren möchten. 

In dieser Serie werde ich die Details der Entwicklung der benutzerdefinierten Module von Magento behandeln.

Wenn Sie Ihre Magento-Entwicklung weiter vorantreiben möchten, sehen Sie sich die zahlreichen nützlichen Magento-Erweiterungen auf Envato Market an.

Magento-Erweiterungen auf dem Envato-Markt

In dieser Serie beziehe ich mich auf Magento Community Edition 1.7, obwohl benutzerdefinierte Modulstrukturen in allen Magento-Versionen gleich sind. Bevor wir loslegen, beginnen wir mit der eigentlichen Modulentwicklung. Wir wollen die Grundstruktur von Magento schnell verstehen. 

Wenn Sie einen neuen Magento installieren, werden Sie die folgende Magento-Verzeichnisstruktur feststellen:

Einführung in die Magento MVC-Struktur

Wie alle anderen wichtigen Frameworks wie Joomla, CakePHP, CodeIgniter usw. folgt Magento auch der MVC-basierten Architektur, obwohl sich diese etwas von der PHP-Kern-MVC-Architektur unterscheidet. Hier erkläre ich den Unterschied in der Magento-Architektur durch Vergleich mit einer einfachen PHP-MVC-Architektur.

PHP MVC-Architektur

Im typischen MVC-Muster sieht der Ablauf der Anwendung etwa so aus:

  1. Es gibt einen Haupteinstiegspunkt - index.php - von wo aus der gesamte App-Routing-Mechanismus bestimmt wird.
  2. Basierend auf diesem Routing-Mechanismus und dem angeforderten URL-Muster ruft die App den entsprechenden Controller auf.
  3. Der Controller ruft dann die entsprechenden Ansichten auf.
  4. Schließlich sammeln die Ansichtsdateien die Daten aus Modelldateien und zeigen die Daten an.

Magento MVC-Architektur

Die MVC-Architektur von Magento fügt dem MVC-Muster ein paar Schichten hinzu, der grundlegende Steuerungsfluss einer Anwendung sieht jedoch so aus:

  1. Es gibt einen Haupteinstiegspunkt - index.php - Von hier wird die gesamte App initialisiert.
  2. Basierend auf der angeforderten URL wird ein entsprechender Controller aufgerufen. 
  3. Der Controller definiert die Seiten und lädt die Layoutdateien für diese Seiten.
  4. Layout-Dateien teilen den Controllern mit, welche Blockdateien verwendet werden sollen.
  5. Blockdateien Sammeln Sie die Daten von Modell- und Hilfedateien und übergeben Sie sie an Vorlagendateien.
  6. Vorlagendateien empfangen Daten und rendern HTML.

Anfangs ist dies möglicherweise schwer zu verstehen, da es einige zusätzliche Schichten enthält. Um sich mit dem Steuerungsfluss vertraut zu machen, entwickeln wir ein benutzerdefiniertes "Hello World" -Modul.

Bevor Sie mit Modulen beginnen

  • Ich gehe davon aus, dass Sie bereits eine Arbeitskopie von Magento mit Version 1.7 oder 1.7 oder höher haben (oder als Version zum jetzigen Zeitpunkt keine Rolle spielt).
  • Deaktivieren Sie den Cache. So deaktivieren Sie den Cache Gehen Sie zu Magento Admin Panel> System> Cache-Verwaltung> Alle Cache-Typen von den linken Kontrollkästchen auswählen> Aktion auswählen: In der rechten oberen Dropdown-Liste deaktivieren> klicken Sie auf Senden.

Die Struktur eines Magento-Moduls

Code-Pools

Magento enthält drei Arten von Code-Pools, in denen sich alle benutzerdefinierten Module und Kernmodule von Magento befinden. 

  1. Core-Pools enthalten alle Core-Module, die standardmäßig mit einer Magento-Installation geliefert werden. Diese Module wurden von Magento-Entwicklern geschrieben. Es wird empfohlen, diese Module nicht zu ändern, da bei jeder Aktualisierung der Magento-Installation alle Kernmodule überschrieben werden und Ihre Änderungen verloren gehen.
  2. Community-Pools enthalten alle Module, dh benutzerdefinierte Module, die von Programmierern von Drittanbietern für die Installation über Magento Connect entwickelt wurden. Diese Module erweitern im Allgemeinen Kernmodule und bieten eine eigene Funktionalität, die oft überall in Magento verwendet werden kann.
  3. Lokale Pools enthalten alle benutzerdefinierten Module, die für ein bestimmtes Projekt verwendet werden, aber in Magento Connect nicht gelesen werden

Daher haben wir zwei Pools zur Auswahl: Community oder Local. Da wir an einem eigenen Projekt arbeiten, verwenden wir einen lokalen Pool. Es gibt jedoch keine Einschränkungen für die Nutzung des Community-Pools.

Struktur

Magento-Module bestehen aus folgenden Komponenten:

  • Blöcke enthalten Funktionen, mit denen Daten in Vorlagen angezeigt werden.
  • Modelle enthalten die Geschäftslogik der Module.
  • Ressourcenmodelle enthält Funktionen, die für die Datenbankinteraktion verwendet werden.
  • Controller Definiert das Seitenlayout und blockiert Dateien und wird geladen, wenn eine URL angefordert wird.
  • usw Enthält Konfigurationsdateien in XML-Formaten, die Magento mitteilen, wie viele Dateien Module enthalten und wie das Modul interagiert.
  • Helfer enthalten Funktionen, die zur Definition einer allgemeinen Geschäftslogik verwendet werden (z. B. Größenänderung von Bildern, 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.

Modulbenennung

Wir müssen unserem Modul einen Namen geben. Im Allgemeinen bestehen die Namen der Magento-Module aus zwei Teilen: _Wählen Sie die beste Methode, um einem Magento-Modul einen Namen zu geben als Autor oder Firmenname und als tatsächlicher Modulname.

Basierend auf dieser Namenskonvention gebe ich unserem Modul das Chiragdodia_Mymodule Name. Wir werden in dieser Serie auf diesen Namen verweisen.

Code einrichten und konfigurieren

 Lässt die Verzeichnisse basierend auf der obigen Struktur erstellen. Gehen Sie zu Ihrer Magento Installationsrichtung und navigieren Sie zu App / Code / Lokal und erstellen Sie die Verzeichnisse wie unten gezeigt.

Als Nächstes konfigurieren und aktivieren Sie unser Modul, indem Sie die Konfigurationsdatei erstellen Chiragdodia_Mymodule.xml in dem app / etc / modulesVerzeichnisDieses Verzeichnis enthält Konfigurationsdateien für alle Module.

    wahr lokal   

Diese Datei informiert Magento über die Position unseres Moduls. In dem aktiv Tag, den wir angegeben haben wahr um unser Modul zu aktivieren. Wenn bis jetzt alles in Ordnung ist, finden Sie Ihr Modul im Magento-Admin-Panel> System> Konfiguration> Erweitert> Erweitert> Modulausgabe deaktivieren Liste. Von hier aus können Sie Ihr Modul aktivieren und deaktivieren.

Erste Schritte: Entwicklung

Als Nächstes erstellen wir unsere Modulkonfigurationsdatei. Diese Datei informiert Magento über unser Modul. Dies beinhaltet, wie viele Dateien unser Modul enthält, welche Art von Dateien (Modelle, Helfer, Datenbankklassen usw.).

Gehe zu App / Code / Lokal / Chiragdodia / Mymodule / etcund erstellen Sie ein config.xmlDatei, die folgenden Inhalt enthält

    0,1,0       Standard  Chiragdodia_Mymodule Mymodule      

Lassen Sie uns Zeile für Zeile durchgehen, um die einzelnen Tags zu verstehen. Hier ist der erste Tag das enthält den Namen und die Version unseres Moduls. Die Versionsnummer ist sehr wichtig für die Aktualisierung Ihres Moduls.

Das Das Tag teilt Magento mit, welcher Controller gesendet wurde. In der  Tag, den wir definiert haben Dadurch erfahren Sie, wie Sie über den Routing-Mechanismus auf unsere Controller zugreifen können. 

In dem  tag haben wir den Modulnamen in definiert Tag und Name des Frontends in . Mit einem Frontend-Namen können wir auf unser Modul im Frontend gerne zugreifen yoursitename.com/index.php/mymodule/index.

Durch anrufen yoursitename.com/index.php/mymodule oder yoursitename.com/index.php/mymodule/index Magento sucht nach Indexaktionen der Controller-Datei Ihres Moduls. Daher müssen wir unsere Controller-Datei erstellen.

Gehe zu  App / Code / lokal / Chiragdodia / Mymodule / Controllerund erstellen Sie eine Datei IndexController.phpmit folgendem Inhalt.

Beachten Sie, dass der Name und die Klassennamen der einzelnen Dateien in Magento zwischen Groß- und Kleinschreibung unterscheiden. Es ist sehr wichtig, dass Sie beim Erstellen von Dateien und Klassen sorgfältig darauf achten, Ihre Arbeit zu benennen.

Öffnen Sie jetzt die URL yoursite.com/index.php/mymodule/indexes wird gedruckt "Hallo Tuts + World". Toll - wir sind endlich fertig mit unserem ersten Hallo-Welt-Modul.

Controller Dispatch

Hier haben wir die Klasse erweitertMage_Core_Controller_Front_ActionDas enthält alle Methoden, die beim Routing von URLs verwendet werden. Der Name der Magento-Klasse gibt den Speicherort der Klassendatei an. Also die Klasse Mage_Core_Controller_Front_Actionliegt am Ort Mage> Core> Controller> Front> Action.php

Siehe den Klassennamen unseres Controllers Chiragdodia_Mymodule_IndexController. Magento-Controller so zu benennen, dass es reflektiert (tag) _ (Action Controllername) (Schlüsselwort Controller).

  • tag = Chiragdodia_Mymodule (Wir haben dieses Tag in definiert config.xml)
  • Aktion Controllername = Index
  • Action Controller gefolgt von der Regler Stichwort 

Basierend auf diesem Muster lautet der Name unseres Controllers Chiragdodia_Mymodule_IndexController

Sehen Sie sich nun das URL-Muster an, das dem folgenden Routenmuster folgt
yoursite.com/index.php/frontendname/actionControllername/actionmethod

  • Frontendname = Mymodule
  • actionControllername = Index
  • actionmethodname = Index

Basierend auf diesem URL-Muster lautet die URL unseres Moduls yoursite.com/index.php/mymodule/index/index. Sie können es auch über aufrufen yoursite.com/index.php/mymodule weil immer wenn du keine angegeben hast actionController oder Aktionsmethode Name, lädt Magento standardmäßig den Indexcontroller und die Indexaktion.

Nun erstellen wir eine weitere Aktion: testAction .

Wir können über eine URL auf die testAction zugreifen yoursite.com/index.php/mymodule/index/test.Wie schon früher erklärt

  • Frontendname = Mymodule
  • actionControllername = Index
  • actionmethodname = test

So funktioniert der Controller in Magento.

Zunächst kann es schwierig sein, alles auf einmal zu verstehen, daher habe ich den gesamten Quellcode in dieses Modul aufgenommen, sodass Sie es überprüfen und Ihre eigene Arbeit implementieren können, während Sie es als Leitfaden verwenden.

Was kommt als nächstes?

Im nächsten Teil werden wir einige Layouts in unserem Modul ausfüllen, indem Sie Layout- und Blockdateien erstellen. Wir werden verstehen, wie die Layout-Dateien in Magento funktionieren und welche Rolle Blockierungen im Zusammenhang mit Magento spielen.

Erstellen Sie bis dahin Ihr eigenes Modul und teilen Sie mir alles mit, was Sie in Schwierigkeiten bringt.

Benötigen Sie zusätzliche Hilfe?

Wenn Sie nach dem Lesen dieses Tutorials immer noch nicht sicher sind, wie Sie vorgehen sollen, wenden Sie sich an einen der Magento-Entwickler von Envato Studio. Sie können Ihnen bei allen Arten von Magento-Problemen helfen, egal ob groß oder klein. Hier einige Beispiele:

1. Magento All-in-One (vollständige Site-Entwicklung / Anpassung)

Richten Sie eine Magento-Website ein oder fordern Sie erweiterte Anpassungen an, z.

  • Layoutänderung 
  • Slider Modifikation 
  • benutzerdefiniertes Menü 
  • Behebung von ansprechenden Problemen 
  • und mehr

2. Magento-Modulentwicklung und Standortentwicklung

Dieser Anbieter führt eine der folgenden Aktionen aus:

  • ein kundenspezifisches Modul entwickeln
  • Installieren Sie ein Magento-Design
  • Personalisieren Sie Ihr Identitätsdesign (Logo, Farbe, Schriftart, Hintergrund) 
  • Erstellen Sie Ihre ersten 20 Kategorien / Unterkategorien 
  • Einrichten von Zahlungen und lokalen Währungen 
  • und mehr

3. Anpassung des Magento-Themas

Holen Sie sich Ihr Magento-Theme zu einem günstigen Preis innerhalb eines Tages.

4. Magento Theme Entwicklung, Installation, Erweiterungen & Custom Work

Dieser Anbieter bietet eine Reihe von Magento-Diensten an, darunter:

  • benutzerdefinierte Magento-Webentwicklung 
  • responsive Magento-Sites 
  • benutzerdefinierte Magento-Theme-Entwicklung 
  • Modulentwicklung 
  • Einkaufswagen Entwicklung 
  • Sichere Integration des Zahlungs-Gateways

Wenn diese Lösungen nicht für Sie geeignet sind, probieren Sie eine der zahlreichen anderen in Envato Studio verfügbaren Lösungen aus.