FAQ de Módulos
Preguntas Frecuentes sobre Módulos
Sección titulada «Preguntas Frecuentes sobre Módulos»Preguntas comunes y respuestas sobre módulos de XOOPS, instalación y gestión.
Instalación y Activación
Sección titulada «Instalación y Activación»P: ¿Cómo instalo un módulo en XOOPS?
Sección titulada «P: ¿Cómo instalo un módulo en XOOPS?»R:
- Descargar el archivo zip del módulo
- Ir a XOOPS Admin > Módulos > Gestionar Módulos
- Hacer clic en “Examinar” y seleccionar el archivo zip
- Hacer clic en “Subir”
- El módulo aparece en la lista (generalmente desactivado)
- Hacer clic en el icono de activación para habilitarlo
Alternativamente, extraer el zip directamente en /xoops_root/modules/ y navegar al panel de administración.
P: La subida del módulo falla con “Permiso denegado”
Sección titulada «P: La subida del módulo falla con “Permiso denegado”»R: Este es un problema de permisos de archivo:
# Corregir permisos del directorio de móduloschmod 755 /path/to/xoops/modules
# Corregir directorio de subida (si se carga)chmod 777 /path/to/xoops/uploads
# Corregir propiedad si es necesariochown -R www-data:www-data /path/to/xoopsVer Errores de Instalación de Módulos para más detalles.
P: ¿Por qué no puedo ver el módulo en el panel de administración después de la instalación?
Sección titulada «P: ¿Por qué no puedo ver el módulo en el panel de administración después de la instalación?»R: Verificar lo siguiente:
- Módulo no activado - Hacer clic en el icono de ojo en la lista de Módulos
- Página de administración faltante - El módulo debe tener
hasAdmin = 1en xoopsversion.php - Archivos de idioma faltantes - Necesita
language/english/admin.php - Caché no limpiado - Limpiar caché y actualizar navegador
# Limpiar caché de XOOPSrm -rf /path/to/xoops/xoops_data/caches/*P: ¿Cómo desinstalo un módulo?
Sección titulada «P: ¿Cómo desinstalo un módulo?»R:
- Ir a XOOPS Admin > Módulos > Gestionar Módulos
- Desactivar el módulo (hacer clic en el icono de ojo)
- Hacer clic en el icono de papelera/eliminar
- Eliminar manualmente la carpeta del módulo si desea una eliminación completa:
rm -rf /path/to/xoops/modules/modulenameGestión de Módulos
Sección titulada «Gestión de Módulos»P: ¿Cuál es la diferencia entre deshabilitar y desinstalar?
Sección titulada «P: ¿Cuál es la diferencia entre deshabilitar y desinstalar?»R:
- Deshabilitar: Desactivar el módulo (hacer clic en icono de ojo). Las tablas de base de datos permanecen.
- Desinstalar: Eliminar el módulo. Elimina las tablas de base de datos y lo quita de la lista.
Para eliminar completamente, también elimine la carpeta:
rm -rf modules/modulenameP: ¿Cómo verifico si un módulo está correctamente instalado?
Sección titulada «P: ¿Cómo verifico si un módulo está correctamente instalado?»R: Usar el script de depuración:
<?php// Crear admin/debug_modules.phprequire_once XOOPS_ROOT_PATH . '/mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Solo administrador');}
echo "<h1>Depuración de Módulos</h1>";
// Listar todos los módulos$module_handler = xoops_getHandler('module');$modules = $module_handler->getObjects();
foreach ($modules as $module) { echo "<h2>" . $module->getVar('name') . "</h2>"; echo "Estado: " . ($module->getVar('isactive') ? "Activo" : "Inactivo") . "<br>"; echo "Directorio: " . $module->getVar('dirname') . "<br>"; echo "Mid: " . $module->getVar('mid') . "<br>"; echo "Versión: " . $module->getVar('version') . "<br>";}?>P: ¿Puedo ejecutar múltiples versiones del mismo módulo?
Sección titulada «P: ¿Puedo ejecutar múltiples versiones del mismo módulo?»R: No, XOOPS no soporta esto nativamente. Sin embargo, puede:
- Crear una copia con nombre de directorio diferente:
mymoduleymymodule2 - Actualizar el dirname en xoopsversion.php de ambos módulos
- Asegurar nombres únicos de tablas de base de datos
Esto no se recomienda ya que comparten el mismo código.
Configuración de Módulos
Sección titulada «Configuración de Módulos»P: ¿Dónde configuro los ajustes del módulo?
Sección titulada «P: ¿Dónde configuro los ajustes del módulo?»R:
- Ir a XOOPS Admin > Módulos
- Hacer clic en el icono de configuración/engranaje junto al módulo
- Configurar preferencias
Los ajustes se almacenan en la tabla xoops_config.
Acceder en código:
<?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');}?>P: ¿Cómo defino opciones de configuración del módulo?
Sección titulada «P: ¿Cómo defino opciones de configuración del módulo?»R: En 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 ]];?>Características del Módulo
Sección titulada «Características del Módulo»P: ¿Cómo agrego una página de administración a mi módulo?
Sección titulada «P: ¿Cómo agrego una página de administración a mi módulo?»R: Crear la estructura:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpEn xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Crear admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Administración de Módulo</h1>";xoops_cp_footer();?>P: ¿Cómo agrego funcionalidad de búsqueda a mi módulo?
Sección titulada «P: ¿Cómo agrego funcionalidad de búsqueda a mi módulo?»R:
- Establecer en xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Crear
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Implementación de búsqueda $results = []; return $results;}?>P: ¿Cómo agrego notificaciones a mi módulo?
Sección titulada «P: ¿Cómo agrego notificaciones a mi módulo?»R:
- Establecer en 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']];?>- Desencadenar notificación en código:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Elemento publicado', 'descripción');?>Permisos del Módulo
Sección titulada «Permisos del Módulo»P: ¿Cómo establecer permisos del módulo?
Sección titulada «P: ¿Cómo establecer permisos del módulo?»R:
- Ir a XOOPS Admin > Módulos > Permisos de Módulo
- Seleccionar el módulo
- Elegir usuario/grupo y nivel de permiso
- Guardar
En código:
<?php// Verificar si el usuario puede acceder al móduloif (!xoops_isUser()) { exit('Se requiere inicio de sesión');}
// Verificar permiso específico$mperm_handler = xoops_getHandler('member_permission');$module_handler = xoops_getHandler('module');$module = $module_handler->getByDirname('mymodule');
if (!$mperm_handler->userCanAccess($module->mid())) { exit('Acceso denegado');}?>Base de Datos del Módulo
Sección titulada «Base de Datos del Módulo»P: ¿Dónde se almacenan las tablas de base de datos del módulo?
Sección titulada «P: ¿Dónde se almacenan las tablas de base de datos del módulo?»R: Todas en la base de datos principal de XOOPS, con prefijo de su prefijo de tabla (generalmente xoops_):
# Listar todas las tablas del módulomysql> SHOW TABLES LIKE 'xoops_mymodule_%';
# O en PHP<?php$result = $GLOBALS['xoopsDB']->query( "SHOW TABLES LIKE '" . XOOPS_DB_PREFIX . "mymodule_%'");while ($row = $result->fetch_assoc()) { print_r($row);}?>P: ¿Cómo actualizo las tablas de base de datos del módulo?
Sección titulada «P: ¿Cómo actualizo las tablas de base de datos del módulo?»R: Crear un script de actualización en su módulo:
<?phprequire_once '../../mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Solo administrador');}
// Agregar nueva columna$sql = "ALTER TABLE `" . XOOPS_DB_PREFIX . "mymodule_items` ADD COLUMN `new_field` VARCHAR(255)";
if ($GLOBALS['xoopsDB']->query($sql)) { echo "✓ Actualizado exitosamente";} else { echo "✗ Error: " . $GLOBALS['xoopsDB']->error;}?>Dependencias del Módulo
Sección titulada «Dependencias del Módulo»P: ¿Cómo verifico si los módulos requeridos están instalados?
Sección titulada «P: ¿Cómo verifico si los módulos requeridos están instalados?»R:
<?php$module_handler = xoops_getHandler('module');
// Verificar si un módulo existe$module = $module_handler->getByDirname('required_module');
if (!$module || !$module->getVar('isactive')) { die('Error: required_module no está instalado o activo');}?>P: ¿Los módulos pueden depender de otros módulos?
Sección titulada «P: ¿Los módulos pueden depender de otros módulos?»R: Sí, declarar en xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = ilimitado 'order' => 1 ]];?>Solución de Problemas
Sección titulada «Solución de Problemas»P: El módulo aparece en la lista pero no se activa
Sección titulada «P: El módulo aparece en la lista pero no se activa»R: Verificar:
- Sintaxis de xoopsversion.php - Usar PHP linter:
php -l modules/mymodule/xoopsversion.php- Archivo SQL de base de datos:
# Verificar sintaxis SQLgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Archivos de idioma:
ls -la modules/mymodule/language/english/Ver Errores de Instalación de Módulos para diagnósticos detallados.
P: Módulo activado pero no se muestra en el sitio principal
Sección titulada «P: Módulo activado pero no se muestra en el sitio principal»R:
- Establecer
hasMain = 1en xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Crear
modules/mymodule/index.php:
<?phprequire_once '../../mainfile.php';include_once XOOPS_ROOT_PATH . '/header.php';
echo "Bienvenido a mi módulo";
include_once XOOPS_ROOT_PATH . '/footer.php';?>P: El módulo causa “pantalla blanca de la muerte”
Sección titulada «P: El módulo causa “pantalla blanca de la muerte”»R: Habilitar depuración para encontrar el error:
<?php// En mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Verificar el registro de errores:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logVer Pantalla Blanca de la Muerte para soluciones.
Rendimiento
Sección titulada «Rendimiento»P: El módulo es lento, ¿cómo optimizo?
Sección titulada «P: El módulo es lento, ¿cómo optimizo?»R:
- Verificar consultas de base de datos - Usar registro de consultas
- Almacenar datos en caché - Usar caché de XOOPS:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hora}?>- Optimizar plantillas - Evitar bucles en plantillas
- Habilitar caché de código PHP - APCu, XDebug, etc.
Ver FAQ de Rendimiento para más detalles.
Desarrollo de Módulos
Sección titulada «Desarrollo de Módulos»P: ¿Dónde puedo encontrar documentación de desarrollo de módulos?
Sección titulada «P: ¿Dónde puedo encontrar documentación de desarrollo de módulos?»R: Ver:
- Guía de Desarrollo de Módulos
- Estructura de Módulos
- Crear Tu Primer Módulo
Documentación Relacionada
Sección titulada «Documentación Relacionada»- Errores de Instalación de Módulos
- Estructura de Módulos
- FAQ de Rendimiento
- Habilitar Modo de Depuración
#xoops #módulos #faq #solución_de_problemas