FAQ de Módulos
Perguntas Frequentes sobre Módulos
Seção intitulada “Perguntas Frequentes sobre Módulos”Perguntas e respostas comuns sobre módulos do XOOPS, instalação e gerenciamento.
Instalação e Ativação
Seção intitulada “Instalação e Ativação”P: Como instalo um módulo no XOOPS?
Seção intitulada “P: Como instalo um módulo no XOOPS?”R:
- Baixar arquivo zip do módulo
- Ir para XOOPS Admin > Módulos > Gerenciar Módulos
- Clicar em “Procurar” e selecionar arquivo zip
- Clicar em “Enviar”
- O módulo aparece na lista (geralmente desativado)
- Clicar no ícone de ativação para ativá-lo
Alternativamente, extrair o zip diretamente em /xoops_root/modules/ e navegar para o painel admin.
P: Upload de módulo falha com “Permissão negada”
Seção intitulada “P: Upload de módulo falha com “Permissão negada””R: Este é um problema de permissão de arquivo:
# 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/xoopsVeja Falhas de Instalação de Módulo para mais detalhes.
P: Por que não consigo ver o módulo no painel admin após a instalação?
Seção intitulada “P: Por que não consigo ver o módulo no painel admin após a instalação?”R: Verifique o seguinte:
- Módulo não ativado - Clicar no ícone de olho na lista de Módulos
- Página de admin faltando - Módulo deve ter
hasAdmin = 1em xoopsversion.php - Arquivos de idioma faltando - Necessário
language/english/admin.php - Cache não limpo - Limpar cache e atualizar navegador
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*P: Como desinstalo um módulo?
Seção intitulada “P: Como desinstalo um módulo?”R:
- Ir para XOOPS Admin > Módulos > Gerenciar Módulos
- Desativar o módulo (clicar no ícone de olho)
- Clicar no ícone de lixeira/exclusão
- Manualmente deletar a pasta do módulo se você quer remoção completa:
rm -rf /path/to/xoops/modules/modulenameGerenciamento de Módulos
Seção intitulada “Gerenciamento de Módulos”P: Qual é a diferença entre desabilitar e desinstalar?
Seção intitulada “P: Qual é a diferença entre desabilitar e desinstalar?”R:
- Desabilitar: Desativar o módulo (clicar no ícone de olho). Tabelas do banco de dados permanecem.
- Desinstalar: Remover o módulo. Deleta tabelas do banco de dados e remove da lista.
Para remover completamente, também delete a pasta:
rm -rf modules/modulenameP: Como verificar se um módulo está corretamente instalado?
Seção intitulada “P: Como verificar se um módulo está corretamente instalado?”R: Use o script de 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>";}?>P: Posso executar várias versões do mesmo módulo?
Seção intitulada “P: Posso executar várias versões do mesmo módulo?”R: Não, XOOPS não suporta isto nativamente. Contudo, você pode:
- Criar uma cópia com um nome de diretório diferente:
mymoduleemymodule2 - Atualizar dirname em xoopsversion.php de ambos os módulos
- Garantir nomes únicos de tabela de banco de dados
Isto não é recomendado pois eles compartilham o mesmo código.
Configuração de Módulo
Seção intitulada “Configuração de Módulo”P: Onde configuro as configurações do módulo?
Seção intitulada “P: Onde configuro as configurações do módulo?”R:
- Ir para XOOPS Admin > Módulos
- Clicar no ícone de configurações/engrenagem próximo ao módulo
- Configurar preferências
As configurações são armazenadas na tabela xoops_config.
Acessar em 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: Como defino opções de configuração de módulo?
Seção intitulada “P: Como defino opções de configuração de módulo?”R: Em 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 ]];?>Recursos de Módulo
Seção intitulada “Recursos de Módulo”P: Como adiciono uma página de admin ao meu módulo?
Seção intitulada “P: Como adiciono uma página de admin ao meu módulo?”R: Criar a estrutura:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpEm xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Criar admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>P: Como adiciono funcionalidade de busca ao meu módulo?
Seção intitulada “P: Como adiciono funcionalidade de busca ao meu módulo?”R:
- Definir em xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Criar
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>P: Como adiciono notificações ao meu módulo?
Seção intitulada “P: Como adiciono notificações ao meu módulo?”R:
- Definir em 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']];?>- Disparar notificação em código:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Permissões de Módulo
Seção intitulada “Permissões de Módulo”P: Como defino permissões de módulo?
Seção intitulada “P: Como defino permissões de módulo?”R:
- Ir para XOOPS Admin > Módulos > Permissões de Módulo
- Selecionar o módulo
- Escolher usuário/grupo e nível de permissão
- Salvar
Em código:
<?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');}?>Banco de Dados de Módulo
Seção intitulada “Banco de Dados de Módulo”P: Onde as tabelas de banco de dados do módulo estão armazenadas?
Seção intitulada “P: Onde as tabelas de banco de dados do módulo estão armazenadas?”R: Tudo no banco de dados principal do XOOPS, prefixado com seu prefixo de tabela (geralmente 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);}?>P: Como atualizo tabelas de banco de dados de módulo?
Seção intitulada “P: Como atualizo tabelas de banco de dados de módulo?”R: Criar um script de atualização no seu módulo:
<?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;}?>Dependências de Módulo
Seção intitulada “Dependências de Módulo”P: Como verifico se módulos necessários estão instalados?
Seção intitulada “P: Como verifico se módulos necessários estão instalados?”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');}?>P: Módulos podem depender de outros módulos?
Seção intitulada “P: Módulos podem depender de outros módulos?”R: Sim, declare em xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Solução de Problemas
Seção intitulada “Solução de Problemas”P: Módulo aparece na lista mas não se ativa
Seção intitulada “P: Módulo aparece na lista mas não se ativa”R: Verifique:
- Sintaxe xoopsversion.php - Use PHP linter:
php -l modules/mymodule/xoopsversion.php- Arquivo SQL de banco de dados:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Arquivos de idioma:
ls -la modules/mymodule/language/english/Veja Falhas de Instalação de Módulo para diagnósticos detalhados.
P: Módulo ativado mas não aparece no site principal
Seção intitulada “P: Módulo ativado mas não aparece no site principal”R:
- Definir
hasMain = 1em xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Criar
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';?>P: Módulo causa “tela branca de morte”
Seção intitulada “P: Módulo causa “tela branca de morte””R: Ativar depuração para encontrar o erro:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Verificar o log de erros:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logVeja Tela Branca da Morte para soluções.
Performance
Seção intitulada “Performance”P: Módulo é lento, como otimizar?
Seção intitulada “P: Módulo é lento, como otimizar?”R:
- Verificar queries de banco de dados - Use logging de query
- Cachear dados - Use cache do XOOPS:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Otimizar templates - Evitar loops em templates
- Ativar PHP opcode cache - APCu, XDebug, etc.
Veja FAQ de Performance para mais detalhes.
Desenvolvimento de Módulo
Seção intitulada “Desenvolvimento de Módulo”P: Onde posso encontrar documentação de desenvolvimento de módulo?
Seção intitulada “P: Onde posso encontrar documentação de desenvolvimento de módulo?”R: Ver:
- Guia de Desenvolvimento de Módulo
- Estrutura de Módulo
- Criar Seu Primeiro Módulo
Documentação Relacionada
Seção intitulada “Documentação Relacionada”- Falhas de Instalação de Módulo
- Estrutura de Módulo
- FAQ de Performance
- Ativar Modo Debug
#xoops #modules #faq #troubleshooting