Hoe worden templates uitgevoerd?

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 • ‎Nederlands • ‎español • ‎français • ‎português • ‎português do Brasil • ‎русский • ‎українська • ‎中文(台灣)‎

Templates worden uitgevoerd in een proces van 2 fases die volledig gebruik maken van de PHP parser om aanzienlijke flexibiliteit en performance te bieden aan de template ontwerper. Templates worden uitgevoerd binnen de context van het document object zodat het $this object altijd een instantie van de JDocument class is.

Voordat de template-uitvoering begint, is de component uitgevoerd en de uitvoer daarvan is gebufferd voor later gebruik.

De template uitvoering gaat dan als volgt:

  • template parameters (indien aanwezig) worden geladen.
  • template taal (indien aanwezig) wordt geladen.
  • indien de legacy-modus aan staat dan worden de instellingen-variabelen gekopieerd als globalen.
  • Het template bestand (index.php) wordt geladen en uitgevoerd (door PHP). De uitvoer wordt gebufferd. Dit is fase 1 van het proces van 2 fases. Alles tussen <?php en ?> tags wordt uitgevoerd als PHP-code. Alles buiten deze tags is uitvoer maar wordt anders genegeerd. Aangezien de uitvoer gebufferd wordt, wordt er op dit moment niets naar de webbrowser gestuurd.
  • er wordt naar een favicon.ico bestand gezocht, eerst in de Joomla! root-map, daarna in de template root-map. De laatste vervangt de eerste indien gevonden.
  • De gebufferde uitvoer uit fase 1 wordt nu geanalyseerd op <jdoc:include> elementen. Dit is fase 2 van het proces. Voor ieder gevonden jdoc-element, wordt de juiste renderer class geladen en zijn render-methode wordt aangeroepen. De uitvoer van de render-methode vervangt het <jdoc:include> element zelf in de uitvoer-buffer. In geval van module render-classes triggert dit het verwerken van de modules en het bufferen van hun uitvoer.
  • Bepaalde template-specifieke HTTP headers worden toegevoegd aan de lijst met headers om in de uitvoer te komen.
  • Controle wordt dan teruggegeven aan het JApplication object, dat de rest van het proces, om de nu gegenereerd pagina terug naar de browser van de gebruiker te krijgen, afhandelt.