INTRODUCTION
Ce document a pour but d'expliquer le rôle joué par Smarty au
sein de Xoops, et de décrire l'essentiel á connaitre de Smarty
dans le cadre de son utilisation avec Xoops :
- les méthodes pour les scripts,
- les fonctions et variables pour les templates.
Pour tout savoir sur Smarty, une documentation três complête,
et en français, est disponible sur le site offficiel de Smarty
Sommaire
1) Généralités sur Smarty
- Les templates
- Le rôle de Smarty
- Le cache
3) Les méthodes pour les scripts
Les templates
Les templates ont été créés pour permettre la séparation
entre le traitement de l'information et son affichage. On a ainsi :
le Php
pour le traitement des données: interfaçage avec la base de données,
calculs, gestion des cookies et sessions, traitement des chaines de caractêres,
etc.
le Html,
associé aux feuilles de style, pour la présentation des données
dans des tableaux, avec couleurs et images.
Les templates sont donc des fichiers Html particuliers, dans lesquels on trouvera
:
- des variables (<{$story.title}>, <{$story.text}>.)
qui seront remplacées, au moment de l'appel de la page, par le contenu
que leur aura assigné le script Php
- des fonctions (<{if $show_articles == true}> , <{include
file="db:news_item.html" story=$story}> ) permettant de conditionner
l'affichage de certaines parties au résultat d'un test, d'inclure un
autre template, ou encore de balayer un tableau de données transmis par
le script Php.
Les templates permettent donc de modifier facilement l'apparence d'une page
avec un éditeur Html, sans avoir á intervenir dans le code Php.
Le rôle de Smarty
Smarty est une application indépendante de Xoops que ce dernier utilise
pour l'affichage par templates, ainsi que leur compilation et la gestion du
cache.
C'est ce que l'on appelle un moteur de template dont le rôle est d'assurer
l'interfacage entre le script Php et le template.
La configuration générale de Smarty est réalisée
par Xoops, qui se charge également de l'interface utilisateur pour le
paramétrage du cache, qui, nous le verrons ensuite, est une fonctionnalité
de Smarty (et non de Xoops).
L'une des particularité de Smarty est d'intégrer un compilateur
de templates, lesquels seront enregistrés dans la base de données.
C'est la raison pour laquelle, aprês toute modification de template,
il faut exécuter une mise á jour du module ou du systême
pour que ces modifications soient prises en compte.
Le cache
L'un des inconvénients de l'utilisation d'un moteur de templates est
qu'il a besoin lui aussi de ressources serveur pour fonctionner. Le temps de
traitement d'une page utilisant les templates sera donc plus long qu'un affichage
direct par le script Php.
Pour compenser cet inconvénient, les développeurs de Smarty ont
donc intégré un systême de mise en cache : certaines pages,
ou portions de pages, ne sont pas générées á chaque
appel du navigateur, mais stockées directement en Html, prêtes
á l'emploi, dans un répertoire spécifique (templates_c).
Lá encore, même si le paramêtrage du cache et l'interfacage
avec l'utilisateur pour les modules ou blocs á mettre en cache est réalisé
par Xoops, ce systême de cache est totalement géré par
Smarty.
2) Notions de base
Méthodes
Les méthodes sont utilisées dans les scripts
Php.
Elles permettent d'assigner des valeurs aux variables smarty par valeur
ou référence, sous forme de valeurs simples ou de tableaux.
La classe XoopsTpl étant une classe dérivée de la
classe Smarty, toutes les méthodes de Smarty peuvent être
utilisées avec
$xoopsTpl->methode_Smarty (ex. xoopsTpl->append('stories',
$story) )
Méthodes Smarty
Délimiteurs
Les constantes, variables et fonctions, utilisées dans
les templates, doivent être délimitées.
Smarty
autorisant la personnalisation des délimiteurs, les symboles <{
et }> sont ceux défini par Xoops.
Commentaires
Il
est possible d'insérer des commentaires dans les templates sous
la forme :
<{* Ceci est un commentaire*}>
Attention, ils n'apparaitront pas dans le code source de la page,
contrairement aux commentaires Html.
Fonctions
Les fonctions de Smarty sont les fonctions utilisables
dans les templates:
Elles permettent notamment :
- l'inclusion d'autres templates
- des instructions conditionnelles
- le parcours de tableaux pour en afficher les données
Ne seront détaillées que les fonctions utilisées
couramment avec Xoops (include, section, if, etc.)
Fonctions Smarty
Variables
Les variables sont utilisées dans les templates
:
- soit pour être affichées directement
- soit pour être utilisées comme arguments de fonctions ou
au sein d'instructions conditionnelles.
On distingue 3 types de variables :
- Les variables réservées Smarty
- Les variables chargées depuis des fichiers de configuration (non
développé ici)
- Les variables assignées depuis Php; nous listerons les variables
assignées par Xoops, comme <{xoops_isadmin}>
ou <{xoops_footer}>
Variables Smarty
Modificateurs de variables
Les modificateurs de variables peuvent être appliqués
aux variables, fonctions et chaines de caractêres.
Ils sont utilisés pour des modification du texte : mise en majuscules,
minuscules, troncature, suppression d'espace, etc.
Indiqués pour mémoire, n'étant en principe pas utilisés
avec Xoops, les traitements de chaines de caractêres étant réalisés
dans le Php.
Ex : <{$sujet | truncate:40:"..."}>
troncature du texte 'sujet' á 40 caractêres, suivi de ...
Smarty : méthodes La classe xoopsTpl (fichier class/template.php)
est une classe dérivée de la classe Smarty.
NB: de nombreuses méthodes (de la classe Smarty, ou de la
classe dérivée) ne sont pas décrites, étant
utilisées principalement par le core de Xoops. assign assign (string | array $tpl_var, mixed $value = null)
// Passage d'une paire nom/valeur assign_by_ref
append append (string | array $tpl_var, mixed $value = null) Exemples (avec fonction section dans le template)
append_by_ref Exemple (avec boucle foreach dans le template)
display $xoopsTpl->display (string $template) Exemple include_once XOOPS_ROOT_PATH.'/class/template.php'; xoops_template_clear_module_cache xoops_template_clear_module_cache (int $mid)
include_once XOOPS_ROOT_PATH.'/class/template.php';
|
Smarty : variables Ces variables smarty, qu'elles soient assignées par Xoops ou réservées pour Smarty sont utilisables dans tous les templates.Variables assignées - Variables assignées par Xoops dans le fichier header.php,
á partir des données de la Bdd.
* Variables nécessaires au template du thême: theme.html
<{$smarty.const}> <{$smarty.now}> C. Felix AKA theCat le 15/06/04
|
Smarty : fonctions Smarty dispose en standard de plusieurs fonctions utilisables dans
les templates.
include
if, elseif, else
Exemple Exemple avec opérateurs Exemple pour affichage sur 3 colonnes foreach,
foreachelse
section,
sectionelse
|