Modul FAQ
Modul Často kladené otázky
Sekce “Modul Často kladené otázky”Běžné otázky a odpovědi týkající se modulů XOOPS, instalace a správy.
Instalace a aktivace
Sekce “Instalace a aktivace”Otázka: Jak nainstaluji modul do XOOPS?
Sekce “Otázka: Jak nainstaluji modul do XOOPS?”A:
- Stáhněte si soubor zip modulu
- Přejděte na XOOPS Admin > Moduly > Správa modulů
- Klikněte na „Procházet“ a vyberte soubor zip
- Klikněte na “Nahrát”
- Modul se objeví v seznamu (obvykle deaktivován)
- Klepnutím na ikonu aktivace ji povolíte
Případně extrahujte zip přímo do /xoops_root/modules/ a přejděte na panel správce.
Otázka: Nahrání modulu se nezdařilo s „Povolení odepřeno“
Sekce “Otázka: Nahrání modulu se nezdařilo s „Povolení odepřeno“”A: Toto je problém s oprávněním k souboru:
# 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/xoopsDalší podrobnosti naleznete v části Selhání instalace modulu.
Otázka: Proč po instalaci nevidím modul na panelu administrátora?
Sekce “Otázka: Proč po instalaci nevidím modul na panelu administrátora?”A: Zkontrolujte následující:
- Modul není aktivován – Klikněte na ikonu oka v seznamu modulů
- Chybí stránka správce – Modul musí mít
hasAdmin = 1v xoopsversion.php - Chybí jazykové soubory – Potřebujete
language/english/admin.php - Cache not clear – Vymažte mezipaměť a obnovte prohlížeč
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*Otázka: Jak odinstaluji modul?
Sekce “Otázka: Jak odinstaluji modul?”A:
- Přejděte na XOOPS Admin > Moduly > Správa modulů
- Deaktivujte modul (klikněte na ikonu oka)
- Klepněte na ikonu trash/delete
- Pokud chcete úplné odstranění, ručně odstraňte složku modulu:
rm -rf /path/to/xoops/modules/modulenameSpráva modulů
Sekce “Správa modulů”Otázka: Jaký je rozdíl mezi deaktivací a odinstalací?
Sekce “Otázka: Jaký je rozdíl mezi deaktivací a odinstalací?”A:
- Zakázat: Deaktivujte modul (klikněte na ikonu oka). Databázové tabulky zůstávají.
- Odinstalovat: Vyjměte modul. Smaže databázové tabulky a odstraní ze seznamu.
Chcete-li skutečně odstranit, odstraňte také složku:
rm -rf modules/modulenameOtázka: Jak zkontroluji, zda je modul správně nainstalován?
Sekce “Otázka: Jak zkontroluji, zda je modul správně nainstalován?”A: Použijte ladicí 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>";}?>Otázka: Mohu spustit více verzí stejného modulu?
Sekce “Otázka: Mohu spustit více verzí stejného modulu?”A: Ne, XOOPS to nativně nepodporuje. Můžete však:
- Vytvořte kopii s jiným názvem adresáře:
mymoduleamymodule2 - Aktualizujte dirname v xoopsversion.php obou modulů
- Zajistěte jedinečné názvy databázových tabulek
To se nedoporučuje, protože sdílejí stejný kód.
Konfigurace modulu
Sekce “Konfigurace modulu”Otázka: Kde nakonfiguruji nastavení modulu?
Sekce “Otázka: Kde nakonfiguruji nastavení modulu?”A:
- Přejděte na XOOPS Admin > Moduly
- Klikněte na ikonu settings/gear vedle modulu
- Nakonfigurujte předvolby
Nastavení jsou uložena v tabulce xoops_config.
Přístup v kódu:
<?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');}?>Otázka: Jak mohu definovat možnosti konfigurace modulu?
Sekce “Otázka: Jak mohu definovat možnosti konfigurace modulu?”A: V 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 ]];?>Funkce modulu
Sekce “Funkce modulu”Otázka: Jak přidám stránku správce do svého modulu?
Sekce “Otázka: Jak přidám stránku správce do svého modulu?”A: Vytvořte strukturu:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpV xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Vytvořit admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>Otázka: Jak přidám funkci vyhledávání do svého modulu?
Sekce “Otázka: Jak přidám funkci vyhledávání do svého modulu?”A:
- Sada v xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Vytvořte
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>Otázka: Jak přidám upozornění do svého modulu?
Sekce “Otázka: Jak přidám upozornění do svého modulu?”A:
- Sada v 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']];?>- Spustit upozornění v kódu:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Oprávnění modulu
Sekce “Oprávnění modulu”Otázka: Jak nastavím oprávnění modulu?
Sekce “Otázka: Jak nastavím oprávnění modulu?”A:
- Přejděte na XOOPS Admin > Moduly > Oprávnění modulu
- Vyberte modul
- Vyberte user/group a úroveň oprávnění
- Uložit
V kódu:
<?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');}?>Databáze modulů
Sekce “Databáze modulů”Q: Kde jsou uloženy databázové tabulky modulů?
Sekce “Q: Kde jsou uloženy databázové tabulky modulů?”A: Vše v hlavní databázi XOOPS s předponou vaší tabulky (obvykle 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);}?>Otázka: Jak aktualizuji databázové tabulky modulů?
Sekce “Otázka: Jak aktualizuji databázové tabulky modulů?”A: Vytvořte ve svém modulu aktualizační skript:
<?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;}?>Závislosti modulu
Sekce “Závislosti modulu”Otázka: Jak zkontroluji, zda jsou nainstalovány požadované moduly?
Sekce “Otázka: Jak zkontroluji, zda jsou nainstalovány požadované moduly?”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');}?>Otázka: Mohou moduly záviset na jiných modulech?
Sekce “Otázka: Mohou moduly záviset na jiných modulech?”A: Ano, deklarujte v xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Odstraňování problémů
Sekce “Odstraňování problémů”Otázka: Modul se objeví v seznamu, ale neaktivuje se
Sekce “Otázka: Modul se objeví v seznamu, ale neaktivuje se”A: Zkontrolujte:
- Syntaxe xoopsversion.php – Použijte PHP linter:
php -l modules/mymodule/xoopsversion.php- Soubor databáze SQL:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Jazykové soubory:
ls -la modules/mymodule/language/english/Podrobnou diagnostiku naleznete v části Selhání instalace modulu.
Otázka: Modul je aktivován, ale nezobrazuje se na hlavní stránce
Sekce “Otázka: Modul je aktivován, ale nezobrazuje se na hlavní stránce”A:
- Nastavte
hasMain = 1v xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Vytvořte
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';?>---### Otázka: Modul způsobuje „bílou obrazovku smrti“
A: Povolte ladění, abyste našli chybu:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Zkontrolujte protokol chyb:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logŘešení viz Bílá obrazovka smrti.
Výkon
Sekce “Výkon”Otázka: Modul je pomalý, jak mohu optimalizovat?
Sekce “Otázka: Modul je pomalý, jak mohu optimalizovat?”A:
- Zkontrolujte databázové dotazy – Použijte protokolování dotazů
- Data mezipaměti – Použijte mezipaměť XOOPS:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Optimalizace šablon – Vyhněte se smyčkám v šablonách
- Povolte mezipaměť operačních kódů PHP - APCu, XDebug atd.
Další podrobnosti najdete v části Výkon FAQ.
Vývoj modulu
Sekce “Vývoj modulu”Otázka: Kde najdu dokumentaci k vývoji modulu?
Sekce “Otázka: Kde najdu dokumentaci k vývoji modulu?”A: Viz:
- Průvodce vývojem modulu
- Struktura modulu
- Vytvoření prvního modulu
Související dokumentace
Sekce “Související dokumentace”- Selhání instalace modulu
- Struktura modulu
- Výkon FAQ
- Povolit režim ladění
#xoops #modules #faq #odstranění problémů