¿Qué es ExtFW?

ExtFW es un framework modular para PHP que permite construir sitios web y APIs de forma sencilla, sin necesidad de usar un sistema MVC tradicional. Se basa en la carga dinámica de módulos, temas y salidas (outputs), permitiendo estructurar un proyecto por carpetas con una lógica intuitiva y flexible.
Filosofía del sistema
- Mínimo código para hacer módulos funcionales
- URL limpias, sin necesidad de definir rutas
- Separación clara entre lógica (módulos), presentación (temas) y datos (outputs)
- Todo lo que puede estar en una carpeta, lo está
Ventajas sobre sistemas MVC
- No requiere definir rutas ni controladores
- Cada módulo es autónomo y autoejecutable
- Agregar un nuevo módulo o output es tan simple como copiar una carpeta
- Ideal para sitios pequeños y medianos que necesitan flexibilidad sin sobreestructura
¿Se parece a WordPress?
- Es mucho más ligero y rápido que WordPress
- Sin base de datos impuesta: puede usar MySQL, SQLite, Oracle, etc. o incluso sin base de datos.
- Respeta las "Formas normales de bases de datos". Wp no lo hace.
- Sin plugins innecesarios ni sobrecarga de código
- Fácil de adaptar a tus necesidades reales
Manual para desarrolladores
Estructura básica
/_modules_/contiene los módulos funcionales/_themes_/contiene los layouts HTML del sitio/_outputs_/define las salidas como json, csv, txt, pdf...index.phpes el punto de entrada común
Qué es un módulo?
Un módulo es una carpeta dentro de la carpeta _modules_, cada módulo es una aplicación web.
Crear un módulo nuevo ('a mano')
- Copiar la carpeta
/_modules_/_template_/y renombrarla:# cp ./_modules_/_template_ ./modules/<nombre_nuevo_modulo>
- Editar el
init.phpyrun.phpsegún tus necesidades
Crear un módulo nuevo (desde control panel)
- Creación de nuevo módulo: /control_panel/new/<nombre_nuevo_modulo>
- Copia de módulo existente: /control_panel/new/<nombre_nuevo_modulo>/<modulo_existente>
- Editar código fuente: /edit/_modules_/<nombre_modulo> (experimental)
- Agregar outputs si quieres respuestas especiales (json, pdf...)
Compatibilidad de servidores
- Funciona perfectamente en servidores Apache, nginx y LiteSpeed
- Compatible con PHP 7.x y 8.x
Salidas alternativas según la URL
Una misma entrada puede mostrarse en formato HTML normal con theme, o devolver un formato alternativo según el output elegido en la URL.
miweb.com/documentacion→ muestra HTML con el thememiweb.com/documentacion/pdf→ genera un PDF (requiere dompdf, que se instala desde el panel de control)miweb.com/documentacion/txt→ genera un txt (con imágenes en ascii)
Manual para usuarios
- Permite editar contenido desde el panel de control
- Permite cambiar el idioma o tema desde la URL o configuración
- La URL define qué módulo se carga y con qué salida
- Por ejemplo:
/page/output/jsondevuelve una versión JSON de la página
Sobre el módulo page
- Permite a los usuarios crear y gestionar páginas de contenido
- Incluye edición inline con
contenteditabley editor wysiwyg configurable - Soporta galerías de fotos, de archivos, enlaces internos y más
- Shorcuts. Ejemplo: {ajax url=news/html}
Casos reales de uso con extFW
- riba2.org: portal institucional. Rápido, limpio, con contenido multilingüe. El sistema modular permite extenderlo sin sobrepeso.
- store.gilfamily.es: tienda online simple y eficiente. Uso de outputs JSON y PDF. La ligereza de extFW mejora el tiempo de carga.
- ampa-aidemar.es: sitio de asociación. Sencillo y editable por usuarios con conocimientos básicos gracias al editor inline.
- grafyco.com: sitio corporativo con diseño personalizado. Usa módulos propios y outputs adaptados. Alta velocidad de carga.
- web.clasicadelmarmenor.es: sitio de evento. Uso de galerías, módulo page y salidas tipo pdf y json.
- eache.es: web informativa de producto. Arquitectura clara, modular, sin plugins externos.
- radioclubtorrevieja.es: sitio con galerías, publicaciones y enlaces. Ligero, sencillo de mantener. Extensible para futuras funciones.
Notas finales
extFW es un sistema abierto, minimalista y fácil de extender. No requiere instalación especial y se adapta al proyecto que tengas en mente. Ideal para desarrolladores que prefieren la simplicidad y el control.