Module erstellen
SLAED CMS basiert auf einer modularen Architektur, bei der jedes Modul eine separate Funktionalität darstellt. Dieser Leitfaden führt Sie durch die Erstellung benutzerdefinierter Module für Ihre SLAED CMS-Installation.
Inhaltsverzeichnis
Überblick über das Modulsystem
SLAED CMS-Module können unabhängig aktiviert, deaktiviert und konfiguriert werden:
Modulprinzipien
- Unabhängigkeit - Jedes Modul arbeitet autonom
- Standardisierung - Einheitliche API für alle Module
- Sicherheit - Eigene Zugriffsrechte für jedes Modul
- Skalierbarkeit - Möglichkeit, neue Module hinzuzufügen
Modulstruktur
modules/module_name/
├── index.php # Hauptmoduldatei
├── admin/ # Administrations-Oberfläche
│ └── index.php
└── language/ # Sprachdateien
├── lang-english.php
├── lang-russian.php
└── lang-german.php
Standardmodule
SLAED CMS wird mit wesentlichen Modulen geliefert:
Modul | Beschreibung | Funktionen |
---|---|---|
News | Nachrichtenveröffentlichungssystem | Kategorien, Kommentare, RSS |
Pages | Statische Inhalte | Hierarchische Struktur, Editor |
Forum | Diskussionssystem | Threading, Moderation, PM |
Shop | E-Commerce | Produkte, Bestellungen, Zahlungen |
Media | Galerie | Bilder, Videos, Diashows |
Entwicklung benutzerdefinierter Module
So erstellen Sie ein benutzerdefiniertes Modul:
- Modulverzeichnis erstellen:
/modules/mein_modul/
- Hauptdatei erstellen:
index.php
- Sprachdateien im Verzeichnis
language/
hinzufügen - Admin-Oberfläche in
admin/index.php
erstellen - Modul in der Datenbank registrieren
Hauptmoduldatei
<?php
if (!defined('MODULE_FILE')) die('Illegal file access');
// Sprachdatei einbinden
get_lang('mein_modul');
// Konfiguration einbinden
include('config/config_mein_modul.php');
// Prüfen, ob Modul aktiv ist
if (!is_active('mein_modul')) {
head();
echo setTemplateBasic('title', array('{%title%}' => _MODULE_DISABLED));
foot();
exit;
}
// Hauptmodullogik
$op = getVar('req', 'op', 'var');
switch($op) {
case 'view':
view_item();
break;
default:
show_main();
break;
}
function show_main() {
head();
echo '<h1>Mein Modul</h1>';
echo '<p>Modulinhalte...</p>';
foot();
}
function view_item() {
$id = getVar('req', 'id', 'num');
head();
echo '<h1>Element anzeigen '.$id.'</h1>';
foot();
}
?>
Sprachdatei
<?php
if (!defined('FUNC_FILE')) die('Illegal file access');
define('_MY_MODULE_TITLE', 'Mein Modul');
define('_MY_MODULE_DESCRIPTION', 'Modulbeschreibung');
define('_MY_MODULE_ADD', 'Hinzufügen');
define('_MY_MODULE_EDIT', 'Bearbeiten');
define('_MY_MODULE_DELETE', 'Löschen');
?>
Admin-Oberfläche
<?php
if (!defined('ADMIN_FILE')) die('Illegal file access');
// Admin-Rechte prüfen
if (!is_moder('mein_modul')) {
admin_access_denied();
exit;
}
$op = getVar('req', 'op', 'var');
switch($op) {
case 'add':
admin_add_item();
break;
case 'edit':
admin_edit_item();
break;
default:
admin_main();
break;
}
?>
Modul-API
Wichtige Modulfunktionen:
// Modulaktivität prüfen
function is_active($module, $view = '1') {
global $db, $prefix;
list($active) = $db->sql_fetchrow(
$db->sql_query("SELECT active FROM {$prefix}_modules WHERE title='{$module}'")
);
return ($active == $view);
}
// Modulkonfiguration abrufen
function get_module_config($module) {
include("config/config_{$module}.php");
return $conf;
}
// Modul-Admin-Rechte prüfen
function is_module_admin($module) {
return is_moder($module);
}
Modulregistrierung
Nach dem Erstellen eines Moduls registrieren Sie es in der Datenbank:
INSERT INTO {prefix}_modules (
title, description, active, view, blocks, blocks_c, mod_group
) VALUES (
'mein_modul', 'Modulbeschreibung', 1, 0, 1, 1, 0
);
Modulkonfiguration
Jedes Modul hat seine Konfigurationsdatei /config/config_modul.php
:
<?php
if (!defined('FUNC_FILE')) die('Illegal file access');
$conf_module = array(
'items_per_page' => '10', // Elemente pro Seite
'allow_comments' => '1', // Kommentare erlauben
'moderation' => '0', // Vor-Moderation
'rss_enable' => '1', // RSS-Feed
'seo_urls' => '1', // SEO-URLs
'upload_enable' => '1', // Datei-Uploads
'rating_enable' => '1', // Bewertungssystem
);
?>
Integration mit dem Kern
Verwendung von Systemfunktionen:
// Datenbankoperationen
global $db, $prefix;
$result = $db->sql_query("SELECT * FROM {$prefix}_meine_tabelle");
// Benutzerauthentifizierung
if (is_user()) {
// Code für authentifizierte Benutzer
}
// Vorlagenverwendung
echo setTemplateBasic('title', array('{%title%}' => $title));
// Variablen abrufen
$id = getVar('req', 'id', 'num');
$text = getVar('post', 'text', 'html');
// Datei-Uploads
upload_file('bild', 'uploads/mein_modul/', array('jpg', 'png'));