Ir al contenido
Docs

Guía para desarrolladores

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 a Rhymix\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

RutaContenido
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 en conf/module.xml del módulo.

Los nombres de acción siguen una regla.

PrefijoSignificadoForma de llamada
dispDibuja una pantallaGET
procProcesa datosPOST (verificación automática del token CSRF)
getApi, etc.Devuelve datosSegú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 crearMedioDocumento
Una función nueva (con base de datos y pantalla de administración)MóduloCrear módulos
La apariencia de un módulo existenteSkin de móduloCrear skins y layouts
El marco de todo el sitioLayoutCrear skins y layouts
Un conjunto de layout + skinsPaquete de temaCrear un paquete de tema
Un comportamiento ligero que interviene en todas las solicitudesComplemento(próximamente)
Un fragmento de contenido que se inserta en cualquier parte del layoutWidget(próximamente)