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.

Ü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:

  1. Modulverzeichnis erstellen: /modules/mein_modul/
  2. Hauptdatei erstellen: index.php
  3. Sprachdateien im Verzeichnis language/ hinzufügen
  4. Admin-Oberfläche in admin/index.php erstellen
  5. 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'));