Module-FAQ
Module - Häufig gestellte Fragen
Abschnitt betitelt „Module - Häufig gestellte Fragen“Allgemeine Fragen und Antworten zu XOOPS-Modulen, Installation und Verwaltung.
Installation & Aktivierung
Abschnitt betitelt „Installation & Aktivierung“F: Wie installiere ich ein Modul in XOOPS?
Abschnitt betitelt „F: Wie installiere ich ein Modul in XOOPS?“A:
- Module-ZIP-Datei herunterladen
- Gehen Sie zu XOOPS Admin > Module > Module verwalten
- Klicken Sie auf “Durchsuchen” und wählen Sie die ZIP-Datei
- Klicken Sie auf “Hochladen”
- Das Modul wird in der Liste angezeigt (normalerweise deaktiviert)
- Klicken Sie auf das Aktivierungssymbol, um es zu aktivieren
Alternativ extrahieren Sie die ZIP-Datei direkt in /xoops_root/modules/ und navigieren Sie zum Admin-Panel.
Q: Module upload fails with “Permission denied”
Abschnitt betitelt „Q: Module upload fails with “Permission denied”“A: Dies ist ein Dateiberechtigungsproblem:
# Fix module directory permissionschmod 755 /path/to/xoops/modules
# Fix upload directory (if uploading)chmod 777 /path/to/xoops/uploads
# Fix ownership if neededchown -R www-data:www-data /path/to/xoopsSee Module Installation Failures for more details.
Q: Why can’t I see the module in the admin panel after installation?
Abschnitt betitelt „Q: Why can’t I see the module in the admin panel after installation?“A: Überprüfen Sie Folgendes:
- Modul nicht aktiviert - Klicken Sie auf das Augensymbol in der Modulliste
- Admin-Seite fehlt - Das Modul muss
hasAdmin = 1in xoopsversion.php haben - Sprachdateien fehlen - Benötigt
language/english/admin.php - Cache nicht geleert - Cache leeren und Browser aktualisieren
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*Q: How do I uninstall a module?
Abschnitt betitelt „Q: How do I uninstall a module?“A:
- Gehen Sie zu XOOPS Admin > Module > Module verwalten
- Deaktivieren Sie das Modul (klicken Sie auf das Augensymbol)
- Klicken Sie auf das Papierkorb-/Löschsymbol
- Löschen Sie den Modulordner manuell, wenn Sie eine vollständige Entfernung möchten:
rm -rf /path/to/xoops/modules/modulenameModule Management
Abschnitt betitelt „Module Management“Q: What’s the difference between disabling and uninstalling?
Abschnitt betitelt „Q: What’s the difference between disabling and uninstalling?“A:
- Deaktivieren: Deaktivieren Sie das Modul (klicken Sie auf das Augensymbol). Datenbanktabellen bleiben bestehen.
- Deinstallieren: Entfernen Sie das Modul. Löscht Datenbanktabellen und entfernt sie aus der Liste.
To truly remove, also delete the folder:
rm -rf modules/modulenameQ: How do I check if a module is properly installed?
Abschnitt betitelt „Q: How do I check if a module is properly installed?“A: Verwenden Sie das Debug-Skript:
<?php// Create admin/debug_modules.phprequire_once XOOPS_ROOT_PATH . '/mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Admin only');}
echo "<h1>Module Debug</h1>";
// List all modules$module_handler = xoops_getHandler('module');$modules = $module_handler->getObjects();
foreach ($modules as $module) { echo "<h2>" . $module->getVar('name') . "</h2>"; echo "Status: " . ($module->getVar('isactive') ? "Active" : "Inactive") . "<br>"; echo "Directory: " . $module->getVar('dirname') . "<br>"; echo "Mid: " . $module->getVar('mid') . "<br>"; echo "Version: " . $module->getVar('version') . "<br>";}?>Q: Can I run multiple versions of the same module?
Abschnitt betitelt „Q: Can I run multiple versions of the same module?“A: Nein, XOOPS unterstützt dies nicht nativ. Sie können jedoch:
- Eine Kopie mit einem anderen Verzeichnisnamen erstellen:
mymoduleundmymodule2 - Den dirname in den xoopsversion.php-Dateien beider Module aktualisieren
- Eindeutige Datenbanktabellennamen sicherstellen
Dies wird nicht empfohlen, da sie denselben Code teilen.
Module Configuration
Abschnitt betitelt „Module Configuration“Q: Where do I configure module settings?
Abschnitt betitelt „Q: Where do I configure module settings?“A:
- Gehen Sie zu XOOPS Admin > Module
- Klicken Sie auf das Einstellungs-/Zahnradsymbol neben dem Modul
- Konfigurieren Sie die Einstellungen
Einstellungen werden in der xoops_config-Tabelle gespeichert.
Zugriff im Code:
<?php$module_handler = xoops_getHandler('module');$module = $module_handler->getByDirname('modulename');$config_handler = xoops_getHandler('config');$settings = $config_handler->getConfigsByCat(0, $module->mid());
foreach ($settings as $setting) { echo $setting->getVar('conf_name') . ": " . $setting->getVar('conf_value');}?>Q: How do I define module configuration options?
Abschnitt betitelt „Q: How do I define module configuration options?“A: In xoopsversion.php:
<?php$modversion['config'] = [ [ 'name' => 'items_per_page', 'title' => '_AM_MYMODULE_ITEMS_PER_PAGE', 'description' => '_AM_MYMODULE_ITEMS_PER_PAGE_DESC', 'formtype' => 'text', 'valuetype' => 'int', 'default' => 10 ], [ 'name' => 'enable_feature', 'title' => '_AM_MYMODULE_ENABLE_FEATURE', 'description' => '_AM_MYMODULE_ENABLE_FEATURE_DESC', 'formtype' => 'yesno', 'valuetype' => 'bool', 'default' => 1 ]];?>Module Features
Abschnitt betitelt „Module Features“Q: How do I add an admin page to my module?
Abschnitt betitelt „Q: How do I add an admin page to my module?“A: Erstellen Sie die Struktur:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpIn xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Create admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>F: Wie füge ich Suchfunktionalität zu meinem Modul hinzu?
Abschnitt betitelt „F: Wie füge ich Suchfunktionalität zu meinem Modul hinzu?“A:
- Setzen Sie in xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Erstellen Sie
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>F: Wie füge ich Benachrichtigungen zu meinem Modul hinzu?
Abschnitt betitelt „F: Wie füge ich Benachrichtigungen zu meinem Modul hinzu?“A:
- Setzen Sie in xoopsversion.php:
<?php$modversion['hasNotification'] = 1;$modversion['notification_categories'] = [ ['name' => 'item_published', 'title' => '_NOT_ITEM_PUBLISHED']];$modversion['notifications'] = [ ['name' => 'item_published', 'title' => '_NOT_ITEM_PUBLISHED']];?>- Benachrichtigung im Code auslösen:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Module Permissions
Abschnitt betitelt „Module Permissions“Q: How do I set module permissions?
Abschnitt betitelt „Q: How do I set module permissions?“A:
- Gehen Sie zu XOOPS Admin > Module > Modulberechtigungen
- Wählen Sie das Modul
- Wählen Sie Benutzer/Gruppe und Berechtigungsstufe
- Speichern Sie
Im Code:
<?php// Check if user can access moduleif (!xoops_isUser()) { exit('Login required');}
// Check specific permission$mperm_handler = xoops_getHandler('member_permission');$module_handler = xoops_getHandler('module');$module = $module_handler->getByDirname('mymodule');
if (!$mperm_handler->userCanAccess($module->mid())) { exit('Access denied');}?>Module Database
Abschnitt betitelt „Module Database“Q: Where are module database tables stored?
Abschnitt betitelt „Q: Where are module database tables stored?“A: Alle in der Haupt-XOOPS-Datenbank, Präfix mit Ihrem Tabellenpräfix (normalerweise xoops_):
# List all module tablesmysql> SHOW TABLES LIKE 'xoops_mymodule_%';
# Or in PHP<?php$result = $GLOBALS['xoopsDB']->query( "SHOW TABLES LIKE '" . XOOPS_DB_PREFIX . "mymodule_%'");while ($row = $result->fetch_assoc()) { print_r($row);}?>Q: How do I update module database tables?
Abschnitt betitelt „Q: How do I update module database tables?“A: Erstellen Sie ein Update-Skript in Ihrem Modul:
<?phprequire_once '../../mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Admin only');}
// Add new column$sql = "ALTER TABLE `" . XOOPS_DB_PREFIX . "mymodule_items` ADD COLUMN `new_field` VARCHAR(255)";
if ($GLOBALS['xoopsDB']->query($sql)) { echo "✓ Updated successfully";} else { echo "✗ Error: " . $GLOBALS['xoopsDB']->error;}?>Module Dependencies
Abschnitt betitelt „Module Dependencies“Q: How do I check if required modules are installed?
Abschnitt betitelt „Q: How do I check if required modules are installed?“A:
<?php$module_handler = xoops_getHandler('module');
// Check if a module exists$module = $module_handler->getByDirname('required_module');
if (!$module || !$module->getVar('isactive')) { die('Error: required_module is not installed or active');}?>Q: Can modules depend on other modules?
Abschnitt betitelt „Q: Can modules depend on other modules?“A: Ja, deklarieren Sie in xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Troubleshooting
Abschnitt betitelt „Troubleshooting“Q: Module appears in list but won’t activate
Abschnitt betitelt „Q: Module appears in list but won’t activate“A: Überprüfen Sie:
- xoopsversion.php-Syntax - Verwenden Sie PHP-Linter:
php -l modules/mymodule/xoopsversion.php- Datenbank-SQL-Datei:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Sprachdateien:
ls -la modules/mymodule/language/english/Siehe Modul-Installationsfehler für ausführliche Diagnose.
Q: Module activated but doesn’t show in main site
Abschnitt betitelt „Q: Module activated but doesn’t show in main site“A:
- Setzen Sie
hasMain = 1in xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Erstellen Sie
modules/mymodule/index.php:
<?phprequire_once '../../mainfile.php';include_once XOOPS_ROOT_PATH . '/header.php';
echo "Welcome to my module";
include_once XOOPS_ROOT_PATH . '/footer.php';?>Q: Module causes “white screen of death”
Abschnitt betitelt „Q: Module causes “white screen of death”“A: Aktivieren Sie Debugging, um den Fehler zu finden:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Überprüfen Sie das Fehlerprotokoll:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logSiehe Weißer Bildschirm des Todes für Lösungen.
Performance
Abschnitt betitelt „Performance“Q: Module is slow, how do I optimize?
Abschnitt betitelt „Q: Module is slow, how do I optimize?“A:
- Datenbank-Abfragen überprüfen - Verwenden Sie Abfrage-Protokollierung
- Daten zwischenspeichern - Verwenden Sie XOOPS-Cache:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Templates optimieren - Vermeiden Sie Schleifen in Templates
- PHP-Opcode-Cache aktivieren - APCu, XDebug, usw.
Weitere Informationen finden Sie unter Performance FAQ.
Module Development
Abschnitt betitelt „Module Development“Q: Where can I find module development documentation?
Abschnitt betitelt „Q: Where can I find module development documentation?“A: See:
- Module Development Guide
- Module Structure
- Creating Your First Module
Zugehörige Dokumentation
Abschnitt betitelt „Zugehörige Dokumentation“- Modul-Installationsfehler
- Modulstruktur
- Performance-FAQ
- Debug-Modus aktivieren
#xoops #modules #faq #troubleshooting