Moteur de Template
Présentation
J'ai conçu mon propre moteur de template suite à un constat simple : en général les moteurs existants nécessitent l'insertion de lignes de code dans les fichiers qui servent de template.
Cette solution est bien évidement une bonne idée sauf que cela implique que les personnes qui concevront les fichiers de template devront avoir une logique de programmeur et devront également respecter certaines conditions dans l'écriture des lignes de codes sous peine de ne pas obtenir le rendu escompté.
C'est pour ces raisons que mon moteur ne nécessitent l'insertion d'aucuns "mots clefs" correspondant à des fonctions ou des paramètres dans le code HTML ; par ailleurs, afin de se limiter au strict minimum, mon moteur ne sait agir que sur deux types d'"objets" : des blocs de codes HTML et des emplacement dans le code HTML.
Obligations
Afin de définir un bloc de code ou un emplacement, il suffit d'inserer une balise au sein du code HTML ; cette balise doit être répetée afin de définir un bloc.
Une balise se définit comme suis :
- Elle doit commencer par [:
- Elle ne doit contenir que des chiffres et des lettres (insensible à la casse) ainsi que le tiret bas '_'
- Elle doit se terminer par :]
Utilisation
Afin de bien comprendre le fonctionement, voici un exemple simple :
Contenu du fichier template |
<div align="center">[:TitreNom:]</div>
[:SsTitre:]
<div align="center">[:SsTitreNom:]</div>
[:SsTitre:] |
Affichage de la structure
$objet_tpl->ShowStruct();
|
CODE VARIABLE (/TitreNom) CODE BLOCK (/SsTitre) CODE VARIABLE (/SsTitre/SsTitreNom) CODE END (/SsTitre) CODE
|
Insertion de "titre" dans "/TitreNom"
$objet_tpl->SetVar("/TitreNom","titre");
|
<div align="center">titre</div>
|
Rajout d'un bloc "/SsTitre"
$objet_tpl->AddBlock("/SsTitre");
|
<div align="center">titre</div>
<div align="center"></div>
|
Insertion de "sous-titre" dans "/SsTitre/SsTitreNom"
$objet_tpl->SetVar("/SsTitre/SsTitreNom","sous-titre");
|
<div align="center">titre</div>
<div align="center">sous-titre</div>
|
Détail des fonctions
-
Creation :
$object = new SpdTpl([file]);
If "file" is specified it will be use as the template file
-
Loading template :
$object->Init(file);
Return :
- true on success
- false on error
-
Show template's structure :
$object->ShowStruct([return]);
If "return" is specified and worth true then the function will return the code generated rather than sending it to the browser
Return :
- nothing on success if "return" is not true
- a string representing the result if "return" is true
-
Add new "Block" :
$object->AddBlock(location);
"location" is a string representing the location of the block to add
Return :
- "1" on success
- "-1" if location path is invalid
- "-2" if location doesn't exists
-
Remove a "Block" :
$object->RemBlock(location);
"location" is a string representing the location of the block to remove
Return :
- "1" on success
- "-1" if location path is invalid
- "-2" if location doesn't exists
-
Insert "Text" :
$object->SetVar(location,text);
"location" is a string representing the location of the area where inserting text
"text" is the text to show
Return :
- "1" on success
- "-1" if location path is invalid
- "-2" if location doesn't exists
-
Show/Return result :
$object->SetVar([return]);
If "return" is specified and worth true then the function will return the code generated rather than sending it to the browser
Return :
- nothing on success if "return" is not true
- a string representing the result if "return" is true
Téléchargement