Visión general de la arquitectura
Aquí se resume la estructura mínima que debes conocer antes de crear módulos, skins, layouts y temas sobre Zittme.
Relación con Rhymix
Zittme es un motor GPL v2 derivado de Rhymix 2.1.35. Desde el punto de vista de quien desarrolla para terceros, lo importante es la compatibilidad.
- El espacio de nombres del núcleo es
Zittme\.Rhymix\se mantiene como alias de compatibilidad, así que los módulos existentes para Rhymix que llaman aRhymix\Framework\...siguen funcionando igual. - Escribe el código nuevo con base en
Zittme\. - La mayoría de los módulos, skins y layouts hechos para Rhymix funcionan sin cambios. Las funciones propias de Zittme (paquetes de tema, campos repetibles, marca responsiva) están diseñadas para que, al instalarlas en Rhymix, simplemente se ignoren sin causar errores.
Estructura de carpetas
| Ruta | Contenido |
|---|---|
common/framework/ | Clases del framework del núcleo (Zittme\Framework\...) |
classes/ | Clases heredadas del núcleo (Context, ModuleHandler, etc.) |
modules/ | Módulos. La unidad básica de funcionalidad |
layouts/, m.layouts/ | Layouts (PC / solo móvil) |
themes/ | Paquetes de tema |
addons/ | Complementos (extensiones ligeras que intervienen durante el procesamiento de la solicitud) |
widgets/ | Widgets |
files/ | Archivos subidos, caché y ajustes. Son datos del sitio, así que no se incluyen en la distribución |
Flujo de una solicitud
Todas las solicitudes entran por index.php, y dos valores deciden qué código se ejecuta.
- mid: nombre de la instancia del módulo. Cada "un tablero, una página" creado en el mapa del sitio es un mid. Es el primer segmento de la dirección (
/board,/manual). - act: nombre de la acción a ejecutar (
dispBoardContent,procBoardInsertDocument). Solo se ejecutan las declaradas enconf/module.xmldel módulo.
Los nombres de acción siguen una regla.
| Prefijo | Significado | Forma de llamada |
|---|---|---|
disp | Dibuja una pantalla | GET |
proc | Procesa datos | POST (verificación automática del token CSRF) |
getApi, etc. | Devuelve datos | Según el uso |
Para tener direcciones limpias como mid/document-number o mid/write, declara rutas en las acciones. Se explica en Crear módulos.
Base de datos
No se escribe SQL directamente. Las consultas se declaran en archivos XML (queries/*.xml) y se ejecutan con executeQuery('module.query', $args). Las tablas también se declaran en XML (schemas/*.xml) y el núcleo las crea al instalar el módulo. Más detalles en Query XML.
Plantillas
Las pantallas se dibujan con archivos de plantilla (HTML). Conviven dos generaciones de sintaxis.
- v2 (recomendada):
@version(2)en la primera línea del archivo. Estilo@if/@foreach/{{ }} - v1 (heredada): estilo de atributos
cond="",loop="". Para compatibilidad con recursos existentes
Crea los recursos nuevos con v2. Consulta Sintaxis de plantillas v2.
Resumen de formas de extensión
| Lo que quieres crear | Medio | Documento |
|---|---|---|
| Una función nueva (con base de datos y pantalla de administración) | Módulo | Crear módulos |
| La apariencia de un módulo existente | Skin de módulo | Crear skins y layouts |
| El marco de todo el sitio | Layout | Crear skins y layouts |
| Un conjunto de layout + skins | Paquete de tema | Crear un paquete de tema |
| Un comportamiento ligero que interviene en todas las solicitudes | Complemento | (próximamente) |
| Un fragmento de contenido que se inserta en cualquier parte del layout | Widget | (próximamente) |