Entwicklung einer Extension für Magento - Tutorial

Das folgende Hello-World-Beispiel soll den Einstieg bei der Entwickelung eigener Magentoerweiterungen erleichtern.
 
Wechseln Sie in das Verzeichnis /app/code/local der Magentoanwendung.
Legen hier einen neuen Ordner an; dieser Ordner ist der sogenannte Namespace (in diesem Beispiel heißt der Namespace 'Davitec').
Erstellen Sie nun im Namespace einen Unterordner an; in diesem Ordner sind die Daten für die Extension enhalten. Im hier vorliegenden Beispiel wurde die Extension mit 'HelloWorld' benannt.
Legen Sie nun im Extensionverzeichnis einen Ordner mit dem Namen 'etc' an. Ordner mit dem Namen 'etc' enhhalten in einer Magentoanwendung immer Konfigurationsdatein.
In diesem Beispiel ist das nicht anders. Hier ist die Konfigurationsdatei config.xml enthalten, die folgenden Aufbau hat:

<?xml version="1.0"?>
<config>
    <modules>
        <!--Namespace_Extensionname-->
        <Davitec_HelloWorld>
            <version>0.1.0</version>
        </Davitec_HelloWorld>
    </modules>
    <frontend>
        <routers>
            <helloworld>
                <use>standard</use>
                <args>
                    <module>Davitec_HelloWorld</module>
                    <frontName>helloworld</frontName>
                </args>
            </helloworld>
        </routers>
        <layout>
            <updates>
                <ProductWidget>
                    <file>helloworld.xml</file>
                </ProductWidget>
            </updates>
        </layout>
    </frontend>
</config>

Legen Sie nun wiederum im Extensionordner 'HelloWorld' den Unterordner 'controllers' an. Dieser Ordner enthält eine PHP-Datei mit den Controller-Klassen.
Die Datei ist im Beispiel IndexController.php benannt und weist folgenden Code auf:

<?php
/*neuen controller aus dem Standard-Frontend-Controller ableiten:*/
class Davitec_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action{
    function indexAction(){
        $currentTime = date("H:i", time());
        
        /*Laden der Layout-XML*/
        $this->loadLayout();

        /*Den Layoutblock laden und die Variable $currentTime dahin übergeben*/
        $this->getLayout()
            ->getBlock('helloworld')
            ->assign('currentTime', $currentTime);
        $this->renderLayout();
    }
}

Die Controller-Klasse mit der Methode 'IndexAction' wird ausgeführt sobald im Browser die in der Konfiguration angegebene URL geöffnet wird. Geschieht dies, wird die aktuelle Uhrzeit ermittelt (Funktion 'date()') und wird mittels der Methode 'assign' an den Layoutblock ('helloworld') übergeben.
Legen Sie nun eine Layoutdatei mit dem Namen 'helloworld.xml' im Ordner app/design/frontend/base/default/layout der Magentoanwendung an. Im Beispiel hat diese Datei folgenden Inhalt:

<?xml version="1.0"?>
<layout versionn="0.1.0">
    <helloworld_index_index>
        <reference name="content">
            <block type="core/template" name="helloworld"
                   template = "davitec/helloworld/index.phtml" />
        </reference>
    </helloworld_index_index>
</layout>

In dieser Datei werden der Block für die Ausgabe sowie die Templatedatei definiert.
Für die Templatedatei müssen im Verzeichnis app/design/frontend/base/default/template noch der Ordner 'davitec' mit dem Unterordner 'helloworld' angelegt werden.
Die Templatedatei mit dem Namen 'index.phtml' hat folgenden Inhalt:

<h2>Hallo Punxsutawney, es ist jetzt <?php echo $currentTime ?> Uhr und es ist kalt, kalt, kalt!</h2>

Diese eine Zeile verbindet den Inhalt, der in der Controller-Datei 'IndexController.php' festgelegt wurde, mit individuell festlegbarem HTML-Code.Um die Datei nun in Magento zu aktivieren muss im Verzeichnis app/etc/modules noch eine Konfigurationsdatei vom Format XML angelegt werden, deren Namen sich wieder aus dem Namespace sowie dem Extensionname zusammensetzen, also Davitec_HelloWorld.xmlDiese Datei hat folgenden Inhalt:

<?xml version="1.0"?>
<config>
    <modules>
        <Davitec_HelloWorld>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                Mage_Core
            </depends>
        </Davitec_HelloWorld>
    </modules>
</config>

Wenn die beschriebenen Schritte eingehalten wurden, kann die Extension nun mit der URL der Magentotestumgebung unter dem Zusatz von /helloworld augerufen werden.

Zurück zur Übersicht