|
*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.* |
|||||||
Template Engine pour Pro et débutants
sous PHP version 4.0.4 ou supérieure |
Plan de ce fichier
d'aide : |
||
Rubrique | Description | |
Présentation | ||
Principes de base | ||
Installation | ||
Mini exemples | ||
Coté PHP | ||
Pour commencer | ||
méthode LoadTemplate() | charge le contenu d'un modèle à partir d'un fichier | |
méthode MergeBlock() | fusionne une partie du modèle avec une source de données | |
méthode Show() | traitements automatiques et affichage du résultat | |
Avancé | ||
méthode CacheAction() | active le système mise en cache des résultats de fusion | |
méthode GetBlockSource() | retourne le source de la définition d'un bloc | |
méthode MergeField() | fusionne un champ particulier avec une valeur | |
méthode MergeNavigationBar() | fusionne une barre de navigation | |
méthode MergeSpecial() | fusionne les bloc conditionnels, variables Php et autres... | |
propriété Render | pour modifier les options de fin de fusion | |
propriété Source | retourne le contenu courrant du résultat de la fusion | |
variables globales pour TBS | pour lire et modifier les valeurs qui sont en cours de traitement | |
ajout d'un type de sources de données | pour que TBS reconnaisse un nouveau type de base de données | |
Coté HTML | ||
les champs TBS | ||
définition et propriétés | ||
les champs de variable Php | ||
les champs système | ||
les blocs TBS | ||
définition et propriétés | ||
sections de bloc | ||
affichage en série (en colonnes) | ||
requêtes dynamiques / sous-blocs | ||
affichage d'une barre de navigation | ||
Autre | ||
insérer un sous-modèle | ||
insérer le résultat d'un autre script Php | ||
vue d'ensemble de l'affichage conditionnel | ||
Résumés | ||
paramètres des champs TBS | ||
paramètres des blocs TBS | ||
champs et paramètres de barre de navigation | ||
noms de champs et blocs spéciaux |
Présentation : |
Principes de base : |
Installation : |
1. | Copiez le fichier tbs_class.php dans un répertoire de votre site Web. |
2. | Au début de votre programme PHP, ajoutez les lignes : include_once('tbs_class.php'); $TBS = new clsTinyButStrong ; Remarque : si le fichier tbs_class.php se trouve dans un répertoire différent de celui de votre programme, vous devrez préciser le répertoire devant le nom du fichier. |
Mini exemples : |
Modèle Html | Programme Php | Résultat |
<html> <body> [var.message] </body> </html> |
<? include_once('tbs_class.php'); $TBS = new clsTinyButStrong ; $TBS->LoadTemplate('template.htm') ; $message = 'Hello' ; $TBS->Show() ; ?> |
<html> <body> Hello </body> </html> |
Modèle Html | Programme Php | Résultat |
<table> <tr><td>[blk.val;block=tr]</td></tr> </table> |
<? include_once('tbs_class.php'); $TBS = new clsTinyButStrong ; $TBS->LoadTemplate('template.htm') ; $liste = array('X','Y','Z') ; $TBS->MergeBlock('blk',$liste) ; $TBS->Show() ; ?> |
<table> <tr><td>X</td></tr> <tr><td>Y</td></tr> <tr><td>Z</td></tr> </table> |
Coté PHP : |
include_once('tbs_class.php'); |
Méthode LoadTemplate() : |
Charge un modèle en vue de son traitement
pour la fusion. Le contenu complet du fichier est enregistré dans la propriété Source de l'objet TinyButStrong. Syntaxe : $TBS->LoadTemplate(string Fichier{, string HtmlCharSet})
|
Méthode MergeBlock() : |
Fusionne un bloc TBS avec
les données d'une source d'enregistrements. Retourne le numéro du dernier enregistrement affiché (le premier porte le numéro 1). TinyButStrong supporte plusieurs types de sources de données en natif : Données Php : un tableau ; une chaîne texte, un nombre. Base de données : MySQL ; PostgreSQL ; SQLite ; ODBC ; SQL-Server ; ADODB. Mais vous pouvez aussi en ajouter de nouveaux : 'ajout d'un type de sources de données'. Il existe un mode d'affichage 'Par Page' décrit plus bas. Syntaxe : int $TBS->MergeBlock(string NomBloc, mixed Source{, string Requête}{, int PageTaille, int PageNum}{, int NbrEnreg})
Liaison entre le bloc et les enregistrements :
Décompte des enregistrements :
Utilisation des arguments Source et Requête selon le type de source de données :
(2) Il s'agit de la méthode d'accès aux données ADODB de Microsoft, accessible via la classe COM de Php. Source de données Php :
Mode 'Par Page' :
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Méthode Show() : |
Termine la fusion. Syntaxe : $TBS->Show() La propriété Render permet de régler le comportement de la méthode Show(). Par défaut, Show() traite les champs TBS spéciaux (champs de variable PHP, champs système, insertion de fichier, blocs conditionnels,...), affiche le résultat de la fusion, puis quitte le programme. |
Méthode CacheAction() : |
Active le système de cache
ou lance une autre opération sur les fichiers de cache. Syntaxe : bool $TBS->CacheAction(string CacheId {, int ActTimeOut}{, string Dir})
À la place du timeout, vous pouvez utiliser l'un des constantes ci-après pour déclancher une action spéciale du système de cache.
Le système de cache permet d'accélérer l'affichage des pages HTML en n'opérant la fusion qu'à intervalle régulier plutôt que à chaque consultation de la page. Pour cela, vous devez prévoir un identifiant pour chaque page sauvegardée (appelée fichier cache), ainsi qu'une période de rafraîchissement (appelé timeout). Lorsque vous appelez la méthode CacheAction, le système de cache regarde s'il existe déjà une page en cache et relève sa date de création. Si la date de création est plus courte que le timeout, alors le contenu du fichier cache est chargé et la fusion se termine. Si la date de création est plus longue que le timeout, alors le fichier cache est ignoré mais il sera mis à jour lors du prochain appel de la méthode Show() en enregistrant le résultat de la fusion dans ce fichier cache. Si le fichier cache est chargé, la méthode retourne True, sinon, elle retourne False. Par défaut, si le fichier est chargé alors le contenu est affiché et le script est arrêté mais vous pouvez changer ce comportement à l'aide de la propriété Render. |
Méthode GetBlockSource() : |
Retourne le source d'un bloc TBS. Seule la définition de la première section du bloc sera retournée à moins que l'argument Sections soit à True. Si aucun bloc n'est trouvé, la méthode retourne la valeur False. Syntaxe : string $TBS->GetBlockSource(string NomBloc {, boolean Sections})
Cette méthode permet de récupérer le source d'un bloc afin de gérer manuellement sa fusion. Si par la suite vous souhaitez remplacer le bloc par du texte, vous pouvez utiliser ma méthode MergeBlock() avec le paramètre 'text'. |
Méthode MergeField() : |
Fusionne un ou plusieurs champs TBS avec une valeur
fixe ou une fonction. Syntaxe : $TBS->MergeField(string NomChamp, mixed ... {, boolean ModeFonction})
Si plusieurs champs portent le même nom dans le modèle, ils seront tous traités. |
Méthode MergeNavigationBar() : |
Affiche une barre de navigation à partir de blocs
TBS et de champs TBS spécifiques. Syntaxe : $TBS->MergeNavigationBar(string NomNav, mix Options, int PageNum[, int NbrEnreg, int TaillePage])
Exemple : $TBS->MergeNavigationBar('nav',array('size'=>7,'pos'=>'centred'),$page,$rec_nbr,$page_size); |
Méthode MergeSpecial() : |
Remplace les champs et blocs spéciaux du type spécifié. Syntaxe : $TBS->MergeSpecial(string Type)L'argument Type doit être l'une des valeurs suivantes :
Remarque : Par défaut, la méthode Show() replace tous les champs et blocs spéciaux juste avant l'affichage du résultat de la fusion. C'est pour cela qu'il est rare d'utiliser MergeSpecial() dans un programme. |
Propriété Render : |
Détermine comment doit se
terminer la fusion. Syntaxe : int $TBS->Render
|
Propriété Source : |
Définie ou renvoie le code
HTML sur lequel on applique les opérations de fusion. Après l'appel à la méthode LoadTemplate(), cette propriété contient le source HTML du modèle demandé. Cette propriété permet de lire ou modifier le résultat de la fusion, au fur et à mesure des traitements. Syntaxe : string $TBS->Source |
Les variables globales de TinyButStrong : |
TinyButStrong fourni certaines variables globales que vous
pouvez utiliser dans votre programme PHP. |
Ajout d'un type de source de données : |
Il est possible d'ajouter un autre type de source
de données non encore supporté en natif par TinyButStrong. Pour cela, vous devez coder trois fonctions avec des déclarations spécifiques et des noms correspondant au type à ajouter. N'ajouter pas ces fonctions dans le fichier source de TBS, codez les dans votre programme ou dans un script Php externe. Vous pouvez trouver des nouveaux types de sources de données sur le site Web de TinyButStrong. Identifiant TBS : L'argument $Source que vous passez à la méthode MergeBlock() a un identifier TBS que vous devez utiliser pour la nomination des fonctions.
L'identifiant TBS peut être arrangé par TBS pour convenir à un nom de fonction. Exemple :
Déclarations des fonctions : Les trois fonctions à ajouter dans votre programme doivent avoir les syntaxes suivantes : Remplacez le mot-clé 'customdb' par l'identifiant TBS identifier de votre type de source de données. function tbsdb_customdb_open(&$Source,&$Requete) {...} Cette fonction doit ouvrir la requête demandée, et retourner un identifiant de jeu d'enregistrements. En cas d'erreur, la fonction doit retourner la valeur False, et peut afficher un message.
Exemple :
function tbsdb_customdb_fetch(&$Rs{,$RecNum}) {...} Cette fonction doit retourner un tableau associatif correspondant à l'enregistrement en cours, avec les noms de colonnes et les valeurs. La fonction doit retourner la valeur False quand il n'y a plus d'enregistrement.
Exemple :
Si la source de données a besoin du numéro de l'enregistrement demandé, vous pouvez ajouter l'argument $RecNum à la déclaration de la fonction. Mais dans les autres cas, cet argument est facultatif parce que tous les enregistrements seront appelés dans l'ordre de toute façon. function tbsdb_customdb_close(&$Rs) {...} Cette fonction doit fermer ou libérer l'identifiant de jeu d'enregistrements. Elle n'a pas besoin de retourner une valeur.
Exemple :
|
Coté HTML : |
Vous concevez votre modèle en plaçant des balises TBS aux endroits
où doivent figurer les données.
Il existe deux types de balises TBS : les champs et les blocs.
Un champ TBS est une balise TBS qui doit être remplacé
par une donnée simple. Il est possible de spécifier un format
d'affichage ainsi que d'autres paramètres. La syntaxe des champs
TBS
est décrite ci-après.
Un bloc TBS est une région qui devra être répétée.
Il est défini par une ou deux balises TBS.
Le plus souvent il s'agit d'une ligne d'un tableau HTML. La syntaxe des blocs
TBS est décrite ci-après.
Les champs TBS : |
Un champ TBS est une balise
TBS qui doit être remplacé par une donnée simple. Il a un nom qui permet de l'identifier et on peut définir des paramètres pour modifier le comportement de l'affichage. Syntaxe : HTML ... [NomChamp;params] ... HTML
|
Les champs de variable Php : |
Un champ de variable Php est un champ qui affiche
une variable Php. Les variables utilisateurs ainsi que variables prédéfinies
peuvent être fusionnées mais elles doivent être globales.
Les variables de type Object et Ressource sont
ignorées. |
Les champs système : |
Un champ système est un champ TBS qui affiche
des données fournies par le système TinyButStrong.
Quand sont fusionnés les champs système ? Les champ système sont fusionnés à l'appel de la méthode Show(), c'est à dire juste avant l'affichage du résultat de la fusion. Mais vous pouvez forcer la fusion à tout moment avec la méthode MergeSpecial(). |
Les blocs TBS : |
Un bloc TBS permet d'afficher les données
d'une source d'enregistrements. La fusion entre un bloc et des données est réalisée grâce à la méthode MergeBlock(). Lors de la fusion, le bloc TBS est répété autant de fois qu'il y a d'enregistrements ; et les champs TBS associés sont remplacés par les valeurs des colonnes. Un champ fusion associé au bloc Bloc1 et qui affiche la valeur de la colonne ColonneA doit être nommé Bloc1.ColonneA Exemple : [Bloc1.ColonneA;frm='dd-mm-yyyy'] Deux blocs portant le même nom seront considérés comme deux sections du même bloc (voir sections de bloc). Syntaxes des blocs : Il existe trois syntaxes possibles pour définir un bloc TBS : Syntaxe explicite :
Quelle syntaxe utiliser ? La syntaxe 'explicite' est rarement utilisée avec des éditeurs visuels parce que les balises TBS doivent souvent être placés entre deux balises Html. Par contre, elle convient assez bien pour des éditeurs textuels. La syntaxe 'relative' permet de désigner un bloc avec seulement une balise TBS. De plus, on pas besoin de cacher la balise TBS car elle sera supprimée lors de l'affichage. Cette syntaxe est assez pratique. La syntaxe 'simplifiée' est réellement simple. Elle permet de définir un bloc TBS et un champ TBS avec une seule balise TBS. Cette syntaxe est la plus courante et la plus pratique. Astuce : Vous pouvez utiliser la syntaxe 'relative' ou 'simplifiée' avec des balises presonnelles ayant la norme Html. Exemple : <balise_perso>Bonjour [blk1.colonne1;block=balise_perso], comment allez vous ?</balise_perso> Paramètres des blocs :
|
Sections de bloc : |
Différents blocs portant le même
nom seront considérés
comme des sections du même bloc. Les sections peuvent servir pour : - alterner la présentation (sections normales), - afficher quelque chose si il n'y a aucun enregistrement (section NoData), - afficher un entête à chaque changement de la valeur d'une colonne (section HeaderGrp). Sections normales : Quand vous définissez plusieurs sections normales, elles seront utilisées de façon alternatives à chaque enregistrement.
Section NoData : Affiche la section si la source de données de contient aucun enregistrement. La section NoData est définie en ajoutant le paramètre nodata.
Section HeaderGrp : Affiche une section entête à chaque fois que la valeur d'une colonne du jeu d'enregistrement change. Une section Header est définie en ajoutant le paramètre headergrp=nom_colonne.
|
Affichage en série (en colonnes) : |
L'affichage en série permet d'afficher plusieurs
enregistrements dans un même bloc. Pour cela, on utilise un bloc
principal et des blocs secondaires.
Syntaxe : Le bloc principal et ses blocs secondaires sont fusionnés à l'aide d'un seul appel à la méthode MergeBock(). Le bloc principal doit être défini en utilisant le paramètre serial. Les blocs secondaires doivent être inclus dans le bloc principal. Leur nom de bloc doit être celui du bloc principal suivi de "_" puis du numéro d'ordre d'affichage.
Bloc secondaire vide : Vous pouvez désigner un bloc secondaire spécial qui sera utilisé en remplacement des blocs secondaires inexploités (sans enregistrement). Ce bloc secondaire "vide" doit avoir l'indice 0. Il peut être placé dans un bloc principal avec les blocs secondaires normaux, ou alors seul dans autre bloc serial. Le bloc secondaire "vide" est facultatif.
Remarque : L'affichage en série marche aussi avec les sections de bloc et les requêtes dynamiques. |
Requêtes dynamiques / sous-blocs : |
Principe des requêtes
dynamiques : Il est possible d'utiliser la méthode MergeBlock() avec une requête dynamique. Dans votre modèle, vous devez définir un bloc en ajoutant les paramètres p1, p2, p3,... avec leurs valeurs. La requête passée à la méthode MergeBlock() doit contenir des marqeurs %p1%, %p2%, %p3%, ... pour acueillir les valeurs des paramètres p1, p2, p3,... . Chaque section du bloc à fusionner contenant un paramètre p1 sera traité comme un bloc à part pour lequel on ré-exécute la requête dynamique. Les sections du bloc sui n'ont pas de paramètre p1 sont rattachées à la section avec paramètre p1 qui précède.
Utilisation avec des sous-blocs : Les requêtes dynamiques vous permettent de réaliser simplement un système de bloc-principal / sous-blocs. Voici comment vous pouvez faire : - Créez un bloc principal, puis un sous-bloc contenu dans le bloc principal. - Liez-les en ajoutant au sous-bloc un paramètre p1 qui prend pour valeur un champ du bloc principal. - Du côté PHP, fusionnez d'abord le bloc principal, puis le sous-bloc.
Remarques : - Le paramètre htmlconv=esc permet de passer à la requête des valeurs chaînes protégées. - Les les requêtes dynamiques marchent aussi avec les sections de bloc et l'affichages en série. |
Affichage d'une barre de navigation : |
TinyButStrong est capable d'afficher une barre de
navigation à partir de blocs spécifiques. La barre est fusionnée grâce à la méthode MergeNavigationBar().
Voici les éléments que vous pouvez utiliser pour construire votre barre de navigation : - Utilisez un bloc TBS normal pour afficher les numéros de pages normales. - Utilisez un autre bloc TBS du même nom mais avec le paramètre currpage pour afficher la page courante de façon différente. - Utilisez les champs suivants où vous voulez (dans un bloc ou hors d'un bloc) :
Astuce : Si vous utilisez le paramètre endpoint sur ces champs, alors lorsque la page courante est sur la première ou la dernière page, les champs correspondants retourneront une chaîne vide ('') au lieu d'un numéro de page. Cela permet de gérer des exceptions d'affichage avec la propriété friend par exemple.
|
Insérer un sous-modèle : |
Si un champ TBS contient le paramètre file,
alors ce champ sera remplacé par le contenu du fichier désigné au
moment de la fusion de ce champ.
La valeur du paramètre file peut être
une chaîne texte ou une expression composée de champs de variable
Php [var.*] et de mots-clés [val] (voir définition
de champ TBS). TinyButStrong récupère le contenu du fichier source tel quel. Si c'est un script Php, ce script ne sera pas exécuté. Pour insérer le résultat d'un script Php, voir la rubrique 'Insérer le résultat d'une script Php'. Si le fichier à insérer est un fichier Html, TinyButStrong ne conservera que le corps du fichier (délimité par les balises <body> et </body>). Le paramètre htmlconv (facultatif) permet de préciser si le contenu du fichier doit être converti en Html ou non. Par défaut il n'est pas converti en Html.
Préciser à quel moment est inséré le sous-modèle : Utilisez les champs spéciaux nommés tbs_include.onload et tbs_include.onshow pour préciser à quel moment le champ doit être fusionné. - Un champ nommé tbs_include.onload est fusionné automatiquement lors de l'appel à la méthode LoadTemplate(), juste après le chargement du modèle. - Un champ nommé tbs_include.onshow est fusionné automatiquement lors de l'appel à la méthode Show().
|
Insérer le résultat d'un script Php : |
Si un champ TBS contient le paramètre script,
alors le script désigné sera exécuté au moment
de la fusion de ce champ. La valeur du paramètre script peut être
une chaîne texte ou une expression composée de champs de
variable Php [var.*] ou du mot clé [val] (voir définition
de champ TBS).
Vous pouvez utiliser les variables globales de TinyButStrong dans votre script. Portée des variables : Le script sera exécuté comme si il était codé dans une fonction. Par conséquent, les variables globales ne seront pas reconnues dans le script appelé sauf si vous les déclarez à l'aide de l'instruction Php global ou que vous utilisez $GLOBALS. Redirection des commandes d'affichage : Si votre script Php contient des commandes d'affichage (telles que echo), alors le texte sera affiché normalement ; c'est à dire instantanément et donc avant le résultat de la fusion du modèle. Pour éviter ce comportement, vous pouvez utilisez le paramètre getob qui permet de rediriger le texte à la place du champ TBS. Avec getob : les textes passés à la commande echo seront affichés à la place du champ TBS. Sans getob: les textes passés à la commande echo seront affichés normalement, c'est à dire instantanément avant le résultat de la fusion. Empêcher le script de s'exécuter plusieurs fois : Si le nom du script risque d'apparaître plusieurs fois dans vos champ TBS, vous pouvez utiliser le paramètre once afin de limiter le script à une seule exécution. Préciser à quel moment est exécuté le script : Vous pouvez utiliser les champs spéciaux nommés tbs_include.onload et tbs_include.onshow pour préciser à quel moment le script doit être exécuté. Pour plus 'info sur ces champs spéciaux, consultez la rubrique 'Insérer un sous-modèle'. |
Affichage conditionnel : |
TinyButStrong offre plusieurs outils pour
gérer l'affichage conditionnel d'un champ ou d'un bloc. Pour un champ qui retourne une valeur, vous pouvez utiliser les paramètres des champs standards, rappelés ci-après. Pour les autres cas, vous pouvez utiliser les balises TBS spéciales nommées tbs_check. Elles ne retournent pas de valeur et sont dédiées à l'affichage conditionnel. Leur utilisation est détaillée ci-après. Paramètres d'affichage conditionnel pour un champ qui retourne une valeur : Pour plus d'information sur la définition d'un champ, consultez la rubrique Les champs TBS.
Utilisation des balises tbs_check : Les balises TBS nommées tbs_check sont des balises spéciales qui sont traitées automatiquement lors de l'exécution de la méthode Show() ou MergeSpecial(). On peut s'en servir pour un bloc ou un champ. -> Sans suffixe : Une balise tbs_check sans suffixe représente un champ. Il s'utilise avec les paramètres if, then et else afin d'afficher une valeur ou une autre selon la condition.
-> Avec suffixe : Une balise tbs_check avec un suffixe représente un bloc. Il doit avoir un paramètre 'block' défini. Les blocks tbs_check avec le même suffixe sont dans un même groupe. Dans un groupe, le premier bloc avec une condition vérifiée sera affiché, les autres seront supprimés. À l'aide du paramètre 'else', vous pouvez définir un block supplémentaire qui s'affiche lorsque aucune condition n'est véfifiée dans le groupe.
|
Résumés : |
Paramètres de champ TBS : |
|
Paramètres de bloc TBS : |
|
Champs et paramètres de barre de navigation : |
|
Noms de blocs et champs spéciaux : |
|
.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.: