FAQ moduli
Domande frequenti sui moduli
Sezione intitolata “Domande frequenti sui moduli”Domande e risposte comuni sui moduli XOOPS, l’installazione e la gestione.
Installazione e attivazione
Sezione intitolata “Installazione e attivazione”D: Come installo un modulo in XOOPS?
Sezione intitolata “D: Come installo un modulo in XOOPS?”R:
- Scarica il file zip del modulo
- Vai ad XOOPS Admin > Modules > Manage Modules
- Fai clic su “Browse” e seleziona il file zip
- Fai clic su “Upload”
- Il modulo appare nell’elenco (di solito disattivato)
- Fai clic sull’icona di attivazione per abilitarlo
In alternativa, estrai lo zip direttamente in /xoops_root/modules/ e passa al pannello di amministrazione.
D: Il caricamento del modulo non riesce con “Permesso negato”
Sezione intitolata “D: Il caricamento del modulo non riesce con “Permesso negato””R: Si tratta di un problema di autorizzazione dei file:
# 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/xoopsConsulta i guasti all’installazione del modulo per ulteriori dettagli.
D: Perché non riesco a vedere il modulo nel pannello di amministrazione dopo l’installazione?
Sezione intitolata “D: Perché non riesco a vedere il modulo nel pannello di amministrazione dopo l’installazione?”R: Controlla quanto segue:
- Modulo non attivato - Fai clic sull’icona dell’occhio nell’elenco dei moduli
- Pagina amministrativa mancante - Il modulo deve avere
hasAdmin = 1in xoopsversion.php - File di lingua mancanti - È necessario
language/english/admin.php - Cache non cancellata - Cancella la cache e aggiorna il browser
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*D: Come disinstallo un modulo?
Sezione intitolata “D: Come disinstallo un modulo?”R:
- Vai ad XOOPS Admin > Modules > Manage Modules
- Disattiva il modulo (fai clic sull’icona dell’occhio)
- Fai clic sull’icona del cestino/elimina
- Elimina manualmente la cartella del modulo se desideri una rimozione completa:
rm -rf /path/to/xoops/modules/modulenameGestione del modulo
Sezione intitolata “Gestione del modulo”D: Qual è la differenza tra disabilitare e disinstallare?
Sezione intitolata “D: Qual è la differenza tra disabilitare e disinstallare?”R:
- Disabilita: Disattiva il modulo (fai clic sull’icona dell’occhio). Le tabelle del database rimangono.
- Disinstalla: Rimuovi il modulo. Elimina le tabelle del database e le rimuove dall’elenco.
Per rimuovere completamente, elimina anche la cartella:
rm -rf modules/modulenameD: Come faccio a controllare se un modulo è installato correttamente?
Sezione intitolata “D: Come faccio a controllare se un modulo è installato correttamente?”R: Utilizza lo script di debug:
<?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>";}?>D: Posso eseguire più versioni dello stesso modulo?
Sezione intitolata “D: Posso eseguire più versioni dello stesso modulo?”R: No, XOOPS non supporta questo nativamente. Tuttavia, puoi:
- Creare una copia con un nome di directory diverso:
mymoduleemymodule2 - Aggiorna il dirname nel xoopsversion.php di entrambi i moduli
- Assicurati che i nomi delle tabelle del database siano univoci
Questo non è consigliato poiché condividono lo stesso codice.
Configurazione del modulo
Sezione intitolata “Configurazione del modulo”D: Dove configuro le impostazioni del modulo?
Sezione intitolata “D: Dove configuro le impostazioni del modulo?”R:
- Vai ad XOOPS Admin > Modules
- Fai clic sull’icona delle impostazioni/ingranaggio accanto al modulo
- Configura le preferenze
Le impostazioni vengono archiviate nella tabella xoops_config.
Accedi nel codice:
<?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');}?>D: Come definisco le opzioni di configurazione del modulo?
Sezione intitolata “D: Come definisco le opzioni di configurazione del modulo?”R: 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 ]];?>Caratteristiche del modulo
Sezione intitolata “Caratteristiche del modulo”D: Come aggiungo una pagina di amministrazione al mio modulo?
Sezione intitolata “D: Come aggiungo una pagina di amministrazione al mio modulo?”R: Crea la struttura:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpIn xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Crea admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>D: Come aggiungo la funzionalità di ricerca al mio modulo?
Sezione intitolata “D: Come aggiungo la funzionalità di ricerca al mio modulo?”R:
- Imposta in xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Crea
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>D: Come aggiungo le notifiche al mio modulo?
Sezione intitolata “D: Come aggiungo le notifiche al mio modulo?”R:
- Imposta 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']];?>- Attiva la notifica nel codice:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Autorizzazioni del modulo
Sezione intitolata “Autorizzazioni del modulo”D: Come imposto le autorizzazioni del modulo?
Sezione intitolata “D: Come imposto le autorizzazioni del modulo?”R:
- Vai ad XOOPS Admin > Modules > Module Permissions
- Seleziona il modulo
- Scegli l’utente/gruppo e il livello di autorizzazione
- Salva
Nel codice:
<?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');}?>Database del modulo
Sezione intitolata “Database del modulo”D: Dove vengono archiviate le tabelle del database del modulo?
Sezione intitolata “D: Dove vengono archiviate le tabelle del database del modulo?”R: Tutto nel database XOOPS principale, con prefisso con il tuo prefisso di tabella (di solito 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);}?>D: Come aggiorno le tabelle del database del modulo?
Sezione intitolata “D: Come aggiorno le tabelle del database del modulo?”R: Crea uno script di aggiornamento nel tuo modulo:
<?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;}?>Dipendenze del modulo
Sezione intitolata “Dipendenze del modulo”D: Come faccio a controllare se i moduli richiesti sono installati?
Sezione intitolata “D: Come faccio a controllare se i moduli richiesti sono installati?”R:
<?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');}?>D: I moduli possono dipendere da altri moduli?
Sezione intitolata “D: I moduli possono dipendere da altri moduli?”R: Sì, dichiara in xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Risoluzione dei problemi
Sezione intitolata “Risoluzione dei problemi”D: Il modulo appare nell’elenco ma non si attiva
Sezione intitolata “D: Il modulo appare nell’elenco ma non si attiva”R: Controlla:
- Sintassi xoopsversion.php - Usa il linter PHP:
php -l modules/mymodule/xoopsversion.php- File SQL del database:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- File di lingua:
ls -la modules/mymodule/language/english/Consulta Guasti all’installazione del modulo per una diagnostica dettagliata.
D: Il modulo è attivato ma non viene visualizzato nel sito principale
Sezione intitolata “D: Il modulo è attivato ma non viene visualizzato nel sito principale”R:
- Imposta
hasMain = 1in xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Crea
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';?>D: Il modulo causa “schermata bianca della morte”
Sezione intitolata “D: Il modulo causa “schermata bianca della morte””R: Abilita il debug per trovare l’errore:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Controlla il registro degli errori:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logConsulta Schermata bianca della morte per le soluzioni.
Prestazioni
Sezione intitolata “Prestazioni”D: Il modulo è lento, come lo ottimizzodirò?
Sezione intitolata “D: Il modulo è lento, come lo ottimizzodirò?”R:
- Controlla le query del database - Usa la registrazione delle query
- Memorizza nella cache i dati - Usa la cache XOOPS:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Ottimizza i template - Evita i loop nei template
- Abilita la cache del codice operativo PHP - APCu, XDebug, ecc.
Consulta FAQ prestazioni per ulteriori dettagli.
Sviluppo del modulo
Sezione intitolata “Sviluppo del modulo”D: Dove posso trovare la documentazione sullo sviluppo dei moduli?
Sezione intitolata “D: Dove posso trovare la documentazione sullo sviluppo dei moduli?”R: Vedi:
- Guida allo sviluppo del modulo
- Struttura del modulo
- Creazione del tuo primo modulo
Documentazione correlata
Sezione intitolata “Documentazione correlata”- Guasti all’installazione del modulo
- Struttura del modulo
- FAQ prestazioni
- Abilita modalità debug
#xoops #modules #faq #troubleshooting