Wie erstelle ich ein Modul?

Module sind für die Entwicklung in eZ Publish unabdingbar, ohne diese Funktion wären viele Entwicklungen gar nicht möglich. Was zeichnet ein Modul aus und wie erstelle ich Module? 

Anwendungsbereiche für ein Modul

  1. eigene URL
  2. geschlossener Bereich

Viele Wege führen nach Rom, doch nur wenige sind sicher und schnell. Dieses schöne Bonmot sagt es sehr treffend.

Ich nutze Module hauptsächlich für:

  • Ajax Anforderungen (nachladen von Inhalt in die Seite)
  • Weiterleitungen
  • Speziallösungen, die keine Klasse benötigen
  • kleine Importe und Exporte
  • Landingpages (was wiederum zu einer Weiterleitung führt)

Wie oben erwähnt kann ein Modul auch ein geschlossener Bereich sein – das heißt wir können über die Rechte definieren wer das Modul benutzen darf. Das eröffnet viele Möglichkeiten, gerade wenn man einen schnellen Export/Import braucht. Dabei spart man sich zum Beispiel lästige IP/Passwort-Abfragen.

Module anlegen

Doch alles der Reihe nach, zuerst müssen wir mal das Modul anlegen – Aufwand max. 5 Minuten.

  1. unter extension/your_project/modules legen wir ein eindeutiges Verzeichnis an (Beispiel, overlay)
  2. innerhalb
    1. module.php anlegen (Pflichtaufgabe)
    2. overlay.php (Beispielname)
  3. dann kopieren wir folgenden Code in die Datei module.php
$Module = array( 'name' => 'overlay' );

$ViewList['read'] = array(   'script'    => 'overlay.php',
                                    'functions' =>; array("read"),
                                    'params'           => array(),
                                    'unordered_params' => array()
                                 );

Mit diesen Einstellungen konfigurieren wir unser Modul. Dabei können wir noch weitere  Parameter definieren, damit wir im Modul selbst komfortabel über einen Array darauf zurückgreifen können. Hierfür müssen wir das Array „unordered_params“  füllen.

'unordered_params'  => array(
    	'node_id' => 'nodeID')

Der Key ist der interne Aufruf, der Wert wäre in der SEO URL sichtbar z.B.: http://yoururl.com/overlay/read/nodeID/87633

Erklärung der URL:

  • overlay => Modulname
  • read => Modulfunktion
  • nodeID => Parameter
  • 87633 => Wert von nodeID

So nun brauchen wir noch 2 weitere Einstellungen:
Falls im Projekt unter settings/ noch keine module.ini.append.php vorhanden ist, legen wir diese nun an.

[ModuleSettings]
ExtensionRepositories[]=deineErweiterung
ModuleList[]=overlay

Nun fehlen nur noch die Rechte. Diese können natürlich über die Rechteverwaltung definiert werden. Alternativ können sie auch direkt über die site.ini.append.php in deinem Projekt oder in der override/ gesetzt werden.

[RoleSettings]
PolicyOmitList[]=overlay/read

So, nun sind alle Rechte und Einstellungen konfiguriert und es steht einem Aufruf nichts mehr im Wege. Eine Sache noch: Cache leeren und Autoload durchführen.

Häufige Code-Abschnitte für ein Modul

Zum Abschluss  hier noch ein paar wichtige Code-Abschnitte, die im Modul oft benötigt werden.

Aufruf eines Templates:

require_once('kernel/common/template.php');
$tpl = templateInit();
$tpl->setVariable('node', $node);
echo $tpl->fetch('design:overlay/full.tpl');

Ausgabe steuern:

// stoppt das Modul, es erfolgt nur die Ausgabe die oberhalb angegeben ist.
eZExecution::cleanExit();

oder

// Der Wert in $result ist im pagelayout.tpl unter {$module_result.content}
// verfügbar.
$Result['content']  = $result;
$Result['Module']   = $Params['Module'];

David Hohl

Seit 1995 Entwickler und Projektleiter. Langjährige Erfahrung mit eZ Publish. War von 2012 bis 2014 bei silver.solutions als Entwickler, Konzeptionen und Projektleiter für eZ Publish Projekte verantwortlich.

2 thoughts on “Wie erstelle ich ein Modul?

  1. Schöner kleiner Beitrag, schaue mir gerade die ‚Tip‘ Verlinkungen von share.ez.no durch. Wieder einmal einen Blog mehr gefunden den ich vorher noch nicht kannte.

    Bei folgendem werden bei Dir scheinbar die Entities statt eines > dargestellt:
    $tpl->setVariable(’node‘, $node);
    echo $tpl->fetch(‚design:overlay/full.tpl‘);

    beste Grüße
    scrieler
    ————————————
    irc #ezpublish on freenode

Schreibe einen Kommentar

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