Extensions Tutorial: Teil 1 - “Hallo Magento”



Aller Anfang ist schwer - das ist auch bei Magento der Fall. Vor allem wenn man eigene Erweiterungen entwickeln möchte. Man tut sich ziemlich schwer und benötigt viel zeit, da keine Dokumenation frei verfügbar ist.

Mein erster Gedanke war es, nach geeigneter Literatur zu suchen. Zur Zeit ist leider nur der Titel Guide to Programming with MAGENTO von php|architects’s verfügbar. Man kann sich mit dem Buch zumindest einen Überblick verschaffen, aber zum Magento-Entwickler für Erweiterungen wird man damit sicherlich nicht.

Wir werden mit der traditionellen “Hello World” Anwendung beginnen, und diese Schritt für Schritt erweitern.

WICHTIG: Achten Sie beim Erstellen auf Groß- und Kleinschreibung!

1. Aufbau der Dateistruktur

app/
   etc/
      modules/
        - Mxperts_All.xml (Oder Ihre Firmenname IhreFirme_All.xml)
   code/
      local/
         Mxperts/ (Oder Ihre Firmenname IhreFirme_All.xml)
            Tutorial/ (Bezeichnung Ihrer Erweiterung)
               Block/
                 - Index.php
               controllers/
                 - IndexController.php
               etc/
                 - config.xml

Download der Dateistruktur: exttut_1_app.zip

2. config.xml erstellen

Die config.xml ist die Basis für das Magento-Modul und alle Standardparameter für das Modul werden festgelegt.

<?xml version="1.0"?>
<config>
    <modules>
        <Mxperts_Tutorial>
            <version>0.1.0</version>
        </Mxperts_Tutorial>
    </modules>
    <global>
        <blocks>
            <tutorial>
                <class>Mxperts_Tutorial_Block</class>
            </tutorial>
        </blocks>
    </global>
    <frontend>
        <routers>
            <Mxperts_Tutorial>
                <use>standard</use>
                <args>
                    <module>Mxperts_Tutorial</module>
                    <frontName>tutorial</frontName>
                </args>
            </Mxperts_Tutorial>
        </routers>
    </frontend>
</config>

Erklärung: <modules><Mxperts_Tutorial> Ermöglicht die Versionierung Ihres Moduls. Anhand der Versionsnummer kann das System benötigte Aktualisierungen erkennen. In den nachfolgenen Tutorials werden Sie das sehen. <global><blocks> Die Definition des Blocks wird verwendet um das Ausgabescript für Hallo Magento zu erstellen. <frontend><routers> definiert wie der Zugriff auf das Modul erfolgt. In unserem Falls ist das shop.mxperts.de/tutorial

3. IndexController.php erstellen

<?php
class Mxperts_Tutorial_IndexController extends Mage_Core_Controller_Front_Action
{

    public function indexAction()
    {
	    $this->loadLayout();
      $this->getLayout()
          ->getBlock('root')
             ->setTemplate("page/1column.phtml");
	    $this->getLayout()
		     ->getBlock('content')->append(
			$this->getLayout()->createBlock('tutorial/index')	);
      $this->renderLayout();
    }
}

Erklärung:
page/1column.phtml lädt das Template aus app/design/frontend/default/[Ihr Template]/template/page. Wenn Sie das Ergebnis 3-spaltig möchten, ändern Sie das Layout in 3columns.phtml.
‘tutorial/index’ bezieht sich auf die Definition aus der config.xml (Zeile 10, config.xml). Der Inhalt aus der index.php wird in das Layout integriert.

4. Den Block Index.php erstellen

<?php
class Mxperts_Tutorial_Block_Index extends Mage_Core_Block_Template
{
	protected function _toHtml()
	{
		return 'Hello Magento';
	}
}

Erklärung:
In der Index.php wird die Klasse Mxperts_Tutorial_Block_Index erstellt, wie Sie in der config.php definiert wurde (Zeile 11, config.xml)

5. Mxperts_All.xml zur Aktivierung des Moduls

<?xml version="1.0"?>
<config>
    <modules>
        <Mxperts_Tutorial>
            <active>true</active>
            <codePool>local</codePool>
        </Mxperts_Tutorial>
    </modules>
</config>

Nun ist es an der Zeit, unsere neu erstellte Magento Erweiterung zu testen. Gehen Sie dazu in Ihr Shopbackend und aktualisieren Sie als erstes den Cache.
Voila - Ihre Erweiterung ist fertig und kann über www.ihrshop.de/tutorial oder www.ihrshop.de/index.php/turotial aufgerufen werden.

Beispiel: http://shop.mxperts.de/tutorial

Download des gesamten Tutorials: mxpert_extensions_tutorial_01.zip

Viel Spaß beim nachprogrammieren und experimentieren. Verändern Sie auch die Bezeichnungen und Parameter um zu sehen welche Auswirkungen das jeweils hat.

Extensions Tutorial: Teil2 Admin-Controller

  • Twitter
  • Webnews
  • Mister-Wong
  • Facebook
  • Digg
  • BlogMarks
  • Share/Save/Bookmark

25 Kommentare to “Extensions Tutorial: Teil 1 - “Hallo Magento””

  1. Chris Chris sagt:

    Super,

    Endlich mal was wo nen Newbie dahintersteigt. :)

    Was mich persönlich interessiert ist wie man Module (Extensions) auf ein bestehendes System anwendet. Im Forum liest man immer viel über Probleme wo viele schreiben lager das über eine Extension aus zwecks magentoVersionsUpdates. Ich hab leider keine Ahnung wie das funzt. zB Zusätsliche Button im Menü realisisern die auf CostumerSupport oder AboutUs hinweisen. Verlinken kann ich das schon und umsetzen. aber nur per Core. Wenn ich das Update - wech. Alles was Hardcoded ist. Schätze wenn euer Designguide fertig ist wird man da haufen gutes brauchbares für mein Prob finden. ThX.
    Ich bastel noch mal bisl mit deinem Tut rum und schau ob ich das in ein bestehendes System bekomm.
    Weiter so mit der Site.

    •  melser42 sagt:

      Erst einmal meinen herzlichen Dank für das Tutorial ;)

      Leider habe ich ein kleines Problem:
      Es funktioniert nicht.
      Da ich leider ein Neueinsteiger bin, kann ich nur Vermutungen anstellen, warum es denn nicht funktioniert.
      Da ich mit Sicherheit sagen kann, dass ich die Ordner & Dateien sowie Ihren Inhalt richtig angelegt habe (Groß+Kleinschreibung beachtet) und sogar, nachdem es mit dem Abtippen nicht geklappt hat, kopiert und eingefügt sowie auch die Dateien gedownloaded habe und dieser Fehler noch immer existiert, vermute ich, dass es evl an meiner Magentoversion liegen kann.

      Aber nun erstmal zum Fehler:
      Der Fehler ist interessant, denn ich bekomme gar keine Fehlermeldungen ausgegeben - es ist so, als würden die neuen Dateien schlicht ignoriert werden.
      An der Ausgabe selbst kann es auch nicht liegen, denn ich habe zum Beispiel auch den zweiten Teil des Tutorials gemacht, wo ein neuer Reiter namens “Tutorial” erstellt wird und wenn man darauf klickt “Hello Magento” ausgegeben werden soll, doch leider bekomme ich den Reiter nicht angezeigt.
      Die Dateien sind auch auf meinem Server.

      Ich benutze Magento Version 1.3.2.2 (Updaten darf ich laut dem Chef erstmal nicht - leider)

      Was denkt ihr woran das liegen könnt?

      _
      Entschuldigt bitte, dass ich diese Frage hier hin poste, auch wenn es hier nicht so gern gesehen wird (Siehe Footer:”Bitte beachten”)
      _

      Trotzdem schonmal meinen herzlichen Dank im Voraus,
      Euer Mark

  2. Daniel Sasse Daniel Sasse sagt:

    Klasse Einstieg gerade für Einsteiger in die Modulprogrammierung (wie mich). Besonders gut hat mir gefallen, dass endlich mal auch erwähnt wurde wofür gewisse Anweisungen da sind und was sie tun.

    Das mit den Download-Files ist für die Masse sicher bequem und nett, ich persönlich bin aber eher der Typ der es Schritt für Schritt an Hand der Informationen selbst zusammenstellt, da für mich der Lerneffekt so größer ist. Ist aber Geschmackssache - bin in jedem Fall jetzt schon ein Fan von der Art & Weise wie es beschrieben wurde.

    Ich werde mich daher sehr gespannt über die weiteren Themen der Serie her machen - laut Übersicht vielversprechend. Weiter so & DANKE!

  3. iMarcel iMarcel sagt:

    Danke für den schönen Einstieg!
    Jetzt geht’s weiter mit Teil 2…

  4. moxx moxx sagt:

    Hi,

    funkt den das auch unter 1.3, i bekomm leider immer nen Whoops, our bad…!

    (auch mit der TutDownload version schon getestet)

    lg
    \moxx

  5. moxx moxx sagt:

    ok habs debuggt hab ja ein “/default” davor “bzw. http://www.myurl.com/default/tutorial” weiss zwar gerade nicht wo das her ist (hatte ich anfangs noch nicht) aber seit ich mir das monster vor 3 tagen aufgesetzt habe klick ich da auch wild rum ;-)

  6. ConsoleX ConsoleX sagt:

    In der oben gezeigten Ordnerstruktur ist der Controller mit “IndexController.php” zu bennen nicht “indexController.php”.

    Aber sehr gelungenes Tutorial, wenn auch leicht von einem bestehenden Tutorial abgekupfert. Aber wie heisst es so schön:
    Never reinvent the wheel :)

    Top ! Weiter so!

    • Hallo,
      danke für den Hinweis - habe ich korrigiert. Natürlich habe ich verschiedene Tutorials getestet und versucht alle releveanten Bereiche in einem Tutorial zu zeigen. Der Gedanke dieser Website ist es, dass es andere Entwickler beim Eintieg etwas leichter haben.
      Hoffen wir mal dass es in nächster Zukunft einen Developer-Guide und eine Doku von Magento gibt - das wäre das Beste :-)

  7. larsemann larsemann sagt:

    Hi,

    danke für die Mühe, aber klappt null.

    Hab alles ausprobiert und bekomme ständig die “Oops”-Seite.

    Frisch installiert, enthusiastisch selbstgeschrieben und auch mal deinen Ordner hochgeladen => gleiches Ergebnis.

    Grüße und dennoch weitermachen!

  8.  ds_1984 sagt:

    Die Ausgabe die man oben über den Beispiellink bekommt, die könnt Ihr zu diesem Zeitpunkt ja noch garnicht erhalten.

    Was den “Uups-Effekt” angeht:

    2 Möglichkeiten:
    1. Oben in der URL /index.php weg lassen - so läuft es bei mir.

    2. Im Zweifel mal unter System->Konfiguration->Erweitert->Erweitert gehen und dort die Mxperts_Tutorial deaktivieren, dann Konfiguration speichern.

    Danach wieder aktivieren und speichern, da das Modul und deren Struktur nun wieder neu eingelesen werden solltest du spätestens nach einer Aktualisierung aller Caches kein “Uups” mehr erhalten. Der Button bei “Katalog Rewrites” ist in der Cache-Verwaltung auch nicht zu verachten.

    Das klappt schon alles wie hier beschrieben - ich habe das ja selbst ebenfalls von hand geschrieben, weil ich es von A-Z mitmachen wollte.

    Zwischendurch hatte ich zwar auch diverse ERRORS aber die waren auf meine eigenen Schreibfehler zurückzuführen.

  9. [...] Fragen zur Programmierung von Extensions haben, möchte ich sie an dieser Stelle auf unsere Reihe Extension Tutorial Teil1-Teil10 [...]

  10. [...] in Magento haben, sollten Sie sich zuerst damit befassen. Dazu gibt es unsere Reihe Extension Tutorial Teil1 – Teil10. Ich versuche trotzdem die Sourcen so geht es geht zu [...]

  11. Spreadcity Spreadcity sagt:

    Danke für das Tutorial sagt Spreadcity.de ! :-)

  12. [...] Falls Sie weitere Infos zur Extensions-Programmierung möchten, finden Sie den Einstieg in unserem Extensions Tutorial. [...]

  13. [...] Extensions Tutorial: Teil 1 – “Hallo Magento” | Magento Experts – [...]

  14.  joniponi sagt:

    super unterstützung durch mxperts, danke …

    aber die in diesem tutorial beschriebene loesung funktioniert nicht - habe alles genau so drin / copy paste / struktur.

    nota bene funzt das teil auch da nicht: http://shop.mxperts.de/tutorial

    :(

  15.  aleis sagt:

    Danke für das schöne Tutorial.

    Ich habe diese Übung händisch nachgemacht und kann bestätigen, dass alles funktioniert.

    Falls man den Shop lokal betreibt:
    während man die Startseite seines Shops im Browser über http://localhost/shop/ aufruft, muss man, um das Übungsergebnis zu betrachten, http://localhost/shop/tutorial aufrufen.

  16.  joniponi sagt:

    completely dazzled … habe modul umbenannt und nun funktioniert es nicht mal mehr hier in der absoluten basisversion. cache geloescht / proxy aus.

    sehr komisch auch: ein modul geht (basis) auf dessen basis mit suchen und ersetzen im editor neues modul gemacht (= schreibfehler ausgeschlossen), neues funktioniert nicht.

    gibt es irgendwo einen versteckten cache?

    joni, komplett verwirrt

  17.  joniponi sagt:

    … nachdem die Erstellung eines Moduls mit Naming Mxperts / Tutorial wunderbar funzte, stockte ich immer nur schon am Hello Magento bei der Vergabe eigener Namen.

    Geholfen hat folgender Griff: In der Tabelle ‘core_config_data’ die letzten Einträge ‘advanced/modules_disable_output/(Name Firma / Modul) löschen, Cache erneuern, Voilà

    Vielleicht hilft dies auch anderen ….

    Herzlichen Dank an Mxperts für das Super Tutorial

  18.  Bert sagt:

    Danke für das tolle Tutorial. Alles hat reibungslos bei mir geklappt.

    Nur, warum werden die Inhalte der .php Dateien nicht mit ?> abgeschlossen ? Es funktioniert zwar in beiden Versionen aber welche wäre nun die korrekte und warum ?

  19. [...] 4-teilige Anleitung, wie man eine Magento-Extension aufsetzt von MXPERTS: http://www.mxperts.de/extensions-tutorial-teil1-hallo-magento/ zumindest den beiden ersten Kapiteln konnte ich erfolgreich folgen [...]

Kommentar erstellen

You must be logged in to post a comment.

Bitte beachten: Mxperts.de ist kein Supportforum sondern eine Informationsplattform, deshalb benutzt für Diskussionen das deutsche Forum von Magento. (Fragen/Kommentare zu den Tutorials ausgeschlossen). Außerdem gebe ich keinen kostenlosen Support zu Magento. Leider haben das einige Leser in letzter Zeit falsch Verstanden und ich bitte um Euer Verständnis. Ich denke diese Plattform ist von unserer Seite aus schon genügend Gratis-Leistung.