Comment les templates sont-ils exécutés ?

From Joomla! Documentation

This page is a translated version of the page How are templates executed? and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎Nederlands • ‎português do Brasil • ‎русский • ‎українська • ‎中文(台灣)‎

Les templates sont exécutés au cours d'un processus en deux étapes permettant la pleine utilisation de l'analyseur PHP pour fournir flexibilité et des performances aux concepteurs de templates. Les templates sont exécutés dans le contexte d'un document objet de sorte que l'objet $this est toujours l'instanciation de la classe JDocument.

Avant le début de l'exécution du template, le composant aura été exécutés et le résultat mis en mémoire tampon pour une utilisation ultérieure.

L'exécution du template s'opère alors comme suit :

  • les paramètres du template (s'ils en existent) sont chargés.
  • la langue du template (si elle existe) est chargée.
  • si le mode legacy est enclenché, alors les variables de configuration sont copiés en tant que variables globales.
  • le fichier de template (index.php) est chargé et exécuté (en PHP). La sortie est mise en mémoire tampon. Ceci est la première phase du processus en deux étapes. Tout ce qui se trouve entre les balises <?php et ?> est exécuté en tant que code PHP. Tout ce qui se trouve à l'extérieur de ces balises est ignoré. A ce stade et puisque la sortie est mise en mémoire tampon, rien n'est encore envoyé au navigateur web du client.
  • un fichier favicon.ico est recherché, en premier lieu à la racine du répertoire Joomla! puis à la racine du répertoire de template. Le cas échéant, le dernier trouvé va se substituer au précédent.
  • la sortie qui a été mise en mémoire tampon lors de la phase 1 va maintenant être analysée pour les éléments <jdoc:include>. Ceci est la phase 2 du processus. Pour chaque élément jdoc trouvé, la classe de rendu appropriée sera chargée et sa méthode de rendu appelée. La sortie de la méthode du rendu remplace l'élément <jdoc:include> lui-même dans la mise en mémoire tampon de la sortie. Dans le cas de classes de rendu de modules, cela permet d'enclencher l'exécution des modules ainsi que leur mise en mémoire tampon de leur sortie.
  • certaines entêtes HTTP spécifiques aux templates sont ajoutées à la liste des entêtes en sortie.
  • Le contrôle est ensuite transmis à l'objet JApplication qui va gérer le reste du processus d'obtention du rendu de la page web pour la renvoyer au navigateur web.