Introduction
La classe
Templates permet d'effectuer la séparation entre le code HTML et le PHP (
explication détaillée du principe).
Pourquoi utiliser des templates ?
L'utilisation de fichiers templates n'est en rien obligatoire pour développer un CMS. Pourtant nous avons fait le choix d'utiliser ce principe de fonctionnement pour des raisons assez simples: PHPBoost se veut un portail entièrement personnalisable sur le plan graphique.
On aurait pû utiliser une feuille de style CSS par thème et les designs auraient pu être modifiés. Bien que ce soit le CSS qui gère la mise en forme, nous avons tout de même voulu laisser l'utilisateur pouvoir modifier la source HTML de ses pages afin notamment de déplacer les variables, ce qui n'aurait pas été possible avec du CSS. Nous avons fait le choix d'utiliser des templates, ce qui consiste à séparer complètement le PHP et le HTML. Quand on développe de façon traditionnelle le PHP permet de travailler sur le contenu des variables, mais le code HTML se trouve complètement mélangé au PHP, ce qui rend plus complexe la lecture du code. L'utilisation des templates a l'avantage de pouvoir laisser l'utilisateur modifier le code HTML de chacun de ses thèmes séparément, mais il permet en plus de clarifier le code PHP qui ne contient plus de HTML.
Rien de mieux qu'un schéma pour comprendre comment se passe la séparation des deux parties du code.
Templates signifie en français patron, à prendre dans le sens géométrique du terme. Cela correspond bien à ce qui est décrit, à savoir un dispositif de balisage pour placer les variables.
Principe de fonctionnement
Fonctionnement du moteur de templates
Les fichiers au format .tpl sont en réalité des fichiers HTML avec des marqueurs permettant d'indiquer des actions à accomplir par le parseur de templates. Une fois analysé par le parseur ces marqueurs sont remplacés par des instructions en PHP, c'est ce qu'on appelle la compilation des templates.
Le template compilé est stocké dans le dossier /cache/tpl sous la forme
tpl_$theme_$nomdutemplate.php si le template se situe dans le dossier /templates, ou
$nomdumodule_tpl_$nomdutemplate.php s'il appartient au dossier /template d'un module.
Lors de la parse finale du template (voir la méthode
Pparse()) le fichier est inclus (avec la fonction include de PHP). Les variables ayant été définies avant par les fonctions
Assign_vars() et
Assign_block_vars().
Fonctions disponibles dans un fichier de template
Variables simple
Les variables simples sont simplement remplacés par leur valeur à leur emplacement dans le template. Pour définir une variable simple il faut respecter la syntaxe suivante.
Leur assignation se fait avec la méthode
Assign_vars().
Les boucles
Les boucles permettent de répéter une partie de code dans le template. Pour définir une boucle il faut respecter la syntaxe suivante.
Les boucles peuvent être imbriquées. Pour définir une boucle imbriquée il faut respecter la syntaxe suivante.
Leur assignation se fait avec la méthode
Assign_block_vars().
Les variables dans les boucles
Les variables dans les boucles doivent être préfixées par la liste des boucles dans lesquelles elles se trouvent, séparées par des points.
Les conditions
Bien que les conditions puissent être gérées par des boucles, il existe également la possibilité de définir des conditions dans les templates.
Les includes
Il est possible d'inclure d'autres templates dans un template par l'ajout d'un marqueur. Le nom du template à fournir, est le nom du fichier .tpl sans l'extension. Pour un template qui s'appelle nomdutemplate.tpl le code à insérer est le suivant:
Utilisation dans un module
La classe templates est déjà instanciée dans l'environnement de PHPBoost. L'objet associé est la variable
$Template.
Vous n'avez donc pas à l'instancier en principe.
Méthodes