¿Cómo se ejecutan las plantillas?
From Joomla! Documentation
Las plantillas son ejecutadas en un proceso de 2 fases, que hace un uso completo del intérprete de PHP, para proporcionar un grado considerable de flexibilidad y rendimiento para el diseñador de la plantilla. Las plantillas se ejecutan en el contexto del objeto documento, por lo que el objeto $this es siempre la creación de instanciaa de la clase JDocument.
Antes que la plantilla comience la ejecución, el componente se ha ejecutado y su salida esta en el búfer para su uso posterior.
Ejecución de una plantilla se realiza de la siguiente manera:
- se cargan los parámetros de la plantilla (si existe).
- se carga el idioma de la plantilla (si alguno).
- si el modo legacy está a continuación de las variables de configuración se copian como globales.
- el archivo de plantilla (index.php) es cargado y ejecutado (por PHP). La salida se almacena en el búfer. Esta es la fase 1 de las 2 fases del proceso. Todo lo que este entre las etiquetas <?php y ?> es ejecutado como código PHP. Todo lo que esté fuera de estas etiquetas es la salida, pero de lo contrario se omite. Como el resultado se almacena en búfer, nada se envía al explorador web del cliente en esta etapa.
- un archivo favicon.ico se busca, primero en el directorio raíz de Joomla!, a continuación, en el directorio raíz de la plantilla. El último reemplazará al anterior si se encuentra.
- los resultados que se han almacenado en la fase 1 ahora son analizado por los elementos <jdoc:include>. Esta es la fase 2 del proceso. Para cada elemento jdoc que se encuentra, el procesador adecuado de la clase se carga y se llama su método render. La salida desde el método render sustituye a la <jdoc:include> del mismo elemento en el buffer de salida. En el caso de clases de procesador del módulo esto desencadena la ejecución de los módulos y el almacenamiento en el búfer de su salida.
- Ciertos encabezados HTTP específicos de la plantilla se agregan a la lista de encabezados de la salida.
- El control se pasa, entonces, al objeto JApplication, el cual se encargará del resto del proceso de obtención de la ahora renderizada página web de espaldas al navegador web.