How to Modulentwicklung [Teil 2]

Wie schreibe ich ein OXID eShop Modul?

Die metadata.php Datei

Die wichtigste Datei bei der Modulentwicklung ist die metadata.php Datei.

In der metadata.php Datei werden alle technischen Modulinformationen hinterlegt, die das OXID Framework benötigt um die eigenen Anpassungen zu adoptieren.

Zuerst legt man ein eigenes Modulverzeichnis an. Der Name des Modulverzeichnisses beginnt mit dem Entwicklerkürzel und dann folgt der Modulname.

 

Nachdem man das eigene Modulverzeichnis angelegt hat, legt man die metadata.php Datei innerhalb des eigenen Modulverzeichnisses an.

Die metadata.php Datei enthält zwei Variablen. Diese sind die Metadata Version Variable $sMetadataVersion = '1.1' und die Modul Array Variable $aModule = array(...).

Die Metadata Version Variable enthält die Metadata Versionsnummer und die Modul Array Variable enthält Pflichtfelder und optionale Felder.

Pflichtfelder metadata.php Datei

Die 2 Frames enthalten die Listen- und Detailansicht:

  • die Liste article_list.tpl
  • die Detailansicht article_main.tpl

Die Listenansicht und Detailansicht Templates besitzen im OXID Framework immer die gleichen Suffixes. Die Suffixes lauten _list und _main.

Wenn es sich nun im Admin um einen Tab handelt. Findet man den zugehörigen Controller, Model und View anhand des Namens welcher sich hinter der Route beim drüber hovern des Tabs unten links angezeigt wird.

In unseren Fall wäre dies für den Erweitert Tab #article_extend, das Template heißt also article_extend.tpl.

Unser Block den wir gerne erweitern möchten heißt admin_article_extend_form.

Block Überladung in metadata.php bekannt machen

Da wir nun das Admin Template und den Namen des Blocks kennen den wir gerne erweitern möchten, können wir den Block in der metadata.php im Blocks Array bekannt machen:

Der Wert template gibt an in welchen Tempalte sich der Block befindet.

Der Wert block gibt an in welchen Codeabschnitt bzw. Block sich die Überladung befindet.

Der Wert file gibt an wo sich unsere Block Template Datei im Modulverzeichnis befindet.

Für unsere Überladung legen wir das Verzeichnis views mit dem Unterverzeichnis blocks an. In dem Unterverzeichnis blocks legen wir folgende Blocküberladungsdatei article_extend.tpl an:

oxarticles__bisinneedofexplanation->value == 1}]checked[{/if}] [{ $readonly }]>

 

Der Smarty Tag [{$smarty.block.parent}] sorgt dafür, dass vor unser Checkbox der Original Code innerhalb des definierten Blocks angezeigt wird.

Die Blocküberladung Informationen werden beim erstmaligen Aktivieren des Modul in der Tabelle oxtplblocks gespeichert.

Aktivieren wir unser Modul im Admin unter Erweiterungen -> Module und gucken uns den Erweitert Tab im Admin erneut an wurde unsere Checkbox Produkt erklärungsbedürftig? ergänzt.

Datenbankfeld anlegen

Das Speichern unser Checkbox übernimmt das OXID Framework automatisch. Allerdings ist dafür die Voraussetzung, dass unser Artikelfeld in der Datenbanktabelle oxarticles bekannt ist.

Damit wir sicherstellen, dass unser neues Datenbankfeld immer vorhanden ist nutzen wir in der metadata.php das Events Array.

Genauer wir benutzen die Event Methode onActivate um festzulegen welche Routine ausgeführt werden soll wenn das Modul aktiviert wird.

Zusätzlich müssen mir noch eine eigene Klasse dem OXID Framework bekannt machen.

In unser eigenen Klassen können wir dann unsere onActivate definieren und das SQL hinterlegen welches beim Aktivieren des Moduls abgesetzt werden soll.

Key Learnings

  • Aufbau der metadata.php Datei kennen gelernt
  • Eigenes Admin Feld über Blocküberladung definiert
  • Eigenes Datenbanktabellenfeld über Modul Event angelegt

0 Antworten

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Feel free to contribute!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *