Eigene Module erstellen

Version 1.7.1

1 Einführung

1.1 Was ist ein Modul?

Ein Modul ist eine Zusammenfassung von Inhaltselementen, Templates, Stylesheets, Programmcode (Controller und/oder Models) und befindet sich als Verzeichniss zusammengefasst im application-Ordner innerhalb des Simploo CMS. Jedes Modul kann folgende Elemente und/oder Funktionen enthalten:

  • Zend Framework Controller
  • Models für z.B. Datenbankabfragen
  • View-Helfer
  • Konfigurationsdateien zum Erweitern der Inhalts- oder Seitenelemente
  • Templates (HTML, JS, CSS, Bilder,...)

Über Module können Sie Ihr Simploo CMS also bequem erweitern und zum Beispiel neue Inhaltselemente, neue Templatefunktionen (View-Helfer) oder eigene Datenbankabfragen zur Verfügung stellen.

1.2 Installation und Aktivierung

Derzeit können Module noch nicht automatisch über das Simploo CMS Backend installiert werden. Um ein Modul nutzen zu können, müssen Sie den Modulordner z.B. per FTP in das Verzeichnis applicationconfig/custom/base.ini.php laden und diesen Ordnernamen dem Simploo CMS in der Konfigurationsdatei bekanntmachen:

[general]
modules[] = "IHR_MODULORDNER"

1.3 Die Verzeichnis- und Dateistruktur eines Moduls

Ein Modul besitzt folgende Standard-Verzeichnisstruktur und wird im folgenden Kapitel näher erläutert.

  • Controllers
  • Models
  • Config
  • Languages
  • Templates
  • Views

Innerhalb des Modulordner sollte sich noch eine Datei config.inc.php mit folgendem Inhalt befinden. Diese Datei wird derzeit noch nicht genutzt, dient aber der Zukunftskompatibilität (Installation über Simploo CMS Backend):

name = "Googleroute"
description = "Inhaltselement zum Anzeigen einer Google Maps inklusive Routenplanung"
author = "Simploo GmbH (www.simploo.de)"
version = "1.0.0"

1.4 Woher bekomme ich Module?

Bestehende Module zum Simploo CMS erhalten Sie unter www.simploo.de/cms-module-download-kostenlos als Download. Diese Vorlagen können Sie gerne als Ansatzpunkt für Ihre eigenen Module verwenden. Den Aufbau und die Struktur erklären wir Ihnen in dennächsten Kapiteln.

2 Aufbau und Struktur

2.1 Konfigurationsdateien

Im Ordner Config können Sie eigene Konfigurationsdateien anlegen und die bestehenden überschreiben. Folgende zwei Konfigurationsdateien werden innerhalb von Modulen derzeit unterstützt.

2.1.1 nodes.ini.php

In dieser Konfigurationsdatei können Sie zum Beispiel in den Seiteneigenschaften neue Felder hinzufügen. Die nodes.ini.php erweitertet dabei die Einstellungen in den Konfigurationsordnern config/system und config/custom.

2.1.2 content.ini.php

In dieser Konfigurationsdatei können Sie zum Beispiel eigene Inhaltselemente erstellen. Die content.ini.php erweitertet dabei die Einstellungen in den Konfigurationsordnern config/system und config/custom.

2.2 Sprachdateien

Im Verzeichnis Languages können Sie eigene Sprachdateien anlegen, die die Werte aus den Sprachdateien im Ordner languages/system und languages/custom entsprechend überschreiben oder erweitern. Die Dateien müssen im Dateinamen mit dem Ländercode übereinstimmen - derzeit wird nur die Datei de.php unterstützt - und einen Array mit den Übersetzungen zurückgeben (als Beispiel siehe languages/system). Diese Übersetzungen können dann in einem Template über folgenden View-Helfer angerufen werden:

<?php echo $this->translate('FIRSTNAME');?>

2.3 Templates

Natürlich können Sie auch innerhalb eines Moduls eigene Templates verwenden. Intern integrieren sich diese Templates in das Fallback-System des Simploo CMS. Das System lädt angeforderte Templates mit einem oder mehreren integrierten Modulen aus den entsprechenden Ordnern in folgender Reihenfolge:

  • benutzerdefinierter Layout-Ordner
    - z.B templates/frontend/custom
  • Module-Templates
    - z.B. application/Module1/Templates
  • Systemtemplate-Ordner
    - templates/frontend/sicore
    - templates/frontend/sibase

Sie können innerhalb Ihres Moduls also jedes beliebige Template aus den beiden Systemordnern überschreiben und anpassen, oder natürlich auch eigene Templates definieren. Auf der anderen Seite können Modultemplates wiederum in ihrem benutzerdefinierten Layout-Ordner überschrieben und angepasst werden.

2.4 View-Helfer

Ihre Templates können Sie durch Funktionen erweitern - sogenannte View-Helfer. Diese View-Helfer können Sie auch in Ihrem Modul verwenden, nutzen Sie dazu den Ordner Views/Helpers. Um beispielsweise "Hello World" in einem Template auszugeben, könnten Sie folgenden View-Helfer schreiben.

application/Modul1/Views/Helpers/HelloWorld.php
class Modul1_Views_Helpers_HelloWorld extends Zend_View_Helper_Abstract
{
public function helloWorld()
{
return 'Hello World';
}
}

In Ihrem Template rufen Sie den neuen View-Helfer dann wie folgt auf:

<h1><?php echo $this->helloWorld();?></h1>

2.5 Controller und Models

Ihr Modul kann natürlich auch Controller und Models enthalten.

2.5.1 Controller

Controller legen Sie dabei im Ordner Controllers ab. Diese Dateien sollten folgenden Aufbau haben.

application/Modul1/Controllers/FooController.php
class Modul1_FooController extends Sifront_Controllers_Simploo
{
public class barAction()
{
//TODO
}
}

Die entsprechende Action können Sie zum Beispiel über Ihren Browser abrufen:

  • www.meinedomain.de/modul1/foo/bar

2.5.2 Models

Sollten Sie umfangreichere Business-Logik oder Datenbankabfragen haben, so lagern Sie diese am Besten in Models im Ordner Models aus. Vom Aufbau und der Ordnerstruktur darin orientieren Sie sich dabei am besten an der Struktur in application/Sicore/Models. Sollten Sie beispielsweise eine eigene Datenbankabfrage benötigen, können Sie dies nach dem Simploo CMS Standard wie folgt realisieren.

application/Modul1/Models/Server/Db/Persons.php
class Modul1_Models_Server_Db_Persons extends Sicore_Models_Server_Db
{
public function getAll()
{
$sql = "SELECT * FROM persons";
$results = $this->_con->fetchAll($sql);
//TODO
}
}

Natürlich können Sie auch alle weiteren Zend_DB-Funktionen an dieser Stelle verwenden.

3 Anhang

3.1 Download Modulvorlage

Anbei erhalten Sie eine Standard-Verzeichnisstruktur für Ihr eigenes Modul, die Sie entsprechend Ihren Bedürfnissen anpassen und erweitern können: