Les templates : moteurs et languages

site officiel
tpln.sourceforge.net

TPLN


Ressources pour vous aider


Présentation

"TPLN est un moteur de template en Php pour Php. Le code Php est séparé du design ce qui permet un facilité de mise à jour du design de vos documents et de permettre également de séparer les tâches entre le développeur Php et le Webdesigner." Dixit son auteur, Hayoun Laurent.

Préalable : les classes PEAR

TPLN utilise des classes d'objets et se fonde sur la classe d'abstraction PEAR::DB pour gérer les bases de données. Ainsi, si on souhaite changer de SGBD lors d'un projet, l'écriture des requêtes SQL en est grandement simplifiée.

Attention, les classes PEAR doivent être installées et configurées au préalable sur le serveur. Si vous utilisez EasyPHP, l'activation peut se faire rapidement via le fichier phpinit.exe dans le répertoire d'installation de EasyPHP. Dans tous les cas, Windows, MacOS ou Linux, le fichier php.ini est celui qui contient la configuration des extentions à PHP.

Documentation en ligne


Les bases de TPLN

Généralités

Pour distinguer les fichiers templates TPLN de fichiers HTML ordinaires, j'ai adopté la convention nom_fichier.tpln.html qui a l'avantage d'être facilement modifiables par les éditeurs web. Pour une sécurité poussée, ce pourrait être des fichiers tpln.php avec un entête de protection.

Parsage de variables

Déclaration d'une variable dans le template HTML

A la manière de PHPlib, la déclaration des variables se fait à l'aide des accolades {variable_du_template} au sein de votre fichier template. Très intéressant, on peut aussi directement utiliser une variable courante du script PHP, sans avoir à la parser, de la façon suivante : {$variable_php}.


Attention, les caractères suivants sont interdits entre les accolades sous risque d'erreur : ", ', *, " ", \n, \t .

<!-- fichier mapage.tpln.html -->
<html>
<body>
	{texte_a_parser}
	<p>De la part de {$auteur}</p>
	{note}
</body>
</html>

Il ne reste plus qu'à faire ceci dans le script php. On a le choix de la méthode parse() ou fastparse().

<!-- fichier mapage.php --> 
<?php
	// variables du script
	$auteur = "M. Déro";
	$notes = "<hr /><p>Ceci est le premier exercice en TPLN</p>";

	// on inclut la classe TPLN
	require_once("include/TPLN.php");
// on crée un nouvel objet $TPLN = new TPLN; // On ouvre le template $TPLN->Open("mapage.tpln.html"); // on parse la variable $TPLN->Parse("texte_a_parser","<p>Bonjour à tous. <br />Bonne découverte de TPLN</p>");
// on peut parser directement la variable $note si elle a le même nom dans le template $TPLN->FastParse("note"); // on termine en écrivant le résultat $TPLN->Write(); ?>

Traiter un bloc

Les blocs sont assimilables aux calques en HTML. On peut par exemple y utiliser des variables de même noms mais avec des contenu différents.

Déclaration d'un bloc

Dans PHPlib, la déclaration d'un bloc se fait en utilisant les balises commentaires <!-- -->. TPLN utilise quant à lui un tag personnel <bloc::nom_du_bloc> et </bloc::nom_du_bloc>. Chez certains éditeurs HTML, tel que Dreamweaver, il est conseillé de désactiver les corrections à la volée du code pour éviter quelques ennuis.

Là encore les caractères ", ', *, " ", \n, \t sont interdits sous risque d'erreur.

<!-- fichier mapage2.tpln.html -->
<html>
<body>
	<bloc::bloc1>
		{texte_a_parser}
	</bloc::bloc1>
	<p>De la part de {$auteur}</p>
	<bloc::bloc2>
		{texte_a_parser}
	</bloc::bloc2>
</body>
</html>
  

Dans le script PHP, le parsage est légèrement modifié. On fait précéder de la variable template le nom du bloc suivi d'un point (bloc1.texte_a_parser).

<!-- fichier mapage2.php --> 
<?php
	// variables du script
	$auteur = "M. Déro";

	// on inclut la classe TPLN
	require_once("include/TPLN.php");
// on crée un nouvel objet $TPLN = new TPLN; // On ouvre le template $TPLN->Open("mapage2.tpln.html"); // on parse la variable du premier bloc $TPLN->Parse("bloc1.texte_a_parser","<p>Bonjour à tous. <br />Bonne découverte de TPLN</p>");
// on parse la variable du second bloc $TPLN->Parse("bloc2.texte_a_parser","<p>Ce fichier comporte deux blocs de données, chacun utilisant {texte_a_parser}</p>"); // on termine en écrivant le résultat $TPLN->Write(); ?>

...


Une fonction magique : ShowRecords()

Texte emprunté au site officiel.

La fonction ShowRecords() est une fonction qui permet de parser automatiquement les données provenant de votre base données, vous n'avez qu'à créer votre template et la fonction s'occupe de tout pour vous !

Elle fonctionne selon deux modes :

Le template doit impérativement utiliser les déclarations de blocs suivants :

  1. <bloc::data>
  2. <bloc::loop></bloc::loop> contient le nom de vos champs en variable
  3. <bloc::norecord></bloc::norecord> contient le message s'il n'y a pas de résultats
  4. </bloc::data>


Cette fonction possède ses variables propriétaires qui sont parsées automatiquement celles ci doivent être présentes dans le bloc <bloc::data></bloc::data> elles sont notées comme ceci {_Variable}.

Variables propriétaires entre les balises <bloc::loop></bloc::loop>

TPLN génère également pour vous les boutons de navigation (pagination incluse) , il faut les définir au sein de votre bloc <bloc::data> sous forme de bloc, ceci sont personalisables puis qu'il font parti du template :

* Pager pour créer la pagination de résultats, ce bloc doit contenir deux sous blocs, <bloc::in> et <bloc::out>

<bloc::pager>
	<bloc::in><font color="red">{_Page}</font></bloc::in>
	<bloc::out><a href="{_Url}">{_Page}</a></bloc::out>
</bloc::pager>
    

* Début pour aller à la première page de résultats, ce bloc doit contenir la variable {_Url}

<bloc::start>
	<a href="{_Url}"><img src="bng.gif" /></a>
< /bloc::start>
    

* Précédent pour aller à la page des résultats précédente, ce bloc doit contenir la variable {_Url}

<bloc::previous>
	<a href="{_Url}"><img src="prev.gif" /></a>
</bloc::previous>
    

* Suivant pour aller à la page des résultats suivante, ce bloc doit contenir la variable {_Url}

<bloc::next>
	<a href="{_Url}"><img src="suiv.gif" /></a>
</bloc::next>
    

* Fin pour aller à la dernière page de résultats, ce bloc doit contenir la variable {_Url}

<bloc::end>
	<a href="{_Url}"><img src="suiv.gif" /></a>
</bloc::end>
    
<?php
	include("TPLN/TPLN.php");
	$TPLN = new TPLN;
	$TPLN->Open("template.html");
	$query = "SELECT * FROM my_table";
	$TPLN->DbConnect();
	$TPLN->ShowRecords($query,10); // 10 résultats par page
	$TPLN->DbClose();
	$TPLN->Write();
?>

Technologies utilisées :

PHP PEAR mysql


Valid XHTML 1.1! Valid CSS!