Eigene Module programmieren

Fast jeder Kunde hat mindestens einen Sonderwunsch der mit HTML nicht umsetzbar ist. Dann bietet sich eine Lösung mit PHP an. Im Gegensatz zu anderen Systemen muß man im Webutler bei der Programmierung einer Erweiterung nicht allzuviel beachten.

Include

Eine Erweiterung wird einfach per include in eine Seite geladen. Damit ist die Erweiterung ein Teil der Seite und alle Pfade der Erweiterung müssen entsprechend angepasst werden (modules/__MODULVERZEICHNIS__/...).

Links und GET-Parameter

Eine Webutler-Seite wird mit index.php?page=__SEITENNAME__ aufgerufen. Das heißt alle Links einer Erweiterung müssen auch mit index.php?page=__SEITENNAME__ beginnen. Weitere Parameter werden mit &var=wert angehängt. Wer die SEO-URLs benutzt und mehr als 7 GET-Variablen benötigt kann in der globalvars.php die Variable $webutler_config['urlgetvars'] erhöhen und in der Root-htaccess die RewriteRules ergänzen.

Modul-Suchplugin

Ein eigenes Modul kann in die Webutler-Suchfunktion integriert werden. Dafür muß die Datei search.php existieren und in der search.php die Funktion searchinmodcontent__MODULVERZEICHNIS__. Die Funktion muß ein Array mit Titel, Inhalt und URL zurück liefern. Beispiel:

$result = array(
'title' => 'Seitentitel',
'contents' => 'Seiteninhalt mit Suchbegriff',
'url' => 'index.php?page=__SEITENNAME__&var=wert'
);
return $result;

Damit die Webutlersuche das Modul auch findet muß es noch in die Datei /settings/searching.php eingetragen werden.

Modul-Sitemap

Ein eigenes Modul in die Sitemap aufzunehmen funktioniert nach dem gleichen Schema, wie die Integration in die Suche. Die Datei sitemap.php muß im Modulverzeichnis existieren und in der Datei die Funktion modulessitemap__MODULVERZEICHNIS__. Die Funktion muß ein Array mit den URLs des Modules liefern:

$result = array(
[0] => 'index.php?page=__SEITENNAME__&var1=wert1',
[1] => 'index.php?page=__SEITENNAME__&var1=wert2',
[2] => 'index.php?page=__SEITENNAME__&var1=wert3&var2=wert1'
);
return $result;

Außerdem muß das Modul in der Datei /settings/sitemaps.php eingetragen werden.

Headerdaten

Javascripte und CSS-Dateien eines Moduls können mittels $webutlercouple->autoheaderdata[] in den Header der Seite geladen werden.

$webutlercouple->autoheaderdata[] = '<link href="modulestyles.css" rel="stylesheet" type="text/css" />';
$webutlercouple->autoheaderdata[] = '<script src="modulescript.js"></script>';

Der Titel der Webutler-Seite kann mit der Variablen $webutlercouple->setnewtitlefrommod durch einen spezielleren Titel aus dem Modul ersetzt werden.

$webutlercouple->setnewtitlefrommod = 'Mein neuer Seitentitel';

Modul-Login

Wenn das Modul einen Administrationsbereich besitzt/bekommen soll, gibt es mehrere Möglichkeiten für einen Login:

  1. Für den automatischen Login des Seitenbetreibers kann mit der Funktion $webutlercouple->checkadmin() geprüft werden, ob die Sessiondaten des Administrators gesetzt sind.
  2. Alternativ kann eine eigene Loginverwaltung für Benutzer, die nur Zugriff auf das Modul erhalten sollen, erstellt werden.

Für die Realisierung eines Lese- und/oder Schreibzugriffs eingeloggter Webutler-User können folgende Sessiondaten eines Benutzers abgefragt werden:

Gruppen-ID: $_SESSION['userauth']['groupid']
ID des Benutzers: $_SESSION['userauth']['userid']
Benutzername: $_SESSION['userauth']['username']
eMail-Adresse: $_SESSION['userauth']['usermail']

In der Benutzerverwaltung können User aktiv, gesperrt oder gelöscht geschaltet werden. Wenn der Status in einem Modul benötigt wird, muß dieser in der User-DB abgefragt werden. Rückgabewerte:

Aktiv: status='enabled'
Gesperrt: status='disabled'
Gelöscht: status='deleted'