Szablony są przetwarzane w dwóch etapach w pełni wykorzystujących parser PHP, co z kolei zapewnia projektantowi szablonów znaczną elastyczność i umożliwia tworzenie wysoko wydajnego kodu. Szablony są przetwarzane z uwzględnieniem obiektowego modelu dokumentu, zatem obiekt $this
jest zawsze instancją klasy JDocument.
Przed rozpoczęciem przetwarzania szablonu, konieczne jest uruchomienie komponentu a wynik musi zostać zapamiętany w buforze do późniejszego wykorzystania.
Przetwarzanie szablonu odbywa się w następujący sposób:
- Ładowane są parametry szablonu (jeśli istnieją).
- Ładowany jest język szablonu (jeśli jest wykorzystywany).
- Jeśli tryb zgodności wstecznej (legacy mode) jest włączony, to zmienne konfiguracyjne kopiowane są jako zmienne globalne.
- Ładowany jest i wykonywany przez PHP plik szablonu (index.php). Wynik jest zapamiętywany w buforze. To stanowi pierwszy etap dwuetapowego procesu. Całość treści pomiędzy znacznikami <?php i ?> jest przetwarzana jako kod PHP. Treść znajdująca się poza tymi znacznikami stanowi element wyniku, lecz jest pomijana. Na tym etapie - skoro wynik jest buforowany - nic nie jest wysyłane do przeglądarki użytkownika.
- Poszukiwany jest plik favicon.ico, najpierw w katalogu głównym Joomla!, a następnie w katalogu głównym szablonów. Plik znaleziony w drugim katalogu nadpisuje plik znaleziony w pierwszym.
- Wynik buforowany na pierwszym etapie jest teraz przetwarzany przez parser w poszukiwaniu elementów
<jdoc:include>
. To jest etap drugi procesu. Dla każdego znalezionego elementu jdoc
ładowana jest odpowiednia klasa renderująca i wywoływana jej metoda renderująca. Wynik metody renderującej zastępuje element <jdoc:include>
w buforze. W przypadku klas renderujących moduły - uruchamiane jest wykonanie modułów i buforowanie ich wyników.
- Niektóre nagłówki HTML powiązane z konkretnymi szablonami dodawane są do listy nagłówków wysyłanych jako dane wynikowe.
- Następnie sterowanie jest z powrotem przekazywane do obiektu
JApplication
, który przejmuje resztę procesu wysyłania już renderowanej strony www do przeglądarki internetowej użytkownika.