Allgemeines zur Modulentwicklung
Diese Informationen beschreiben die Entwicklung neuer Module für Contentpapst auf Basis des neuen objektorientieren Ansatzes. Contentpapst verwendet hierbei Klassen und deren Vorteile wie Ableitung, Vererbung und Wiederverwendbarkeit. Sie sollten sich also gut mit Klassen auskennen, um damit arbeiten zu können.
Weitere Seiten:
Jedes Modul in Contentpapst, welches den objektorientierten Ansatz verwendet, besteht aus mindestens drei Klassen, die in jeweils eigenen Dateien gespeichert werden:
-
class.base.php
Beherbergt die Klasse "contentpapst_[MODULNAME]". Diese stellt grundlegende Methoden zum Objekthandling bereit und wird daher u.a. von den anderen Klassen des Modules aber auch extern genutzt.
-
class.admin.php
Die Klasse "contentpapst_gui_[MODULNAME]" generiert den Administrationsbereich des Modules mit allen Formularen, Menüs usw.
-
class.index.php
Diese Klasse heißt ebenfalls "contentpapst_gui_[MODULNAME]". Jedoch wird diesmal das Frontend, d.h. der öffentlich zugängliche Bereich generiert.
Wenn Sie sich jetzt testweise einige derart aufgebaute Module anschauen, werden Sie sicherlich feststellen, dass sich die Klassennamen jeweils leicht unterscheiden. Denn zur besseren Unterscheidung muss "[MODULNAME]" immer durch den Verzeichnisnamen ersetzt werden, in dem das Modul liegt. Die Basis-Klasse des Modules "languages" heißt also dementsprechend "contentpapst_languages".
Zu beachten ist auch, dass die Klassen in den Dateien "class.admin.php" und "class.index.php" von der Klasse "contentpapst_[MODULNAME]" abgeleitet werden müssen (über "... extends contentpapst_[MODULNAME]"), damit deren Methoden genutzt werden können.
Benötigt werden weiterhin die folgenden Dateien / Ordner für jedes Modul:
-
config.php
Zentrale Konfigurationsdatei für das Modul mit wesentlichen Einstellungen (u.a. Installation notwendig (j/n), Versionsnummer, Name und Informationen zum Autor).
-
class.webservices.php
Die Klasse "contentpapst_webservices_[MODULNAME]" ermöglicht den Zugriff auf die Daten des Modules über XML-Webservices.
-
index.html
Leere HTML-Datei um den direkten Aufruf des Ordners im Browser zu verhindern.
-
languages/[SPRACHE]/index.php
Für jede im System vorhandene Sprache muss eine entsprechende Sprachdatei in den Unterordnern vorhanden sein.
-
Ordner "images" und "templates"
In diesen beiden Ordnern sollten die vom Modul genutzten Grafiken und Vorlagen untergebracht werden.
In der zentralen Konfigurationsdatei für jedes Modul werden wichtige Einstellungen und Informationen festgehalten. Die Datei muss als "config.php" im Hauptordner des Modules abgelegt werden.
<?php
$module_config["example"]["name"] = "example";
$module_config["example"]["version"] = "1.0";
$module_config["example"]["date"] = "01.03.2011";
$module_config["example"]["author"] = "sandoba.de medien agentur";
$module_config["example"]["email"] = "contact@sandoba.de";
$module_config["example"]["website"] = "http://www.sandoba.de";
$module_config["example"]["image"] = "";
$module_config["example"]["status"] = "1";
$module_config["example"]["install"] = "0";
$module_config["example"]["show_list"] = "0";
?>
Der Administrationsbereich eines Modules wird über die Datei "class.admin.php" erstellt. Auch dies ist eine Klasse (genauere Informationen auch unter "Aufbau des Konstruktors").
<?php
class contentpapst_gui_example extends contentpapst_example {
var $module_configuration;
var $module_language;
/*
class contentpapst_gui_example::contentpapst_gui_example
Konstruktur, dient der Initialisierung der Klasse und einiger Variablen.
*/
function contentpapst_gui_example() { }
/*
class contentpapst_gui_example::install
SQL-Befehle und sonstige Anweisungen zur Installation des Modules.
*/
function install() { }
/*
class contentpapst_gui_example::uninstall
SQL-Befehle und sonstige Anweisungen zur Deinstallation des Modules.
*/
function uninstall() { }
}
?>
Die Aufteilung in verschiedene Klassen bietet die Möglichkeit, einzelne Methoden in anderen Bereichen wiederzuverwenden, ohne dass diese erneut in einer separaten Datei gespeichert werden müssten. Dies spart Zeit, da Änderungen nur einmal durchgeführt werden müssen. Zudem erhöht es die Übersichtlichkeit, da die Basisklasse für jedes Modul in der Datei "class.base.php" gespeichert ist. Wenn Sie eine neue Klasse erstellen, die auf die Methoden der Basisklasse eines Modules zurückgreifen soll, dann müssen Sie die Datei "class.base.php" per "include_once()" einbinden und die neue Klasse von der Basisklasse ableiten ("... extends contentpapst_[MODULNAME]").
<?php
class contentpapst_example {
/*
class contentpapst_example::admin_main_menu
Liefert die Navigationspunkte für die Haupt- und Unternavigation oben im Administrationsbereich zurück.
*/
function admin_main_menu() {}
/*
class contentpapst_example::admin_left_menu
Liefert die Navigationspunkte für die Navigation links im Administrationsbereich zurück.
*/
function admin_left_menu() {}
/*
class contentpapst_example::canonical_url
Liefert die Canonical-URL für eine bestimmte Seite in diesem Modul zurück (die aktuelle URL wird automatisch genutzt).
Aufruf: $GLOBALS["cpmodule"]->active->canonical_url();
*/
function canonical_url() {}
/*
class contentpapst_example::frontend_editing
Liefert die Optionen für das Frontend-Editing einer bestimmten Seite in diesem Modul zurück.
Aufruf: $GLOBALS["cpmodule"]->example->frontend_editing();
*/
function frontend_editing() {}
/*
class contentpapst_gui_example::logging
Liefert die formatierten Meldungen für die Log-Einträge zu diesem Modul zurück.
Aufruf: $GLOBALS["cpmodule"]->example->logging(array("[OPTIONS]"));
*/
function logging() {}
/*
class contentpapst_gui_example::rewrite_rules
Liefert die RewriteRules für die Umwandlung der Suchmaschinenfreundlichen URLs in die dynamischen URLs in diesem Modul zurück.
Aufruf: $GLOBALS["cpmodule"]->example->rewrite_rules());
*/
function rewrite_rules() {}
/*
class contentpapst_gui_example::url
Liefert die URL für eine bestimmte Seite in diesem Modul zurück.
Aufruf: $GLOBALS["cpmodule"]->example->url("[TYPE]", array("[OPTIONS]"));
*/
function url() {}
/*
class contentpapst_gui_example::xml_sitemap
Liefert die Einträge für die XML-Sitemap für dieses Modul zurück.
Aufruf: $GLOBALS["cpmodule"]->example->xml_sitemap("[LANGUAGE]");
*/
function xml_sitemap() {}
}
?>
Der öffentliche Bereich eines Modules wird über die Datei "class.index.php" erstellt. Auch dies ist eine Klasse (genauere Informationen auch unter "Aufbau des Konstruktors").
<?php
class contentpapst_gui_example extends contentpapst_example {
var $module_configuration;
var $module_language;
/*
class contentpapst_gui_example::contentpapst_gui_example
Konstruktur, dient der Initialisierung der Klasse und einiger Variablen.
*/
function contentpapst_gui_example() {
GLOBAL $file, $lang, $mode;
$this->module_language = module_language($file) + $lang;
$this->module_configuration["functions"] = array(
"main"=>array("do_main", array("show"))
);
}
/*
class contentpapst_gui_example::metatags
Liefert die Metatags einer bestimmten Seite in diesem Modul zurück.
*/
function metatags() {}
/*
class contentpapst_gui_example::search
Liefert die Konfiguration für die Volltextsuche in diesem Modul zurück.
*/
function search() {}
##################################################################
/*
class contentpapst_gui_example::do_main
*/
function do_main($show) {
// Einzelne Methoden...
}
}
?>
Weitere Seiten:
<< zurück zur Startseite der Dokumentation