Modul FAQ
Modul ofte stillede spørgsmål
Sektion kaldt “Modul ofte stillede spørgsmål”Almindelige spørgsmål og svar om XOOPS-moduler, installation og administration.
Installation og aktivering
Sektion kaldt “Installation og aktivering”Q: Hvordan installerer jeg et modul i XOOPS?
Sektion kaldt “Q: Hvordan installerer jeg et modul i XOOPS?”A:
- Download modulets zip-fil
- Gå til XOOPS Admin > Moduler > Administrer moduler
- Klik på “Gennemse” og vælg zip-filen
- Klik på “Upload”
- Modulet vises på listen (normalt deaktiveret)
- Klik på aktiveringsikonet for at aktivere det
Alternativt kan du udtrække zip’en direkte i /xoops_root/modules/ og navigere til administrationspanelet.
Q: Modulupload mislykkes med “Permission denied”
Sektion kaldt “Q: Modulupload mislykkes med “Permission denied””A: Dette er et problem med filtilladelse:
# 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/xoopsSe Modulinstallationsfejl for flere detaljer.
Q: Hvorfor kan jeg ikke se modulet i admin panelet efter installationen?
Sektion kaldt “Q: Hvorfor kan jeg ikke se modulet i admin panelet efter installationen?”A: Tjek følgende:
- Modul ikke aktiveret - Klik på øjenikonet i Moduler-listen
- Mangler admin side - Modulet skal have
hasAdmin = 1i xoopsversion.php - Sprogfiler mangler - Behøver
language/english/admin.php - Cache ikke ryddet - Ryd cache og opdater browser
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*Q: Hvordan afinstallerer jeg et modul?
Sektion kaldt “Q: Hvordan afinstallerer jeg et modul?”A:
- Gå til XOOPS Admin > Moduler > Administrer moduler
- Deaktiver modulet (klik på øjenikonet)
- Klik på papirkurven/slet-ikonet
- Slet modulmappen manuelt, hvis du ønsker fuldstændig fjernelse:
rm -rf /path/to/xoops/modules/modulenameModulstyring
Sektion kaldt “Modulstyring”Q: Hvad er forskellen mellem at deaktivere og afinstallere?
Sektion kaldt “Q: Hvad er forskellen mellem at deaktivere og afinstallere?”A:
- Deaktiver: Deaktiver modulet (klik på øjeikonet). Databasetabeller forbliver.
- Afinstaller: Fjern modulet. Sletter databasetabeller og fjerner fra listen.
For virkelig at fjerne, skal du også slette mappen:
rm -rf modules/modulenameQ: Hvordan kontrollerer jeg, om et modul er korrekt installeret?
Sektion kaldt “Q: Hvordan kontrollerer jeg, om et modul er korrekt installeret?”A: Brug fejlfindingsscriptet:
<?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: Kan jeg køre flere versioner af det samme modul?
Sektion kaldt “Q: Kan jeg køre flere versioner af det samme modul?”A: Nej, XOOPS understøtter ikke dette indbygget. Du kan dog:
- Opret en kopi med et andet mappenavn:
mymoduleogmymodule2 - Opdater dirname i begge modulers xoopsversion.php
- Sørg for unikke databasetabelnavne
Dette anbefales ikke, da de deler den samme kode.
Modulkonfiguration
Sektion kaldt “Modulkonfiguration”Q: Hvor konfigurerer jeg modulindstillinger?
Sektion kaldt “Q: Hvor konfigurerer jeg modulindstillinger?”A:
- Gå til XOOPS Admin > Moduler
- Klik på indstillings-/gearikonet ved siden af modulet
- Konfigurer præferencer
Indstillinger gemmes i tabellen xoops_config.
Adgang i kode:
<?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: Hvordan definerer jeg modulkonfigurationsmuligheder?
Sektion kaldt “Q: Hvordan definerer jeg modulkonfigurationsmuligheder?”A: I 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 ]];?>Modulfunktioner
Sektion kaldt “Modulfunktioner”Q: Hvordan tilføjer jeg en admin-side til mit modul?
Sektion kaldt “Q: Hvordan tilføjer jeg en admin-side til mit modul?”A: Opret strukturen:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpI xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Opret admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>Q: Hvordan tilføjer jeg søgefunktionalitet til mit modul?
Sektion kaldt “Q: Hvordan tilføjer jeg søgefunktionalitet til mit modul?”A:
- Indstil i xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Opret
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>Q: Hvordan tilføjer jeg meddelelser til mit modul?
Sektion kaldt “Q: Hvordan tilføjer jeg meddelelser til mit modul?”A:
- Indstil i 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']];?>- Udløs notifikation i kode:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Modultilladelser
Sektion kaldt “Modultilladelser”Q: Hvordan indstiller jeg modultilladelser?
Sektion kaldt “Q: Hvordan indstiller jeg modultilladelser?”A:
- Gå til XOOPS Admin > Moduler > Modultilladelser
- Vælg modulet
- Vælg bruger/gruppe og tilladelsesniveau
- Gem
I kode:
<?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');}?>Moduldatabase
Sektion kaldt “Moduldatabase”Q: Hvor er moduldatabasetabeller gemt?
Sektion kaldt “Q: Hvor er moduldatabasetabeller gemt?”A: Alt sammen i XOOPS-databasen med præfiks med dit tabelpræfiks (normalt 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: Hvordan opdaterer jeg moduldatabasetabeller?
Sektion kaldt “Q: Hvordan opdaterer jeg moduldatabasetabeller?”A: Opret et opdateringsscript i dit 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;}?>Modulafhængigheder
Sektion kaldt “Modulafhængigheder”Q: Hvordan kontrollerer jeg, om de nødvendige moduler er installeret?
Sektion kaldt “Q: Hvordan kontrollerer jeg, om de nødvendige moduler er installeret?”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: Kan moduler afhænge af andre moduler?
Sektion kaldt “Q: Kan moduler afhænge af andre moduler?”A: Ja, erklær i xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Fejlfinding
Sektion kaldt “Fejlfinding”Q: Modulet vises på listen, men vil ikke aktiveresA: Tjek:
Sektion kaldt “Q: Modulet vises på listen, men vil ikke aktiveresA: Tjek:”- xoopsversion.php syntaks - Brug PHP linter:
php -l modules/mymodule/xoopsversion.php- Database SQL fil:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Sprogfiler:
ls -la modules/mymodule/language/english/Se modulinstallationsfejl for detaljeret diagnostik.
Q: Modul aktiveret, men vises ikke på hovedsiden
Sektion kaldt “Q: Modul aktiveret, men vises ikke på hovedsiden”A:
- Indstil
hasMain = 1i xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Opret
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: Modulet forårsager “white screen of death”
Sektion kaldt “Q: Modulet forårsager “white screen of death””A: Aktiver fejlfinding for at finde fejlen:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Tjek fejlloggen:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logSe White Screen of Death for løsninger.
Ydeevne
Sektion kaldt “Ydeevne”Q: Modulet er langsomt, hvordan optimerer jeg?
Sektion kaldt “Q: Modulet er langsomt, hvordan optimerer jeg?”A:
- Tjek databaseforespørgsler - Brug forespørgselslogning
- Cachedata - Brug 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}?>- Optimer skabeloner - Undgå sløjfer i skabeloner
- Aktiver PHP opcode-cache - APCu, XDebug osv.
Se Ydelse FAQ for flere detaljer.
Moduludvikling
Sektion kaldt “Moduludvikling”Q: Hvor kan jeg finde moduludviklingsdokumentation?
Sektion kaldt “Q: Hvor kan jeg finde moduludviklingsdokumentation?”A: Se:
- Moduludviklingsvejledning
- Modulstruktur
- Oprettelse af dit første modul
Relateret dokumentation
Sektion kaldt “Relateret dokumentation”- Modulinstallationsfejl
- Modulstruktur
- Ydeevne FAQ
- Aktiver fejlretningstilstand
#xoops #moduler #faq #fejlfinding