¿Cuál es el flujo de ejecución de Joomla, después de que una solicitud llega a index.php hasta la salida final en el navegador?

8

Basado en esta pregunta: ¿Cómo funcionan las plantillas y cómo cargan los archivos css / js? Proceso de creación de sitios web con Purity III

Cita:
.... Tengo que presentar mi sitio web mañana y me preguntarán "¿de dónde viene el contenido?" y no puedo responder porque no lo entiendo yo mismo.

¿Qué sucede si llamo al sitio? En el archivo index.php hay un código php pero no puedo encontrar el lugar donde el "resto del sitio web es" llamado "o algo así ...

y también sobre el tipo de preguntas como esta: dónde se encuentran los archivos de Joomla

Decidí crear este Q / A para trabajar como referencia para todas las preguntas similares. Cualquier persona que desee contribuir para que esta sea una publicación wiki comunitaria sólida es bienvenida.

FFrewin
fuente

Respuestas:

13

ToC de respuesta
1. Introducción para principiantes + enlace de recursos para principiantes
2. Acerca de Joomla Architecture
3. Flujo de ejecución de Joomla - Cómo funciona Joomla
4. Recursos complementarios

1. Introducción para principiantes

Usar Joomla para la construcción del sitio es bastante simple, ya que proporciona un área de administración amigable. En la mayoría de los casos, esto es todo lo que se necesita saber para los usuarios finales y los diseñadores.

Muchos principiantes con algunos conocimientos sobre html y css estáticos clásicos tienen esta misma pregunta / expectativa común: cómo editar sus archivos / contenido, ya que ven que se representa en su navegador.

Sin embargo, la forma en que Joomla trabaja detrás de escena es mucho más complicada que editar un archivo html y requiere conocimientos y experiencia avanzados en programación para comprenderlo completamente.

Como respuesta breve: no esperes abrir la aplicación de administrador de archivos / FTP y encontrar un archivo llamado:, myArticle.htmlo index.htmleso te permitirá editarlo directamente o cambiar la apariencia de los elementos html de tu página.

Para comenzar, sugeriría aprender primero los conceptos básicos de Joomla y cómo administrarlo desde el back-end. Lentamente, lentamente se adquirirán más conocimientos y experiencia.

Recursos para principiantes

Puede encontrar un tema con recursos útiles y tutoriales aquí:
Tutoriales para principiantes de Joomla: ¿Cómo comenzar con Joomla?


2. Acerca de la arquitectura de Joomla

Joomla es más que un CMS moderno construido en PHP. Es un proyecto web avanzado que incorpora arquitectura de múltiples capas, que incluye:

  • El marco de Joomla, incluidas las bibliotecas de terceros en las que se basa el marco, y los complementos que amplían el marco.
  • Aplicaciones web separadas como el sitio del administrador, el sitio front-end, la instalación.
  • La capa de extensiones (módulos, componentes, plantillas) que amplían el framework Joomla y las aplicaciones.

Joomla implementa varios conceptos avanzados de programación, programación orientada a objetos , patrones de diseño MVC y otros patrones de diseño comunes, un sistema de plantillas, etc. Además, no olvide mencionar que Joomla utiliza una base de datos donde los datos se guardan y recuperan cuando se solicita que se muestren en pantalla.


3. Descripción breve y simple del ciclo de ejecución de Joomla: cómo funciona Joomla

Cuando llega al index.phpsitio de Joomla (la aplicación JSite front-end), comienza un ciclo de ejecución completamente nuevo , que incluye:

  • Incluye importantes archivos que definen las CONSTANTES de la aplicación que se utilizan ampliamente en la aplicación y sus extensiones.
  • Cargando el marco de Joomla y todas sus clases esenciales que son necesarias para que la aplicación funcione en el futuro, el marco también verifica si hay un archivo de configuración en su lugar, o debería llevarnos a la carpeta de instalación para realizar una nueva instalación de Joomla .
  • El objeto Aplicación se crea e inicializa y se maneja el estado de la sesión (sesión nueva o existente).
  • Se carga el archivo de configuración , que también da acceso a la base de datos.
  • Se llama al enrutador . El enrutador es responsable de traducir las URL a una matriz asociativa de comandos y viceversa. Estos comandos se usarán como parámetros de url y se enviarán a SuperGlobal de PHP$_GET para crear una url completa. El optionelemento de esta matriz es el que define el componente que debe ejecutarse.
  • Con la ejecución del componente, se crea el objeto de documento . El documento se almacena en la memoria y contiene datos que se devolverán más tarde en el navegador. El hecho de que se almacena como búfer en la memoria permite colocar y manipular contenido en él sin ningún orden en particular y desde cualquier ubicación. La plantilla seleccionada se ha almacenado en la configuración. Además, vale la pena señalar que lo único que Joomla está haciendo es ejecutar el componente. Lo que debería suceder durante este paso es el trabajo del componente.
  • Luego viene la Representación de la página , donde junto con los datos del componente del paso anterior, los módulos y los mensajes de notificación también se representan y colocan en sus posiciones de plantilla.
  • El último paso es enviar la página al navegador .
  • Es importante tener en cuenta que durante varias etapas del ciclo de ejecución anterior, se llaman puntos de eventos de complementos , que permiten que los diversos eventos interfieran y extiendan la funcionalidad de Joomla.

Aquí se documenta una lista de flujo de ejecución más detallada, con los eventos del complemento: Flujo de ejecución de la aplicación Joomla


4. Recursos suplementarios:

FFrewin
fuente
1

Pequeña contribución, la lista completa de Joomla! Eventos de complementos .

Gruber
fuente
pequeño pero útil
FFrewin
tal vez podrías escribir las partes más esenciales de esa página aquí
FFrewin
@FFrewin, pero básicamente es una larga lista de enlaces de cada evento de complemento. Estoy tratando de encontrar una especie de "línea de tiempo" de todos los eventos en esta lista, pero no puedo encontrar mucho al respecto, me he tropezado en su respuesta aquí después de mucho googlear y el flujo de ejecución de aplicaciones de Joomla menciona algunos de los eventos del grupo Sistema pero no mucho sobre todos los demás
Gruber
@FFrewin también sería útil como una descripción general de todos los diferentes grupos de eventos de complementos, pero no encontré mucho en los documentos de Joomla (aunque admito que mi GoogleFu es un poco escaso en estos días, no sé por qué, tal vez es el calor: P)
Gruber