Objetivo: Construir un módulo instalable y desinstalable que pueda montarse en la interfaz de usuario sin tocar una sola línea del core del sistema.
Jerarquía de Archivos
modules/<slug>/
├── manifest.json
├── views/
│ └── panel.php
├── actions/
│ └── create.php
├── mounts/
│ ├── sidebar_link.php
│ └── dashboard_widget.php
└── db/
├── install.mysql.sql
├── install.sqlite.sql
├── uninstall.mysql.sql
└── uninstall.sqlite.sql
02. Checklist Exprés
Pasos de Ejecución
- Crear carpeta
modules/<slug>/. - Escribir
manifest.jsoncon views, actions y mounts. - Crear SQL de
install/uninstall(MySQL + SQLite). - Crear vista principal en
views/. - Crear acciones declaradas en
actions/. - Crear mounts declarados en
mounts/. - Instalar/activar desde
Configuración > Módulos. - Asignar permisos por grupo.
- Validar
php -len archivos PHP del módulo.
Contrato Operativo
{
"slug": "mi_modulo",
"name": "Mi Módulo",
"description": "Descripción corta",
"version": "0.1.0",
"enabled_by_default": false,
"views": [
{
"id": "mi_modulo_panel",
"title": "Mi Módulo",
"file": "panel.php",
"menu": true,
"order": 230,
"permissions": ["ver", "crear", "editar"]
}
],
"actions": [
{
"id": "create",
"view": "mi_modulo_panel",
"file": "create.php",
"permission": "mi_modulo_panel.crear",
"methods": ["POST"]
}
],
"mounts": [
{
"id": "mi_modulo_sidebar",
"point": "sidebar.main",
"title": "Mi Módulo",
"file": "sidebar_link.php",
"order": 230,
"permission": "mi_modulo_panel.ver"
}
]
}
04. Reglas Críticas
Restricciones de Sintaxis
- Slug:
^[a-z0-9_]+$ - Permisos: formato
vista.permiso - Mount Points:
sidebar.main,dashboard.widgets,client.profile.panels
Generación Automática
"Crea un módulo portable para NEXGestión con slug '[slug]'. Incluye manifest con views/actions/mounts, SQL mysql+sqlite install/uninstall, vistas, acciones seguras y mounts para sidebar.main + dashboard.widgets. No uses lógica fuera de modules/[slug]."