Neues Modul

Aus Contrexx Wiki (Deutsch)

Wechseln zu: Navigation, Suche
Portale

Inhaltsverzeichnis

[bearbeiten] Guideline zum Erstellen eines neuen Contrexx CMS Modul

Dieses Tutorial führt Sie in sechs Schritten zur Erstellung eines neuen Contrexx Modul. Die Comvation AG ist gerne bereit, Sie für die Erstellung von neuen Modulen oder die Erweiterung von bestehenden Modulen zu entschädigen.

[bearbeiten] Modulverzeichnis anlegen

Im Verzeichnis /core_modules/ (falls das Modul ein Core-Modul ist) oder /modules/ einen neuen Ordner mit dem Namen des Modules anlegen.

[bearbeiten] Moduldateien anlegen

2. Die PHP-Dateien index.class.php und admin.class.php im Verzeichnis anlegen, welches Sie im vorhergehenden Schritt erstellt haben. In dieser Datei demo_module.zip finden Sie den allgemeinen Grundaufbau der index.class.php und admin.class.php, sowie die Verzeichnisstruktur eines Modules.

[bearbeiten] Modulcode in index.php Dateien hinzufügen

Nun muss der Code zum Aufrufen des Moduls in den Dateien /index.php und /admin/index.php eingebunden werden:


$modulespath Dies ist der Pfad zur index.class.php oder admin.class.php

[bearbeiten] Frontend Datei index.php

Passen Sie folgenden case-Code an und fügen Sie ihn bei der switch-Anweisung switch ($section){ ein:

[bearbeiten] PHP Code bei Core-Modulen


case "demo_module":
$modulespath = "core_modules/demo_module/index.class.php";
if (file_exists($modulespath)) require_once($modulespath);
else die ($_CORELANG['TXT_THIS_MODULE_DOESNT_EXISTS']);
$objDemoModule = &new demoModule($page_content);
$objTemplate->setVariable('CONTENT_TEXT', $demoModule->getPage());
break;

[bearbeiten] PHP Code bei normalen Modulen


case "demo_module":
$modulespath = "modules/demo_module/index.class.php";
if (file_exists($modulespath)) require_once($modulespath);
else die ($_CORELANG['TXT_THIS_MODULE_DOESNT_EXISTS']);
$objDemoModule = &new demoModule($page_content);
$objTemplate->setVariable('CONTENT_TEXT', $objDemoModule->getPage());
break;

[bearbeiten] Backend Datei /admin/index.php

Passen Sie folgenden case-Code an und fügen Sie ihn bei der switch-Anweisung switch($cmd) { ein:

[bearbeiten] PHP Code bei Core-Modulen


case "demo_module":
$modulespath = ASCMS_CORE_MODULE_PATH . "/demo_module/admin.class.php";
if (file_exists($modulespath)) require_once($modulespath);
else die($_CORELANG['TXT_THIS_MODULE_DOESNT_EXISTS']);
$subMenuTitle = $_CORELANG['TXT_DEMO_MODULE'];
$objDemoModule = &new demoModule();
$objDemoModule->getPage();
break;

[bearbeiten] PHP Code bei normalen Modulen


case "demo_module":
$modulespath = ASCMS_MODULE_PATH . "/demo_module/admin.class.php";
if (file_exists($modulespath)) require_once($modulespath);
else die($_CORELANG['TXT_THIS_MODULE_DOESNT_EXISTS']);
$subMenuTitle = $_CORELANG['TXT_DEMO_MODULE'];
$objDemoModule = &new demoModule();
$objDemoModule->getPage();
break;

[bearbeiten] Sprachvariablen

[bearbeiten] Modul Sprachvariablen

Für die Sprachvariablen muss die Verzeichnisstruktur im Modulverzeichnis erstellt werden:

/modulname/lang
/de
/en
/usw.

Anschliessend muss in jedem Sprachverzeichnis (de; dk; en; fr; it) noch eine Datei namens backend.class.php und frontend.class.php angelegt werden. Das Aussehen einer backend.php und frontend.php Sprachdatei kann auch aus einem Beispiel aus dem beigefügten Zip-Archiv entnommen werden.

[bearbeiten] Allgemeine Sprachvariablen

Die Core Sprachvariablen
($_CORELANG)
werden in den Sprachdateien im Verzeichnis /lang abgelegt.

[bearbeiten] Backend Vorlagen

Erstellen Sie ein Verzeichnis /Modulname/template im Modulverzeichnis. In diesem Verzeichnis werden die XHTML Vorlagen für die Seiten des Backends (Administration) abgelegt.

[bearbeiten] Datenbank Einträge

[bearbeiten] Modul Eintrag

In der Datenbank Tabelle contrexx_modules einen neuen Modul Eintrag erstellen.

   Felder:
       * id -> Id des Modules
       * name -> Systemname des Modules (Bsp.: shop, gallery, media)
       * description_variable -> Beschreibung (eine Core-Sprachvariable) des Modules. Diese im Modul Manager angezeigt.
       * status -> 'y' = 'aktiv'; 'n' = inaktiv
       * is_required -> Wird dieses Feld auf 1 gesetzt, so kann das Modul im Modul Manager nicht modifiziert werden.
       * is_core -> Definiert ob das Modul ein Core-Modul ist oder nicht.

[bearbeiten] Modulnavigations Eintrag

In der Datenbank Tabelle contrexx_backend_areas die neuen Moduleinträge für die Modul Navigation und Funktionen (siehe auch Kap. Funktionen schützen) erstellen.

   Felder:
       * area_id -> Leer lassen (Autoinkrement-Wert!)
       * parent_area_id -> 0 falls der Eintrag ein Hauptmenupunkt ist, ansonsten die area_id des Übergeordneten Eintrages
       * type -> 'group' für einen Hauptmenupunkt; 'navigation' für einen Navigationspunkt; 'function' für eine Funktion
       * area_name -> Beschreibung des Menu-/Navigationspunkt oder der Funktion (muss eine Core-Sprachvariable sein)
       * is_active -> 1: der Menu-/Navigationspunkt oder Funktion wird angezeigt; 0: Eintrag wird nicht angezeigt
       * uri -> Definiert den URI für einen Navigationspunkt
       * target -> Definiert den Seiten-Target (_blank, _self, ...) eines Navigationspunktes
       * module_id -> Die Modul-ID vom zugehörigen Modul
       * order_id -> Sortierungs-ID. Wird für die Sortierung der Menu-/Navigationspunkte benutzt.
       * access_id -> Als Sicherheits-ID muss eine einmalige ganzzahlige Zahl verwendet werden. Sie darf nicht ein zweites Mal in der Tabelle contrexx_backend_areas, sowie auch nicht in den Modul-Access Tabellen als access_id verwendet werden.

[bearbeiten] (Optional) Modulfunktionen schützen

Um spezielle Modulfunktion nur für definierte Benutzergruppen zugänglich zu machen, muss die Funktion entweder in der Tabelle contrexx_backend_areas (für allgemeine Funktionen) oder in der Tabelle contrexx_module_%MODULNAME%_access (für modulspezifische Funktionen) aufgelistet sein.

Eine Zugriffstabelle für ein Modul hat folgende Struktur:


CREATE TABLE `contrexx_module_%MODULNAME%_access` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(64) NOT NULL default '',
`description` varchar(255) NOT NULL default '',
`access_id` int(11) unsigned NOT NULL default '0',
`type` enum('global','frontend','backend') NOT NULL default 'global',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
   Felder:
       * description -> Beschreibung der Funktion. Hier zu kann auch eine Sprachvariable eingegeben werden, welche dann bei der Konfiguration der Gruppenberechtigungen angezeigt wird.
       * access_id -> Hier wird eine einmalige Sicherheits-ID definiert, mit der dann über die Methode Permission::checkAccess() die Zugriffsberechtigung eines Benutzer geprüft wird.
       * type -> Definiert ob die Funktion nur im Backend- oder im Frontendbereich oder in beiden Bereichen genutzt werden kann.

[bearbeiten] Weitere Hilfeleistungen

Das Contrexx Entwicklerteam gibt Ihnen gerne weitere Auskünfte. Bitte Fragen von allgemeinem Interesse direkt ins Contrexx Forum stellen.

Persönliche Werkzeuge
Andere Sprachen