vendredi, mars 29, 2024
Nom d'utilisateur : Mot de passe :
Home > Projets > Moteur de template PHP > Template, HOWTO
[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

Commentaires...[1-4]


RE: Template, HOWTO
SpyK
Essayez Tiny But Strong ... ;)

Posté le 04/03/06 à 11:48

RE: Template, HOWTO

BestPig

[AVATAR]

Messages : 1
Inscrit le : 12/04/07
Pas d'accord, ce moteur de template a l'air bien.
Mais je n'ai pas réussi a faire un if.

Si on pourrait me donner un exemple

Posté le 12/04/07 à 18:56

RE: Template, HOWTO

unreal

[AVATAR]

Messages : 15
Inscrit le : 07/03/04
BestPig a dit :

Si on pourrait me donner un exemple


Exemple ici !

Posté le 13/04/07 à 11:23

RE: Template, HOWTO

bestpig

[AVATAR]

Messages : 1
Inscrit le : 12/04/07
Merci :P,
je continu la discussion sur le topic :P

Posté le 13/04/07 à 12:56

Template, HOWTO
Vous pourriez commenter si vous aviez un compte !