Clansuite Community Forum

 
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Ein HalloWelt Modul mit Clansuite  (Gelesen 384 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« am: März 03, 2010, 09:13:04 »

Wie erstellt man ein neues Modul?

Das Beispiel zeigt die Erstellung eines "HalloWelt" Moduls.
Wir beginnen mit einem sehr einfach Standard in der Programmierung:
Der Ausgabe von "HalloWelt!"

1) Verzeichnis des neuen Moduls erstellen

Im ersten Schritt erstellen wir ein neues Modulverzeichnis.
Alle Module liegen sind Unterverzeichnisse von "/modules".
Das Verzeichnis eines einzelnen Moduls ist daher /modules/"modulename".
Nun erstellen wir in /modules ein Verzeichnis "/hallowelt".

2) Ein Modul kann ein Backend und ein Frontend haben.

In dem gerade erstellten Verzeichnis legen wir nun Dateien an.

Der Dateiname für ein Frontend-Modul ist: "modulename".module.php
Der Dateiname für ein Backend-Modul ist: "modulename".admin.php

Wir erstellen ein Frontend-Modul mit dem Namen "hallowelt.module.php".

3) Inhalt einer Moduledatei

Jedes Modul erweitert die Basisklasse für Module (extends Clansuite_ModuleController). Damit stehen die Methoden der Basisklasse allen erweiternden Modulen zur Verfügung. D.h. wir können in unserem "Module_HalloWelt" auch die Methoden aus "Clansuite_ModuleController" einsetzen.
Bleibt noch zu klären, was "implements Clansuite_Module_Interface" bedeutet. Das Clansuite_Module_Interface ist die abstrakte Beschreibung dafür, welche Methoden ein Modul haben soll, die sogenannte Schnittstellendefinition.

Beispiel:
Code:
class Module_HalloWelt extends Clansuite_ModuleController implements Clansuite_Module_Interface
{

}

4) Anlegen einer Action

In der gerade erstellten Klasse "Module_HalloWelt" fügen wir nun eine neue Methode ein.
Die Actionmethoden haben immer den Sichtbarkeitsbereich "public".

Code:
public function action_hallowelt()
{
   echo 'Hallo Welt!';
}

Der PHP Befehl "echo" bewirkt eine direkte Ausgabe der nachfolgenden Zeichenkette.

Fertig!
Nun können wir unser Modul aufrufen.
Der Aufruf dieser Action erfolgt über "index.php?mod=hallowelt&action=hallowelt".
Abstrakt lautet der Aufruf also "index.php?mod=modulename&action=actionname".
Der Parameter "?mod=" gibt immer das Modul an und der Parameter "&action=" gibt die Action an.

Es sollte "Hallo Welt!" ausgegeben werden.



5) Smarty verwenden

Code:
public function action_hallowelt()
{
   $view = $this->getView(); # (1)
   $view->assign('inhalt', 'HalloWelt!'); # (2)
   $this->prepareOutput(); # (3)
}

Erläuterungen:
1) Die Methode $this->getView() holt standardmäßig das Smarty Objekt.
Dafür könnte man auch $view = $this->getView('smarty') schreiben.
2) Das Smarty Objekt verfügt über die Methode assign().
Hiermit werden Templateplatzhalter mit einem Inhalt belegt.
3) Mittels der Methode prepareOutput() wird die Ausgabe veranlasst.

Die entsprechende Smarty Templatedatei hat den folgenden Inhalt:
Code:
{$inhalt}

Ein Smarty Platzhalter beginnt immer mit geschweiften Klammern "{$", gefolgt vom Platzhalternamen und einer abschließend geschweiften Klammern "}". Zusammengefasst: {$platzhaltername}.

Das Verzeichnis für Templates eines Modules ist immer "/modules/modulname/templates/".
Die entsprechende Templatedatei für unsere Action lautet "/modules/modulname/templates/action_hallowelt.tpl".
Es gibt also eine direkte Verbindung zwischen dem Namen der Action und dem Templatenamen.
Die action_hallowelt() im Modul hat die zugehörige Templatedatei "action_hallowelt.tpl" im Verzeichnis "/templates".
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines

Google visited last this page Mai 23, 2012, 11:02:13