CrazyCat Programming Factory
rendre internet plus accessible
 

Un moteur de template simplifié

Logo phpLa classe est fort simple, elle permet de définir le fichier de template à utiliser, d'enregistrer les différentes valeurs qui remplaceront les variables et d'effectuer le remplacement.
<?
/**
 * Moteur de template
 * @author CrazyCat <crazycat@c-p-f.org>
 * @version 1.0
 * @package Template
 *
 * @todo Gestion améliorée des erreurs
 */

class Template {
       
        /**
         * Tableau des erreurs
         * @var array
         */

        var $error = Array();
       
        /**
         * Constructeur du moteur
         * @param string $file Le chemin et le nom du fichier de template
         */

        function Template($file) {
                if (file_exists($file)) $this->file = file_get_contents($file);
                else $this->error[] = $file." n'existe pas";
        }
       
        /**
         * Fonction pour ajouter une variable à traiter
         * @param string $name Nom de la variable dans le template
         * @param string $value Valeur de la variable
         */

        function AddValueToTemplate($name, $value) {
                $this->content[$name] = $value;
        }
       
        /**
         * Fonction pour ajouter un fichier au template
         * @param string $name Nom de la variable dans le template principal
         * @param string $file Le chemin et le nom du fichier de template
         */

        function AddFileToTemplate($name, $file) {
                if (file_exists($file)) $this->content[$name] = file_get_contents($file);
                else $this->error[] = "Le fichier secondaire ".$file." est introuvable";
        }
       
        /**
         * Fonction qui génère le remplacement
         * @return string
         */

        function ParseTemplate() {
                $arrcontents = $this->content;
                return preg_replace('!{([^}]+)}!Use', "\$arrcontents['$1']", $this->file);
        }
}
?>

Cette classe sera dans le fichier classTemplate.php

Avec cela, il vous faut au moins un fichier de template.
Il s'agit en fait d'une page HTML dont les parties dynamiques sont nommées suivant une syntaxe très simple: {variable}.
Voici un exemple:
<html>
<head>
   <title>{title}</title>
<style>
#signature {
   text-align: right;
   font-style: italic;
}
</style>
</head>
<body>
<div>
{contenu}
</div>
<div id="signature">{auteur}, le {date}</div>
</body>
</html>

Nous nommerons ce fichier index.tpl

Créons maintenant nore fichier index.php qui permettra de générer la page (comme le contenu principal sera assez long, nous le mettrons dans un fichier contenu.txt).
<?
// Insertion du fichier de classe
include_once('./classTemplate.php');
// Initialisation de la classe avec appel du fichier de template
$page = new template('./index.tpl');
// On crée la variable "titre de la page"
$page->AddValueToTemplate('title', 'Une page de démonstration');
//On ajoute le contenu principal
$page->AddFileToTemplate('contenu', './contenu.txt');
// On va aussi créer la signature
$page->AddValueToTemplate('auteur', 'CrazyCat');
$page->AddValueToTemplate('date', date("d/m/Y"));
// On affiche le rendu
echo $page->ParseTemplate;
?>


Vous n'êtes pas tenu de suivre un ordre particulier pour ajouter vos variables à traiter.

©2006-2017 Geek Zone | eggdrop.fr | zeolia.net