Class pour les templates

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 051 fois - Téléchargée 25 fois

Contenu du snippet

C'est pour les Template(lol)
Je suis un peu feignant le truc à été fait en une dizaine de minutes...
Bon ben la source n'est pas compliqué c'est un truc tous simple, si ca peut servir...

Source / Exemple :


<?
class template{
var $search  = array();
var $replace = array();
var $file    = "";
var $i       = 0;

function template($name = ""){
if(($this->file=@implode("",@file($name))) || $name == "")return 1;
else return 0;
}

function add($mixed,$el = ""){
if(is_array($mixed)){
$this->file.=implode($el,$mixed);
return 1;
}else if(is_string($mixed) || is_numeric($mixed)){
$this->file.=$mixed;
return 1;
}
return 0;
}

function assign_array($array){
if(is_array($array) && $this->file=="")return 0;
while(list($key,$value)=each($array)){
$this->search[$this->i]='{'.strtoupper($key).'}';
$this->replace[$this->i++]=$value;
return 1;
}//for
}//function

function reset(){
$this->file = "";
$this->search  = array();
$this->replace = array();
$this->i = 0;
}

function show(){
if($this->file=="")return 0;
echo str_replace($this->search,$this->replace,$this->file);//If you use PHP5 change to str_ireplace
}//function

function retour(){
if($this->file=="")return 0;
return str_replace($this->search,$this->replace,$this->file);//If you use PHP5 change to str_ireplace
}//function

}//class

$tmp['test'] ='Magicking';
$temp = new template("test.tpl");
$temp->assign_array($tmp);
$temp->show();
?>

Conclusion :


Dans le template test.tpl :
<html>
<body>
Salut {TEST}<br>
Tu t'appele {TEST}
</body>
</html>

Note:
Il y'a moyen d'assigné pluiseurs tableaux dans le même template
Dans le template les emplacement a remplacé sont toujours en majuscule(sauf si la fonction str_ireplace est utilisé PHP5 only) et est toujours entre crochet({})
Les fonctions retourne 1 quand elle a reussie ou 0 quand elle a echoué
Description des fonctions:
template($name = "")
$name correspond au nom du fichier a utiliser comme template si l'argument est hommis il créera un template vide

add($mixed,$el = "")
$mixed correspond a un tableau a une dimension ou une chaine de caractere
$el correspond au End Line de implode si $mixed est un tableau

assign_array($array)
Assigne un tableau associatif suivant $tablo['nom_valeur']="A remplace" a un template,le tableau peut étre avoir plusieurs élément et plusieurs tableau peuvent étre assigné

reset()
Vide le template mais ne l'efface pas utilisé unset(Object) pour sa

show()
Affiche le template

retour()
Retourne la variable file du template

A voir également

Ajouter un commentaire

Commentaires

XoscBloodshed
Messages postés
34
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
20 décembre 2004
-
Merci jvais allez voir
Magicking
Messages postés
195
Date d'inscription
vendredi 13 octobre 2000
Statut
Membre
Dernière intervention
8 juillet 2004
-
Je ne connais pas PHPLib ayant arrété le php depuis plusieurs mois et ne codant que occasionellement je ne vois pas de quoi tu parle... mais si tu veut voire comment marche les système des template je t'encourage à regarder les sources des forums comment phpBB, XMB,...
XoscBloodshed
Messages postés
34
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
20 décembre 2004
-
Merci, mais j'ai pas compris pour comment faire le "parsage" de tout, dans les classe telle que PHPLib il commence par le blocs le plus en bas et puis remponte, mais que se pass t'ils dans la variable qui contient le fichier final ?
Magicking
Messages postés
195
Date d'inscription
vendredi 13 octobre 2000
Statut
Membre
Dernière intervention
8 juillet 2004
-
Pour gérer les bloc il suffit de les mettres dans un fichier concaténé entre deux balise par exemple :
<!-BLOC1->
Salut c'est moi {NOM}
<!-EndBLOC1->
<!-BLOC2->
Salut c'est moi dans le bloc2 {NOM}
<!-EndBLOC2->
Tu recupere un des deux blocs avec une expression reguliere preg ou ereg(j'ai un peu la tête dans les fesse je viens de me reveiller alors je te laisse le soin de faire l'expression ;) ) et ensuite tu peut faire un truc comme ça :
<?
//expression reguliere...
...
$arrtmp['nom'] ='Magicking';
$cltemp = new template();
$cltemp->add($strbloc);//$bloc contient le texte du bloc obtenue avec une expression voir plus haut ;)
$cltemp->assign_array($arrtmp);
$strbloc=$cltemp->retour();

/*
$strbloc contient ton bloc choisis modifier avec les templates
Bien entendus une autre classe devrait etre faite pour faciliter mais j'ai pas envi c'est fatigant :D
*/
?>
XoscBloodshed
Messages postés
34
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
20 décembre 2004
-
Moi aussi je fais une class de templates, mais j'ai aucune idée pour comment gérer les blocs !

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.