samedi, avril 20, 2024
Nom d'utilisateur : Mot de passe :
Un moteur de template sert à séparer le HTML d'un site de son code. L'idée c'est de créer un fichier contenant exclusivement du HTML et des balises compréhensibles par le moteur de template. Au moment de l'exécution, ce fichier de template sera parsé pour générer le rendu final du site.

Pour télécharger la dernière version du script, il suffit de vous rendre dans la rubrique téléchargement.

[NEWS]
Envoyé par unreal
Ce petit résumé vous permettra d'exploiter la classe template.



1. Les préliminaires

En haut de votre script php, il vous faut insérer le fichier et créer un nouvel objet (comme pour toute classe php) :

require_once ('inc/inc_cg_template.php');
$template = new cg_template;


La classe a besoin de savoir où se trouve le fichier de template :

$template->path = 'templates/mon_theme/index.html';


À la fin de votre script, la commande suivant permet de générer du html à partir du template :

echo ($template->template_engine());


Note importante : il est totalement interdit d'utiliser d'autres "echo" dans votre code php !

La classe dispose d'une API relativement simple pour interagir avec le script principal.

2. API

Vous pouvez utiliser les fonctions suivantes pour interagir avec la classe template (notez bien le == à chaque fois) :

  • $template->set_var('NomDeVariable==QuelqueChose'); // Au niveau du template {var_NomDeVariable} vaudrait donc "QuelqueChose"
  • $var = $template->get_var('NomDeVariable'); // Récupère la variable "NomDeVariable" qui avait été fixée a "QuelqueChose" par la ligne précédente
  • $template->push_array('ElementArray==ValeurArray'); // Cette fonction est particulièrement utile pour remplir plusieurs lignes d'un tableau par exemple (voir la suite)


3. Balises

Au niveau du fichier de template les balises suivantes sont gérées (vous pouvez utiliser les noms de variables que vous souhaitez) :

  • {var_Variable} : permet d'insérer une variable ou un array de variables
  • {if_Condition} ... {nif_Condition} : interprète les informations entre les 2 balises seulement si "Condition" est vraie
  • {while_nWhile} ... {nwhile_nWhile} : interprète les informations entre les 2 balises nWhile fois
  • {inc_path/fichier.html} : insère et interprète fichier.html
  • {set_$variable++}, {set_$variable1=$variable2}, ... : permet d'effectuer des opérations sur des variables de la classe php. Note : ces variables ne sont pas automatiquement héritées par le script principal, pour cela la commande "get_var" existe (voir plus bas).
  • {sys_date}, {sys_date_long}... insère directement certaines valeurs pré-programmées comme l'heure ou la date courantes.


4. Exemple d'utilisation

Voici les fichiers que nous avons :

| index.php
| templates/index.html
| inc/inc_cg_template.php

index.php :
<?php
// Init
require_once ('inc/inc_cg_template.php');
$template = new cg_template;
$template->path = 'templates/index.html';

// Titre de la page
$template->set_var('pageTitle==Page de test');

// Test de boucle
$template->set_var('noLignes==2');
$template->push_array('ligne==ligne1');
$template->push_array('ligne==ligne2');

// Test de valeurs numériques
$template->set_var('Nombre==0');

// Rendre la page
echo ($template->template_engine());
?>


templates/index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{var_pageTitle}</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
{while_noLignes}
{var_ligne}<br />
{nwhile_noLignes}

"Nombre" est intialisé à : {var_Nombre}<br />
{set_$Nombre=$noLignes+1}
2 + 1 = {var_Nombre}
</body>

<html>


Note : l'ordre d'affichage des éléments est inversé parce que la méthode utilisée est celle d'une pile, c'est-à-dire que le dernier élément envoyé est celui qu'on recupère en premier :

ligne2
ligne1


5. Conclusion

Normalement ce petit guide vous aura aidé à mieux comprendre le moteur de template qui permet des choses relativement interessantes (c'est le même qui est employé sur ce site !).

Have fun, et n'hésitez pas à faire part de vos remarques. happy.gif


Posté le 25/03/05 à 15:39 - 4 Commentaires...