Class template

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

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.