Class template

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 912 fois - Téléchargée 27 fois

Contenu du snippet

Simple CLASS pour templates HTML

Source / Exemple :


class templates
{
        var $nom;
        var $html;
		var $fields;
		var $loop;
		var $bloc;
		
        function templates($nom,$dossier="tpl/",$extend=".tpl")
        {
                
                $this->nom	=	$dossier.$nom.$extend;
                
                if(file_exists($this->nom))
                {
                if(!$pfichier        =        fopen($this->nom, "r"))
                {
                $this->halt_template("Impossible d’ouvrir le fichier.");
                }
                $this->html        =        fread($pfichier, filesize($this->nom));
				
                fclose ($pfichier);
                
                if(get_magic_quotes_runtime() == 1)
                {
                	
                	stripslashes($this->html);
                	
                }
				
                } else {
                
                $this->halt_template("Le fichier n’existe pas.");
                
                }
                
        		$this->fields	=	array();
        		
        		$this->loop	=	array();
        		
        }
        function	assign($box_name,$field,$value,$loop=1)
        {
        	if((!is_array($field)) && (!is_array($value)))
        	{
        	
        	$this->fields[$box_name][$field]	=	$value;
        	
        	$this->loop[$box_name][$field]	=	$loop;
        	
        	} else {
        		
        		while($new_field=array_shift($field))
        		{
        			$this->fields[$box_name][$new_field]	=	array_shift($value);
        			
        			$this->loop[$box_name][$new_field]	=	$loop;
        			
        		}
        	}
        }
        function	write_template($box_name)
        {
        	
			while ($field	=	array_shift($this->fields))
        	{
        		$size	=	count($field);
        		
        		$loop	=	array_shift($this->loop);
        		
        		while($size)
        		{
        		$key	=	key($field);
        		
        		$value	=	array_shift($field);
        		
        		if($vloop	=	array_shift($loop))
        		{
        		
       			$this->html	=	preg_replace("(%%".$key."%%)",$value,$this->html,$vloop);
       			
       			} else {
       			
       			$this->html	=	preg_replace("(%%".$key."%%)",$value,$this->html);
       			
       			}
       			$size--;
       			
       			}
        	}
        }
        function	write_bloc($bloc_name)
        {
        	$bloc_tmp	=	$this->html;
        	
			while ($field	=	array_shift($this->fields))
        	{
        		$size	=	count($field);
        		
        		$loop	=	array_shift($this->loop);
        		
        		while($size)
        		{
        			$key	=	key($field);
        			
        			$value	=	array_shift($field);
        			
        			if($vloop	=	array_shift($loop))
        			{
        			
       				$bloc_tmp	=	preg_replace("(%%".$key."%%)",$value,$bloc_tmp,$vloop);
       				
       				} else {
       				
       				$bloc_tmp	=	preg_replace("(%%".$key."%%)",$value,$bloc_tmp);
       				
       				}
       				
       			$size--;
       			
       			}
       			
        	}
        	
        	$this->bloc	.=	$bloc_tmp;
        	
        }
        function	clear_template($value=' ')
        {
        	
        	$this->html	=	preg_replace("(%%[0-9a-zA-Z_-]*%%)",$value,$this->html);
        	
        }
        function	empty_bloc()
        {
        	
        	$this->bloc	=	"";
        	
        }
		function	halt_template($message)
		{
			die	("$message	:	Templates session halted.");
		}
}

Conclusion :


Voici une simple class pour les templates HTML,

Création $variable = new templates('nom_du_template',$dossier,$extend);

($extend est facultatif c'est l'extension du nom de template ex: haut.tpl
$extend = 'tpl' pour dossier default='tpl/')

Assigner ou preparer les variables du templates

$variable->assign('haut',$fields,$value,$loop);

$fields c'est le champ à remplacer ex: %%var%% dans le tamplate

$value = la valeur

$loop = nombres de remplacement pour le champ default=1

($fields et $value peuvent etre des tableaux)

$variable->write_template('haut');

change tous les champs , précédament assigner

$variable->clear_template()

pour effacer les %%variable%% du template

$variable->write_bloc('haut');

ajoute $variable->html -> $variable->bloc puis change les valeurs ,

$variable->empty_bloc('haut') vide le bloc

je sui pas un specialiste des regexp mais j'ai fait de mon mieux , enfin je l'utilise
toujours pour mes sites il fonctionne tres bien

a derniere chose quand vous faite un assign avec des tableaux , le write_template
LE VIDE!!

A voir également

Ajouter un commentaire

Commentaires

Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

<?php
class templates
{
var $nom;
var $html;
var $fields;
var $loop;
var $bloc;

function templates($nom,$dossier="templates/",$extend=".tpl")
{

$this->nom = $dossier.$nom.$extend;

if(file_exists($this->nom))
{
if(!$pfichier = fopen($this->nom, "r"))
{
$this->halt_template("Impossible d’ouvrir le fichier.");
}
$this->html = fread($pfichier, filesize($this->nom));

fclose ($pfichier);

if(get_magic_quotes_runtime() == 1)
{

stripslashes($this->html);

}

} else {

$this->halt_template("Le fichier n’existe pas.");

}

$this->fields = array();

$this->loop = array();

}
function assign($box_name,$field,$value,$loop=1)
{
if((!is_array($field)) && (!is_array($value)))
{

$this->fields[$box_name][$field] = $value;

$this->loop[$box_name][$field] = $loop;

} else {

while($new_field=array_shift($field))
{
$this->fields[$box_name][$new_field] = array_shift($value);

$this->loop[$box_name][$new_field] = $loop;

}
}
}
function write_template($box_name)
{

while ($field = array_shift($this->fields))
{
$size = count($field);

$loop = array_shift($this->loop);

while($size)
{
$key = key($field);

$value = array_shift($field);

if($vloop = array_shift($loop))
{

$this->html = preg_replace("(<".$key.">)",$value,$this->html,$vloop);

} else {

$this->html = preg_replace("(<".$key.">)",$value,$this->html);

}
$size--;

}
}
}
function write_bloc($bloc_name)
{
$bloc_tmp = $this->html;

while ($field = array_shift($this->fields))
{
$size = count($field);

$loop = array_shift($this->loop);

while($size)
{
$key = key($field);

$value = array_shift($field);

if($vloop = array_shift($loop))
{

$bloc_tmp = preg_replace("(<".$key.">)",$value,$bloc_tmp,$vloop);

} else {

$bloc_tmp = preg_replace("(<".$key.">)",$value,$bloc_tmp);

}

$size--;

}

}

$this->bloc .= $bloc_tmp;

}
function clear_template($value=' ')
{

$this->html = preg_replace("(<[0-9a-zA-Z_-]*>)",$value,$this->html);

}
function empty_bloc()
{

$this->bloc = "";

}
function halt_template($message)
{
die ("$message : Templates session halted.");
}
}
$test=new templates('test');
$test->assign('test','php','<?php');
$test->assign('test','/php','?>');
$test->assign('test','include','include "');
$test->assign('test','/include','";');
$test->write_template('test');

echo $test->html;

exit();
?>
Messages postés
8
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
27 décembre 2004

oui mais tu gère pas les <table> avec ça, par exemple pour les résultats d'une requête SQL...
Messages postés
5
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
8 juin 2006

voici un exemple

crée un rep tpl

créer le fichier test.tpl dedans (c'est un fichier html en faite)

fichier : test.tpl

<html>
<head>
<title>%%title%%</title>
</head>

Welcome %%nom%%



</Html>

créer le fichier test.php sur la racine pas dans tpl/
fichier : test.php

<?php
# ici fait un include ou un require ou copie directement la class template

$test=new templates('test');

$test->assign('test','title','Bienvenue sur mon site');

$test->assign('test','nom','martin');

$test->write-template('test');

echo $test->html;

exit();
?>
Messages postés
55
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
4 décembre 2005

salut,
j'ai pas regarde avec precision ton script.
a quoi ca sert au juste.

merci
Messages postés
5
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
8 juin 2006

Désolé j'ai oublié, donc

apres avoir declarer ,assigner les variables , writer les valeurs il suffit
de faire un echo $variable->html; pour afficher le template modifier
à propos des bloc , $variable->html; contient le modéle $variable->bloc contient les bloc empilé & modifier LOL.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.