magento
Modulstruktur
Suche…
Bemerkungen
Module müssen erweitert werden. Sie können the app/code/
Dateien nicht ändern, ohne zukünftige Updates zu verbieten. Stattdessen fügen wir dem app/code/local
Verzeichnis ein Modul hinzu (das lokale Verzeichnis kann fehlen, falls ja, muss es manuell erstellt werden. Dies ist in späteren Versionen von Magento üblich), um benutzerdefinierte lokale Funktionen hinzuzufügen.
Alle Konfigurationsdateien des Moduls beginnen mit einem <config>
-Tag. Das neue Modul wird im <modules>
-Tag deklariert. Wir rufen ein Modul mit dem Namen YOUR_COMPANY_HelloWorld auf, daher werden die <YOUR_COMPANY_HelloWorld>
-Tags verwendet. Hier definieren wir die Version (allererste = 0.0.1)
Eine Liste mit XML-Ereignissen finden Sie unter: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml
Wenn Sie Probleme haben, besuchen Sie die Website http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/
Ein neues Modul erstellen (Hello World)
Die Entwicklung von Magento-Custom-Modulen ist ein zentraler Bestandteil von Magento-Entwicklungs- oder Magento-Projekten, da Sie zu jedem Zeitpunkt Ihre eigene Funktionalität / Ihr eigenes Modul in Ihr bestehendes Magento-Projekt integrieren möchten.
Das erste, was Entwickler deaktivieren sollten, ist der Systemcache. Andernfalls wird das Entwickeln zu einem Schmerz, da jede Änderung einen Flush erfordert. Navigieren Sie im Magento- System > Cache Management > Select All > Actions : Disable.
zu System > Cache Management > Select All > Actions : Disable.
auswählen System > Cache Management > Select All > Actions : Disable.
Verwenden Sie die folgende Anleitung, um ein neues Modul zu erstellen:
Erstellen Sie einen Ordner in
app/code/local/
- Benennungskonventionen tragen normalerweise den Namen Ihres Unternehmens, z. B.app/code/local/<YOUR_COMPANY>
.Jetzt haben wir einen benutzerdefinierten Ort für unsere Module. Erstellen Sie ein anderes Verzeichnis, nennen Sie es etwas, das mit dem Typ des Moduls zusammenhängt, das Sie erstellen möchten, z. B. app / code / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld" nenne ich dieses Modul.
Dieses Verzeichnis benötigt eine
config.xml
damit Magento es als neues Modul erkennt. Erstellen Sie einen anderen Ordner namensetc
Gefolgt von einer XML-Datei namens config.xml. Das Verzeichnis sollte wieapp/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml
aussehen:app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml
Dies ist die Struktur der XML-Datei:<?xml version="1.0" encoding="UTF-8" ?> <config> <modules> <YOUR_COMPANY_HelloWorld> <version>0.0.1</version> </YOUR_COMPANY_HelloWorld> </modules> </config>
Als nächstes müssen Module für Magento deklariert werden. Fahren Sie mit
app/etc/modules
. Erstellen Sie ein anderes XML-Dokument, und geben Sie ihm die Namen Ihrer Tags: in meinem FallYOUR_COMPANY_HelloWorld
. In diesem Dokument schreiben Sie:<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <YOUR_COMPANY_HelloWorld> <!-- Whether our module is active: true or false --> <active>true</active> <!-- Which code pool to use: core, community or local --> <codePool>local</codePool> </YOUR_COMPANY_HelloWorld> </modules> </config>
Auch hier werden mit config und module Tags ein neues Modul für Magento deklariert. Aktiv ist der Standardwert, auf den im
Admin Panel under System > Configuration > Advanced
zugegriffen werden kann.codePool
teilt Magento mit, in welchem Verzeichnis in unserem Falllocal
codePool
werden sollDieses Modul wurde nun eingerichtet, also das Modell unserer MVC-Struktur. Sie sollten Ihr neues Modul in Admin Panel unter
System > Configuration > Advanced
. Es tut aber noch nichts! Sie müssen zu unserer Datei config.xml zurückkehren und XML-Elemente definieren.Weiter mit dem Tutorial; Wir werden einige dieser XML-Elemente verwenden, um Klassen zu erstellen und alle Seiten im Frontend unserer Site zu bearbeiten. Zurück zur Datei
config.xml
schreiben Sie Folgendes unter dem Tag</modules>
:<global> <!-- adding a new block definition --> <blocks> <!-- A unique short name for our block files --> <helloworld> <!-- the location of our modules block --> <class>YOUR_COMPANY_HelloWorld_Block</class> </helloworld> </blocks> </global> <!-- We are making changes to the frontend --> <frontend> <!-- We are making changes to the layout of the front end --> <layout> <!-- we are adding a new update file --> <updates> <!-- Creating the name of our update and linking it the module --> <helloworld module="YOUR_COMPANY_HelloWorld"> <!-- The name of the layout file we are adding --> <file>helloworld.xml</file> </helloworld> </updates> </layout> </frontend>
Wie Sie sehen, erweitern wir ständig die Kerndateien, anstatt sie zu bearbeiten. Das
helloworld
Tag ist in Kleinbuchstaben geschrieben, da dies auf einen Handlehelloworld
, und aushelloworld
Kontinuität werden wir es so genau wie möglich benennen. Diese verknüpfen wir dann mit dem ModulYOUR_COMPANY_HelloWorld
.Wir ändern das Layout. Deshalb müssen wir diesen Handle im Layoutverzeichnis anlegen. Fahren Sie mit
app/design/frontend/base/default/layout
. Wir haben dem Modul gesagt, dass es nach der Dateihelloworld.xml
suchenhelloworld.xml
. Deshalb müssen wir es in diesem Verzeichnis erstellen. Worauf wartest du. TU es!! und bevölkere es mit:<?xml version="1.0" encoding="UTF-8"?> <!-- All Layout files begin with this code --> <layout> <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages --> <default> <!-- This is the block we want to bolt onto the existing before_body_end block --> <reference name="before_body_end"> <!-- We define our new block and template to be added to before_body_end --> <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/> </reference> </default> </layout>
Diejenigen von Ihnen, die ein wenig Erfahrung mit Magento haben oder andere bemerkenswerte Magento-Tutorials gelesen haben, können jetzt nach Luft schnappen, weil wir Änderungen an der Basis / Standardeinstellung vornehmen, da sich hier Magento-Kerndateien befinden. Wir modifizieren hier jedoch keine Dateien, wir erstellen neue und außerdem setzen wir unseren Dateinamen mit "helloworld" voran. Es besteht also nur eine geringe Wahrscheinlichkeit, dass dies mit anderen Modulen in Konflikt steht oder Probleme mit der Aktualisierung von Magento in der Zukunft. Glückliche Tage!
Da wir alle Seiten betreffen möchten, verwenden wir das Standard-Tag und referenzieren es auf den Strukturblock
before_body_end
. Dies wird die Rolle der Aktion übernehmen und den View-Abschnitt unserer MVC-Struktur auslösen.Jetzt verstehen wir, dass wir uns auf den
before_body_end
Block konzentrieren. und verknüpfen Sie es mit unserem benutzerdefinierten Block. Dies wird als Referenz bezeichnet und ist ein Haken . Wir hängen es derzeit nicht an etwas Bestehendes an, daher müssen wir die erforderlichen Dateien erstellen.In
helloworld.xml
wir in template einefooter.phtml
. Fahren Sie mitapp/design/frontend/base/default/template
und erstellen Sie ein Verzeichnishelloworld
.Erstellen
footer.phtml
in diesem Verzeichnis die Dateifooter.phtml
und füllen Sie diese mit HTML aus. In diesem Lernprogramm werden lediglich einige PHP-Funktionen angezeigt, die mit unserer PHTML-Datei verknüpft sind:<p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
Wir müssen jetzt ein eigenes Blockobjekt erstellen, um die Vorlage mit unserer Blockfunktionalität zu koppeln. Erstellen Sie das Verzeichnis app / code / local / YOUR_COMPANY / HelloWorld / Block / und erstellen Sie darin die Datei
Footer.php
. Dies wurde in unserer zeta_layout.xml im Typ "helloworld / footer" referenziert. Füllen Sie diese Datei mit:<?php class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template { public function getDate() { $date = date('Y-m-d'); return urlencode($date); } } ?>
Dies ist die Funktion, die unseren Aufruf
getDate()
wir aus unserer.phtml
Datei.phtml
. Wir erweitern dieMage_Core_Block_Template
.Diese Funktionalität ist jetzt abgeschlossen. Testen Sie dies, indem Sie auf Ihre Startseite gehen, wo Sie Ihr Modul in der Fußzeile jeder Seite sehen sollten!