diff --git a/docs/fr/appendixes.sgml b/docs/fr/appendixes.sgml deleted file mode 100644 index e11ef1df..00000000 --- a/docs/fr/appendixes.sgml +++ /dev/null @@ -1,408 +0,0 @@ - - Appendices - - Diagnostic des erreurs - - - Erreurs Smarty/PHP - - Smarty peut identifier de nombreuses erreurs comme des attributs de - balises manquants ou de noms de variables malformés. Dans ce cas-là, - vous verrez apparaître une erreur semblable à : - - -erreurs Smarty - -Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah' - in /path/to/smarty/Smarty.class.php on line 1041 - -Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name - in /path/to/smarty/Smarty.class.php on line 1041 - - - - Smarty vous indique le nom du template, le numéro de la ligne et l'erreur. - Après cela, vous pouvez connaître le numéro de ligne où il y a eu erreur dans - la définition de la classe Smarty. - - - - Il y a certaines erreurs que Smarty ne peut pas détecter, comme les - balises fermantes manquantes. Ce type d'erreurs est la plupart du temps - repéré dans la phase de compilation PHP du template compilé. - - - -erreur d'analyse PHP - -Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75 - - - - Quand vous rencontrez une erreur d'analyse PHP, le numéro de la ligne - indiqué est celui du fichier PHP compilé et non du template. Vous pouvez alors - regarder le template et détecter l'erreur. Voici quelques erreurs fréquentes : - balises fermantes pour {if}{/if} ou {section}{/section} manquantes, ou - syntaxe logique incorrecte dans une instruction {if}. Si vous ne trouvez pas l'erreur, - vous devrez alors ouvrir le fichier PHP compilé et aller à la ligne correspondante pour - trouver d'où vient l'erreur. - - - - - Trucs et astuces - - - - Gestion des variables non-assignées - - Peut-être voudrez-vous des fois afficher une valeur par défaut pour - une variable qui n'a pas été assignée, comme pour afficher "&nbsp;" - afin que les couleurs de fond des tableaux fonctionnent. Beaucoup utiliseraient - une instruction {if} pour gérer cela, mais il existe un moyen plus facile dans - Smarty, l'utilisation du modificateur de variable default. - - -afficher &nbsp; quand une variable est vide - - -{* la méthode pas adaptée *} - -{if $title eq ""} - &nbsp; -{else} - {$title} -{/if} - - -{* la bonne méthode *} - -{$title|default:"&nbsp;"} - - - - - Gestion des variables par défaut - - Si une variable est utilisée fréquemment dans vos templates, - lui appliquer le modificateur par défaut peut être un peu fastidieux. - Vous pouvez remédier à cela en lui assignant une valeur par défaut - avec la fonction assign. - - -assigner une valeur par défaut à une variable de template - -{* faites cela qq part en haut de votre template *} -{assign var="title" value=$title|default:"no title"} - -{* si $title est vide, il contiendra alors no "no title" *} -{$title} - - - - Passage du titre à un template d'en-tête - - Quand la majorité de vos templates utilisent les mêmes en-tête et pied-de-page, - il est d'usage de les mettre dans leurs propres templates et de les inclure. - Mais comment faire si l'en-tête doit avoir un titre différent, selon la page - d'où on vient ? Vous pouvez passer le titre à l'en-tête quand il est inclus. - - -passer le titre au template d'en-tête - - -mainpage.tpl ------------- - -{include file="header.tpl" title="Main Page"} -{* le corps du template va ici *} -{include file="footer.tpl"} - - -archives.tpl ------------- - -{config_load file="archive_page.conf"} -{include file="header.tpl" title=#archivePageTitle#} -{* le corps du template va ici *} -{include file="footer.tpl"} - - -header.tpl ----------- -<HTML> -<HEAD> -<TITLE>{$title|default:"BC News"}</TITLE> -</HEAD> -<BODY> - - -footer.tpl ----------- -</BODY> -</HTML> - - - Quand la page principale est conçue, le titre "Main page" est passé à header.tpl - et sera donc utilisé pour le titre. Quand la page d'archive est conçue, - le titre sera "Archives". Notez que dans l'exemple des archives, on utilise - le fichier archives_page.conf plutôt que des variables codées en dur. - Remarquez aussi que "BC News" est affichée si la variable $title - n'est pas définie, grâce au modificateur de variable default. - - - - Dates - - De façon générale, essayez de toujours passer les dates à Smarty - sous forme de timestamp. Cela permet aux designers de templates d'utiliser - date_format - pour avoir un contrôle total sur le formatage des dates et de comparer - facilement les dates entre elles. - - - NOTE : à partir Smarty 1.4.0, vous pouvez passer les dates à Smarty - sous la forme de timestamps Unix ou MySQL, ou tout autre format de dates - que comprend strtotime(). - - -utilisation de date_format - -{$startDate|date_format} - -OUTPUT: - -Jan 4, 2001 - - -{$startDate|date_format:"%Y/%m/%d"} - -OUTPUT: - -2001/01/04 - - -{if $date1 < $date2} - ... -{/if} - - - En utilisant la fonction {html_select_date} dans un template, le programmeur - veut en général convertir le résultat d'un formulaire en un timestamp. - Voici une fonction qui devrait vous être utile. - - -conversion des éléments date d'un formulaire en timestamp - -// cela suppose que vos éléments de formulaire soient nommés -// startDate_Day, startDate_Month, startDate_Year - -$startDate = makeTimeStamp($startDate_Year,$startDate_Month,$startDate_Day); - -function makeTimeStamp($year="",$month="",$day="") -{ - if(empty($year)) - $year = strftime("%Y"); - if(empty($month)) - $month = strftime("%m"); - if(empty($day)) - $day = strftime("%d"); - - return mktime(0,0,0,$month,$day,$year); -} - - - - WAP/WML - - Les templates WAP/WML nécessitent un en-tête "Content-Type" qui doit être - passé avec le template. Le moyen le plus facile de faire cela est d'écrire - une fonction utilisateur qui écrit l'en-tête. Si vous utilisez le cache, - cela ne fonctionnera pas. Nous utiliserons donc une balise d'insertion - (rappelez-vous que les balises d'insertion ne sont pas mises en cache !). - Assurez-vous qu'aucune sortie - rien n'est transmise au navigateur avant l'appel du template, sans quoi - la modification de l'en-tête échouera. - - -utilisation d'insert pour écrire un en-tête Content-Type WML - -// assurez-vous que Apache est configuré pour les extensions .wml ! -// mettez cette fonction qq part dans votre applications -// ou dans Smarty.addons.php -function insert_header() { - // cette fonction attend un argument $content - extract(func_get_arg(0)); - if(empty($content)) - return; - header($content); - return; -} - -// votre template Smarty DOIT commencer avec la balise d'insertion - -<?xml version="1.0"?> -<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> - -<!-- begin new wml deck --> -<wml> -<!-- begin first card --> -<card> -<do type="accept"> -<go href="#two"/> -</do> -<p> -Welcome to WAP with Smarty! -Press OK to continue... -</p> -</card> -<!-- begin second card --> -<card id="two"> -<p> -Pretty easy isn't it? -</p> -</card> -</wml> - - - - Templates composants - - Cette astuce tient plus du hack qu'autre chose mais n'en demeure pas - moins une idée plutôt chouette. Utilisez-la à vos propres risques. ;-) - - - Traditionnellemnt, la programmation avec des templates dans les applications - se déroule de la façon suivante : d'abord vous récupérez vos variables - dans l'application PHP (peut-être avec des requêtes en base de données), puis - vous instanciez votre objet Smarty, assignez les variables et affichez le - template. Disons par exemple que nous avons un téléscripteur dans - notre template. Nous récupérerions les données dans notre application, - puis les assignerions ensuite pour les afficher. Mais ne serait-ce pas - mieux de pouvoir ajouter ce téléscripteur à n'importe quelle application - en incluant directement le template sans avoir à se soucier de la récupération - des données. - - - Vous pouvez intégrer du PHP dans vos templates avec les balises - {php}{/php}. Avec cette méthode, vous pouvez inclure des templates complets, - dans la mesure où ils récupèrent leurs propres données pour les assigner - à leurs propres variables. Avec le traitement intégré - de cette façon, vous pouvez garder le template et le traitement ensemble. - Ainsi, on ne se soucie plus d'où vient le contenu du template, - tout vient comme un seul et unique composant. - - -template composant - -{* Smarty *} - -{php} - - // notre fonction pour récupérer les données - function fetch_ticker($symbol,&$ticker_name,&$ticker_price) { - // du traitement qui récupère $ticker_name - // $ticker_price - } - - // appelle la fonction - fetch_ticker("YHOO",$ticker_name,$ticker_price); - - // assigne les variables - $this->assign("ticker_name",$ticker_name); - $this->assign("ticker_price",$ticker_price); - -{/php} - -Stock Name: {$ticker_name} Stock Price: {$ticker_price} - - - A partir de Smarty 1.5.0, il y a même un moyen plus propre. Vous - pouvez inclure du PHP dans votre template avec la balise {include_php ...}. - De cette façon, vous pouvez garder séparée la logique applicative - de la logique de présentation. Reportez-vous à la fonction include_php pour plus - d'informations. - - -template composant avec include_php - -load_ticker.php ---------------- - -<?php - // notre fonction pour récupérer les données - function fetch_ticker($symbol,&$ticker_name,&$ticker_price) { - // put logic here that fetches $ticker_name - // and $ticker_price from some resource - } - - // appelle la fonction - fetch_ticker("YHOO",$ticker_name,$ticker_price); - - // assigne les variables - $this->assign("ticker_name",$ticker_name); - $this->assign("ticker_price",$ticker_price); -?> - - -index.tpl ---------- - -{* Smarty *} - -{include_php file="load_ticker.php"} - -Stock Name: {$ticker_name} Stock Price: {$ticker_price} - - - - Dissimuler les adresses email - - Vous-êtes vous déjà demandé pourquoi vos adresses emails sont sur autant - de mailing listes de spam ? Une façon pour les spammers de récupérer les - adresses est de parcourir les pages Web. Voici une façon de remédier - à ce problème : mettre votre adresse email dans du Javascript brouillé - au milieu de votre source HTML, sans que cela ne gêne l'affichage sur le - navigateur Web. Cela est fait grâce au plugin mailto. - - -exemple de dissimulation d'une adresse email - - -index.tpl ---------- - -Send inquiries to -{mailto address=$EmailAddress encode="javascript" subject="Hello"} - - - - - Note technique - - Cette méthode n'est pas infaillible. Un spammer peut programmer son - collecteur d'email pour passer outre cette astuce, mais c'est cependant - peu probable. - - - - - - Ressources - - La page Web de Smarty se trouve à l'adresse suivante : http://smarty.php.net/. - Vous pouvez souscrire à la mailing liste en envoyant un email à - smarty-general-subscribe@lists.php.net. - Les archives de la mailing list se trouvent à l'adresse suivante : - http://marc.theaimsgroup.com/?l=smarty&r=1&w=2 - - - - BUGS - - Vérifiez le fichier de BUGS fourni avec la dernière version de Smarty ou - consultez le site Web. - - - diff --git a/docs/fr/designers.sgml b/docs/fr/designers.sgml deleted file mode 100644 index db979991..00000000 --- a/docs/fr/designers.sgml +++ /dev/null @@ -1,5788 +0,0 @@ - - Smarty pour les graphistes - - - Bases syntaxiques - - Toutes les balises Smarty sont entourées de délimiteurs. Par défaut, - ces délimiteurs sont { et - }, mais ils peuvent être modifiés. - - - Pour ces exemples, nous supposons que vous utiliserez leur valeur par défaut. - Dans Smarty, le contenu qui est situé en dehors des délimiteurs - est affiché comme contenu statique, inchangé. Lorsque Smarty rencontre - des balises de template, il tente de les comprendre et en affiche la sortie - appropriée, en lieu et place. - - - - Commentaires - - Les commentaires dans Smarty sont entourés d'asterisques, de cette - façon : {* voici un commentaire *} - Les commentaires Smarty ne sont pas affichés dans la sortie finale du - template. - Ils sont utilisés pour des notes internes, dans le template, pour aider - les développeurs à en comprendre le fonctionnement. - - - Commentaires - -{* Smarty *} - -{* Inclusion de l'en tête *} -{include file="header.tpl"} - -{include file=$includeFile} - -{include file=#includeFile#} - -{* affiche des listes déroulantes *} -<SELECT name=company> -{html_options values=$vals selected=$selected output=$output} -</SELECT> - - - - - Fonctions - - Les balises Smarty affichent une variable - ou invoquent une fonction. Les fonctions sont appelées - lorsqu'elles sont entourées, ainsi que leurs paramètres, des délimiteurs Smarty. - Par exemple : {nomfonction par1="val" par2="val"}. - - - syntaxe des fonctions - -{config_load file="colors.conf"} - -{include file="header.tpl"} - -{if $name eq "Fred"} - Vous êtes admis dans cette zone -{else} - Bienvenue, <font color="{#fontColor#}">{$name}!</font> -{/if} - -{include file="footer.tpl"} - - - Les fonctions natives et les fonctions utilisateurs ont toutes deux la même - syntaxe, dans les templates. Les fonctions natives sont relatives - au traitement interne de Smarty, comme par exemple if, - section et strip. Elles ne peuvent - être modifiées. Les fonctions utilisateurs sont des fonctions additionnelles, - implémentées par l'intermédiaire de plugins. - Elles peuvent être modifiées pour correspondre à vos besoins, et vous - pouvez en créer de nouvelles. html_options et - html_select_date sont deux exemples de fonctions - utilisateurs. - - - - - Paramètres - - La plupart des fonctions attendent des paramètres qui régissent leur - comportement. Les paramètres des fonctions Smarty sont très proches des - attributs des balises HTML. Les valeurs numériques n'ont pas besoin d'être - entourées par des guillemets, par contre, ces guillemets sont recommandées lors - de l'utilisation de chaînes de caractères. Des variables peuvent aussi être - utilisées en tant que paramètres, et ne doivent pas être entourées de guillemets. - - - Certains paramètres requièrent des valeurs booléennes (true / false). - Elles peuvent être spécifiées par l'une des valeures suivantes, sans - guillemet: true, on, et yes, - ou false, off, et no. - - - Paramètres de fonction, syntaxe - -{include file="header.tpl"} - -{include file=$includeFile} - -{include file=#includeFile#} - -{html_select_date display_days=yes} - -<SELECT name=company> -{html_options values=$vals selected=$selected output=$output} -</SELECT> - - - - Variables insérées dans des chaînes de caractères - - Smarty est capable d'interpréter les variables insérées à l'intérieur de - chaînes entre guillemets, du moment que leur nom est exclusivement composé - de chiffres, lettres, underscores et crochets. Si le nom de la variable - contient tout autre caractère (point, référence à un objet, etc.) - la variable doit être entourée d'apostrophes inverses (`). - - - Syntaxe d'insertion de variables dans des chaînes - -EXEMPLE DE SYNTAXE: -{func var="test $foo test"} <-- comprends $foo -{func var="test $foo_bar test"} <-- comprends $foo_bar -{func var="test $foo[0] test"} <-- comprends $foo[0] -{func var="test $foo[bar] test"} <-- comprends $foo[bar] -{func var="test $foo.bar test"} <-- comprends $foo (not $foo.bar) -{func var="test `$foo.bar` test"} <-- comprends $foo.bar - -EXEMPLE PRATIQUE: -{include file="subdir/$tpl_name.tpl"} <-- remplace $tpl_name avec la valeur -{cycle values="one,two,`$smarty.config.myval`"} <-- doit comporter les -apostrophes inverses - - - - - - - Variables - - Smarty possède différents types de variables. Le type de ces variables dépend - du symbole qui les préfixe, ou des symboles qui les entourent. - - - - Les variables de Smarty peuvent être soit affichées directement, soit utilisées - comme arguments pour les fonctions et modificateurs, à l'intérieur d'expressions - conditionnelles, etc. - Pour afficher une variable, il suffit de l'entourer par des délimiteurs de - telle sorte qu'elle soit la seule chose qu'ils contiennent. Exemple : - -{$Nom} - -{$Contacts[enreg].Telephone} - -<body bgcolor="{#bgcolor#}"> - - - - Variables assignées depuis PHP - - Pour utiliser une variables assignées depuis PHP, il faut la préfixer par le - symbole dollar $. Les variables asignées depuis un - template grâce à la fonction assign - sont manipulées de la même façon. - - - - Variables assignées - -Bienvenue {$prenom}, heureux de voir que tu es arrivé ici. -<p> -La dernière connexion remonte au {$dateConnexionPrecedente}. - -SORTIE: - -Bienvenue Doug, heureux de voir que tu est arrivé ici. -<p> -La dernière connexion remonte au 11 janvier 2001. - - - - Tableaux associatifs - - Vous pouvez également utiliser des variables sous forme de tableaux - associatifs assignées depuis PHP en en spécifiant la clef, - après le symbole '.' (point). - - -accéder aux variables de tableaux associatifs - -index.php: - -$smarty = new Smarty; -$smarty->assign('Contacts', - array('fax' => '555-222-9876', - 'email' => 'zaphod@slartibartfast.com', - 'phone' => array('home' => '555-444-3333', - 'cell' => '555-111-1234'))); -$smarty->display('index.tpl'); - -index.tpl: - -{$Contacts.fax}<br> -{$Contacts.email}<br> -{* you can print arrays of arrays as well *} -{$Contacts.phone.home}<br> -{$Contacts.phone.cell}<br> - -SORTIE: - -555-222-9876<br> -zaphod@slartibartfast.com<br> -555-444-3333<br> -555-111-1234<br> - - - - Tableaux indexés - - Vous pouvez utiliser des tableaux indexés de la même façon que vous le - faites en PHP. - - -Accès aux tableaux grâce à l'index - -index.php: - -$smarty = new Smarty; -$smarty->assign('Contacts', - array('555-222-9876', - 'zaphod@slartibartfast.com', - array('555-444-3333', - '555-111-1234'))); -$smarty->display('index.tpl'); - -index.tpl: - -{$Contacts[0]}<br> -{$Contacts[1]}<br> -{* you can print arrays of arrays as well *} -{$Contacts[2][0]}<br> -{$Contacts[2][1]}<br> - -SORTIE: - -555-222-9876<br> -zaphod@slartibartfast.com<br> -555-444-3333<br> -555-111-1234<br> - - - - Objets - - Les attributs des objets assignés depuis PHP peuvent être utilisées en - en spécifiant le nom après le symbole '->'. - - -accéder aux attributs des objets - -nom: {$person->name}<br> -email: {$person->email}<br> - -SORTIE: - -nom: Zaphod Beeblebrox<br> -email: zaphod@slartibartfast.com<br> - - - - - - Variables chargées depuis des fichiers de configuration - - Les variables récupérées depuis un fichier de configuration sont utilisées - entourées du symbole dièse (#), ou via la variable spéciale smarty - $smarty.config. - - - -variables de fichiers de configuration - -foo.conf: - -pageTitle = "C'est le mien" -bodyBgColor = "#eeeeee" -tableBorderSize = "3" -tableBgColor = "#bbbbbb" -rowBgColor = "#cccccc" - -index.tpl: - -{config_load file="foo.conf"} -<html> -<title>{#pageTitle#}</title> -<body bgcolor="{#bodyBgColor#}"> -<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"> -<tr bgcolor="{#rowBgColor#}"> - <td>First</td> - <td>Last</td> - <td>Address</td> -</tr> -</table> -</body> -</html> - -index.tpl: (alternate syntax) - -{config_load file="foo.conf"} -<html> -<title>{$smarty.config.pageTitle}</title> -<body bgcolor="{$smarty.config.bodyBgColor}"> -<table border="{$smarty.config.tableBorderSize}" bgcolor="{$smarty.config.tableBgColor}"> -<tr bgcolor="{$smarty.config.rowBgColor}"> - <td>First</td> - <td>Last</td> - <td>Address</td> -</tr> -</table> -</body> -</html> - - -SORTIE: (same for both examples) - -<html> -<title>C'est le mien</title> -<body bgcolor="#eeeeee"> -<table border="3" bgcolor="#bbbbbb"> -<tr bgcolor="#cccccc"> - <td>First</td> - <td>Last</td> - <td>Address</td> -</tr> -</table> -</body> -</html> - - - Les variables de fichier de configuration ne peuvent être utilisés tant - qu'elles n'ont pas été chargées. Cette procédure est expliquée - plus loin dans le document, voir config_load. - - - - - Variable réservée {$smarty} - - La variable réservée {$smarty} peut être utilisée pour accéder à plusieurs - variables spéciales du template. En voici la liste complète. - - - - Variables de requête - - Les variables de requête comme GET, POST, COOKIES, SERVER, ENVIRONNEMENT - et SESSION peuvent être utilisées comme dans l'exemple suivant: - - - - Afficher des variables de requête - -{* Affiche la valeur de page dans l'url (GET) http://www.domain.com/index.php?page=foo *} -{$smarty.get.page} - -{* affiche la variable "page" récupérée depuis un formulaire (POST) *} -{$smarty.post.page} - -{* affiche la valeur du cookie "utilisateur" *} -{$smarty.cookies.utilisateur} - -{* affiche la variable serveur "SERVER_NAME" *} -{$smarty.server.SERVER_NAME} - -{* affiche la variable d'environnement "PATH" *} -{$smarty.env.PATH} - -{* affiche la variable de session PHP "id" *} -{$smarty.session.id} - -{* affiche la variable "utilisateur" du regroupement de get/post/cookies/server/env *} -{$smarty.request.utilisateur} - - - - - {$smarty.now} - - Le timestamp courant peut être récupéré grâce à {$smarty.now}. - Le nombre obtenu correspond au nombre de secondes écoulées depuis - Epoch (1 Janvier 1970) et peut être passé directement au modificateur - de variable date à des fins d'affichage. - - - -utilisation de {$smarty.now} - -{* utilise le modificateur de variable date_format pour afficher la date et heure *} -{$smarty.now|date_format:"%d-%m-%Y %H:%M:%S"} - - - - {$smarty.const} - - Vous pouvez directement accéder aux constantes PHP. - - - -Utiliser {$smarty.const} - -{$smarty.const._MA_CONSTANTE_} - - - - - {$smarty.capture} - - La capture réalisée via {capture}..{/capture} peut être récupérée - par l'intermédiaire de la variable {$smarty}. Voir la section - sur capture pour un - exemple à ce sujet. - - - - - {$smarty.config} - - La variable {$smarty} peut être utilisée pour désigner une variable - d'un fichier de configuration. {$smarty.config.foo} est un synonyme de - {#foo#}. Voir la section config_load - pour un exemple à ce sujet. - - - - - {$smarty.section}, {$smarty.foreach} - - La variable {$smarty} peut être utilisée pour accéder aux propriétés - des boucles 'section' et 'foreach'. Voir la documentation de - section et - foreach. - - - - - {$smarty.template} - - Cette variable contient le nom du template en cours de traitement. - - - - - - - - Modificateurs de variables - - Les modificateurs de variables peuvent être appliqués aux variables, - fonctions utilisateurs ou chaînes de caractères. Pour appliquer un modificateur - de variable, tappez une valeure suivie de | - (pipe) et du nom du modificateur. Un modificateur de variable - est succeptible d'accepter des paramètres additionnels, qui en affectent - le comportement. Ces paramètres suivent le nom du modificateur et - sont séparés par un : (deux points). - - - Exemple de modificateur - -{* Met le titre en majuscule *} -<h2>{$title|upper}</h2> - -{* Tronque le sujet à 40 caractères, place des "..." à la fin *} -Sujet: {$sujet|truncate:40:"..."} - -{* formatage en chaîne *} -{"now"|date_format:"%Y/%m/%d"} - -{* application d'un modificateur à une fonction utilisateur *} -{mailto|upper address="me@domain.dom"} - - - Si vous appliquez un modificateur de variable à un tableau plutôt qu'à une - variable simple, le modificateur sera appliqué à chaque valeur du tableau. - Si vous souhaitez que le modificateur travaille réellement avec le tableau - en tant que tel, vous devez préfixer le nom du modificateur avec un symbole - @ comme ceci: {$titreArticle|@count} - (Affiche le nombre d'élements du tableau $titreArticle.) - - - - capitalize - - Met la première lettre de chaque mot d'une variable en majuscule. - - - capitalize - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', 'La police commence une campagne de sensibilisation contre la violence routière.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|capitalize} - -SORTIE: - -La police commence une campagne de sensibilisation contre la violence routière. -La Police Commence Une Campagne De Sensibilisation Contre La Violence Routière. - - - - count_characters - - Compte le nombre de caractères dans une variable. - - -count_characters - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', 'Vagues de froid liées à la température.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|count_characters} - -SORTIE: - -Vagues de froid liées à la température. -39 - - - - - cat - - - - - - - - - - Position du paramètre - Type - Requis - cat - Description - - - - - 1 - chaîne de caractères - Non - empty - Valeur à concaténer à la variable donnée. - - - - - - Cette valeur est concaténée à la variable donnée. - - -cat - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', 'Les devins ont prévus que le monde existera toujours '); -$smarty->display('index.tpl'); - -index.tpl: - -{$TitreArticle|cat:" demain."} - -SORTIE: - -Les devins ont prévus que le monde existera toujours demain. - - - - count_paragraphs - - Compte le nombre de paragraphes dans une variable. - - -count_paragraphs - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', 'La guerre apporte la paix, au prix de la vie de certains innocents.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$TitreArticle} -{$TitreArticle|count_paragraphs} - -SORTIE: - -La guerre apporte la paix, au prix de la vie des innocents. -1 - - - - count_sentences - - Compte le nombre de phrases dans une variable. - - -count_sentences - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', 'Deux navires rentrent en -collision - Un des deux coule. Des vaches enragées blessent un fermier à -coups de haches.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$TitreArticle} -{$TitreArticle|count_sentences} - -SORTIE: -Deux navires rentrent en collision -- Un des deux coule. Des vaches enragées blessent un fermier -à coups de haches. - -2 - - - - count_words - - Compte le nombre de mots dans une variable. - - -count_words - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', 'Un anneau pour les gouverner tous.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|count_words} - -SORTIE: - -Un anneau pour les gouverner tous. -6 - - - - date_format - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - chaîne de caractères - Non - %b %e, %Y - Format de sortie de la date. - - - 2 - chaîne de caractères - Non - n/a - Date par défaut si aucune n'est spécifiée en entrée. - - - - - - Formate une date / heure au format strftime donné. Les dates peuvent - être passées à smarty en tant que timestamp unix, timestamp mysql ou - comme chaîne quelconque contenant mois jour année (interprétable par - strtotime). Les concepteurs de templates peuvent utiliser date_format - pour contrôler parfaitement le format de sortie de la date. - Si la date passée à date_format est vide, et qu'un second paramètre - est donné, ce dernier sera utilisé comme étant la date à formater. - - -date_format - -index.php: - -$smarty = new Smarty; -$smarty->assign('hier', strtotime('-1 day')); -$smarty->display('index.tpl'); - -index.tpl: - - -{$smarty.now|date_format} -{$smarty.now|date_format:"%A, %B %e, %Y"} -{$smarty.now|date_format:"%H:%M:%S"} -{$hier|date_format} -{$hier|date_format:"%A, %B %e, %Y"} -{$hier|date_format:"%H:%M:%S"} - -SORTIE: - -Feb 6, 2001 -Tuesday, February 6, 2001 -14:33:00 -Feb 5, 2001 -Monday, February 5, 2001 -14:33:00 - - -date_format indicateurs de convertion - -%a - Abréviation du jour de la semaine, selon les paramètres locaux. - -%A - Nom du jour de la semaine, selon les paramètres locaux. - -%b - Abréviation du nom du jour, selon les paramètres locaux. - -%B - Nom complet du mois, selon les paramètres locaux. - -%c - Préférences d'affichage selon les paramètres locaux. - -%C - Siècle, (L'année divisée par 100 et tronquée comme un entier, de 00 à 99) - -%d - Jour du mois, en tant que nombre décimal (de 00 à 31) - -%D - même chose que %m/%d/%y - -%e - Jour du mois en tant que nombre décimal. Un chiffre unique est précédé par -un espace (de 1 à 31) - -%g - Position de la semaine dans le siècle [00,99] - -%G - Position de la semaine, incluant le siècle [0000,9999] - -%h - identique à %b - -%H - L'heure en tant que décimale, en utilisant une horloge sur 24 (de 00 à 23) - -%I - L'heure en tant que décimale en utilisant une horloge sur 12 (de 01 to 12) - -%j - jour de l'année (de 001 à 366) - -%k - Heure (horloge sur 24). Les numéros à un chiffre sont précédés d'un espace. (de 0 à 23) - -%l - Heure (horloge sur 12). Les numéros à un chiffre sont précédés d'un espace. (de 1 à 12) - -%m - Mois en tant que nombre décimal (de 01 à 12) - -%M - Minute en tant que nombre décimal - -%n - Retour chariot (nouvelle ligne). - -%p - soit am soit pm selon l'heure donnée, ou alors leurs correspondances locales. - -%r - heure en notation a.m. et p.m. - -%R - Heure au format 24 heures - -%S - Secondes en tant que nombre décimal. - -%t - Caractère tabulation. - -%T - Heure courante, équivalent à %H:%M:%S - -%u - Jour de la semaine en tant que nombre décimal [1,7], ou 1 représente le lundi. - -%U - Le numéro de la semaine en nombre décimal, utilisant le premier dimanche -en tant que premier jour de la première semaine. - -%V - Le numéro de la semaine de l'année courante selon la norme ISO 8601:1988, - de 01 à 53, ou la semaine 1 est la première semaine qui dispose au minimum - de 4 jours dans l'année courante et ou Lundi est le premier jour - de cette semaine. - -%w - Jour de la semaine en tant que nombre décimal, dimanche étant 0 - -%W - Le numéro de la semaine de l'année courante en tant que nombre décimal, - ou Lundi est le premier jour de la première semaine. - -%x - Représentation préférée de la date selon les paramètres locaux. - -%X - Représentation préférée de l'heure selon les paramètres locaux, sans la - date. - -%y - L'année en tant que nombre décimal, sans le siècle. (de 00 à 99) - -%Y - L'année en tant que nombre décimal, avec le siècle. - -%Z - Zone horraire, nom ou abréviation - -%% - Un caractère litéral `%' - -NOTE AUX DEVELOPPEURS: date_format est un alias de la fonction -PHP strftime(). Il est probable que vous disposiez de plus ou moins d'options -disponibles selon le système sur lequel PHP a été compilé (strftime ()). -Reportez vous à l'aide de votre système pour une liste complète des -paramètres disponibles. - - - - - default - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - chaîne de caractères - Non - empty - La valeur par défaut de la sortie si la variable - d'entrée est vide. - - - - - - Utilisé pour définir une valeur par défaut à une variable. - Si la variable est vide ou indéfinie, la valeur donnée est affichée - en lieu et place. Default attends un seul argument. - - -default - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', 'Les portes de la moria restent fermées.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$TitreArticle|default:"pas de titre"} -{$monTitre|default:"pas de titre"} - -SORTIE: - -Les portes de la moria restent fermées. -pas de titre - - - - escape - - - - - - - - - - - Position du paramètre - Type - Requis - Valeurs possibles - Defaut - Description - - - - - 1 - chaîne de caractère - Non - html, htmlall, url, quotes, hex, hexentity, - javascript - html - Format d'échappement à utiliser. - - - - - - "Echappe" les caractères spéciaux html, d'url, pour - les quotes d'une chaîne, les valeurs - hexadécimales, les entités hexadécimales ou javascript. - Par défaut, ce paramètre est html. - - -escape - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', "'Stiff Opposition Expected to Casketless Funeral Plan'"); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|escape} -{$titreArticle|escape:"html"} {* escapes & " ' < > *} -{$titreArticle|escape:"htmlall"} {* escapes ALL html entities *} -{$titreArticle|escape:"url"} -{$titreArticle|escape:"quotes"} -<a href="mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a> - -SORTIE: - -'Stiff Opposition Expected to Casketless Funeral Plan' -&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039; -&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039; -&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039; -%27Stiff+Opposition+Expected+to+Casketless+Funeral+Plan%27 -\'Stiff Opposition Expected to Casketless Funeral Plan\' -<a href="mailto:%62%6f%62%40%6d%65%2e%6e%65%74">&#x62;&#x6f;&#x62;&#x40;&#x6d;&#x65;&#x2e;&#x6e;&#x65;&#x74;</a> - - - - indent - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - entier - Non - 4 - De combien de caractères l'indentation doit être effectuée. - - - 2 - chaîne de caractère - Non - (espace) - Caractère à utiliser pour l'indentation. - - - - - - Indente chacune des lignes d'une chaîne. Comme paramètre optionnel, - vous pouvez spécifier le nombre de caractères à utiliser pour l'indentation (4 par défaut). - Comme second paramètre optionnel, vous - pouvez spécifier le caractère à utiliser pour l'indentation (utilisez - "\t" pour les tabulations). - - -indent - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', 'Il fera noir cette nuit.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$TitreArticle} - -{$TitreArticle|indent} - -{$TitreArticle|indent:10} - -{$TitreArticle|indent:1:"\t"} - -SORTIE: - -Il fera noir cette nuit. - - Il fera noir cette nuit. - - Il fera noir cette nuit. - - Il fera noir cette nuit. - - - - - lower - - Met une variable en minuscules. - - -lower - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', 'Deux Suspects Se Sont Sauvés.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$TitreArticle} -{$TitreArticle|lower} - -SORTIE: - -Deux Suspects Se Sont Sauvés. -deux suspects se sont sauvés. - - - - nl2br - - Transforme toutes les fins de lignes en balises <br />. - Equivalent à la fonction PHP nl2br(). - - -nl2br - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', "Pluie ou soleil attendu\naujourd'hui, nuit noire"); -$smarty->display('index.tpl'); - -index.tpl: - -{$TitreArticle|nl2br} - -SORTIE: - -Pluie ou soleil attendu<br />aujourd'hui, nuit noire - - - - regex_replace - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - chaîne de caractère - Oui - n/a - Expression régulière à remplacer. - - - 2 - chaîne de caractère - Oui - n/a - La chaîne de remplacement. - - - - - - Un rechercher / remplacer avec une expression régulière. Utilise la même - syntaxe que la fonction PHP preg_replace. - - -regex_replace - -index.php: - -$smarty = new Smarty; -$smarty->assign('TitreArticle', "L'infertilité est un maux grandissant\n, disent les experts."); -$smarty->display('index.tpl'); - -index.tpl: - -{* Remplace tous les retours chariot et les tabulation par une nouvelle ligne avec un espace *} - -{$TitreArticle} -{$TitreArticle|regex_replace:"/[\r\t\n]/":" "} - -SORTIE: - -L'infertilité est un maux grandissant -, disent les experts. -L'infertilité est un maux grandissant, disent les experts. - - - - replace - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - chaîne de caractères - Oui - n/a - chaîne à remplacer. - - - 2 - chaîne de caractères - Oui - n/a - chaîne de remplacement. - - - - - - Un simple remplacement de chaîne de caractères. - - -replace - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', "Child's Stool Great for Use in Garden."); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|replace:"Garden":"Vineyard"} -{$titreArticle|replace:" ":" "} - -SORTIE: - -Child's Stool Great for Use in Garden. -Child's Stool Great for Use in Vineyard. -Child's Stool Great for Use in Garden. - - - - spacify - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - chaîne de caractère - Non - espace - Ce qui est inséré entre chaque caractère de la variable. - - - - - - spacify est un moyen pour insérer un espace entre tous les caractères - d'une variable. Optionnellement, vous pouvez lui passer un caractère - (ou une chaîne) différent de espace à insérer. - - -spacify - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', 'Quelque chose s'est mal passé et à provoqué -cet accident, disent les experts'); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|spacify} -{$titreArticle|spacify:"^^"} - -SORTIE: - -Quelquechose s'est mal passé et à provoqué cet accident, disent les experts. -Q u e l q u e c h o s e s ' e s t m a l p a s s é e t à p r o v o q u é c e t a c c i d e n t , d i s e n t l e s e x p e r t s . -Q^^u^^e^^l^^q^^u^^e^^c^^h^^o^^s^^e^^ ^^s^^'^^e^^s^^t^^ ^^m^^a^^l^^ ^^p^^a^^s^^s^^é^^ ^^e^^t^^ ^^à^^ ^^p^^r^^o^^v^^o^^q^^u^^é^^ ^^c^^e^^t^^ ^^a^^c^^c^^i^^d^^e^^n^^t^^,^^ ^^d^^i^^s^^e^^n^^t^^ ^^l^^e^^s^^ ^^e^^x^^p^^e^^r^^t^^s^^. - - - - string_format - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - chaîne de caractères - Oui - n/a - Le format à utiliser (sprintf) - - - - - - Un moyen pour formater les chaînes de caractères, comme par exemple les - nombres décimaux. Utilise la syntaxe de sprintf pour formater les éléments. - - -string_format - -index.php: - -$smarty = new Smarty; -$smarty->assign('nombre', 23.5787446); -$smarty->display('index.tpl'); - -index.tpl: - -{$nombre} -{$nombre|string_format:"%.2f"} -{$nombre|string_format:"%d"} - -SORTIE: - -23.5787446 -23.58 -24 - - - - strip - - Remplace les espaces multiples, les nouvelles lignes et les tabulations - par un espace simple, ou une chaîne donnée. - - - Note - - Si vous voulez réaliser cette action sur un bloc complet du template, - utilisez la fonction strip. - - - -strip - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', "Une réunion autour\n d'un feu de cheminée\t -est toujours agréable."); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|strip} -{$titreArticle|strip:"&nbsp;"} - -SORTIE: - -Une réunion autour - d'un feu de cheminée est toujours agréable. -Une réunion autour d'un feu de cheminée est toujours agréable. -Une&nbsp;réunion&nbsp;autour&nbsp;d'un&nbsp;feu&nbsp;de&nbsp;cheminée&nbsp;est&nbsp;toujours -&nbsp;agréable. - - - - strip_tags - - Supprime toutes les balises, et plus généralement tout ce qui se trouve - entre < et >. - - -strip_tags - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', "Une femme aveugle obtient un nouveau <font face=\"helvetica\"> -rein</font> d'un père qu'elle n'a pas vu depuis<b> des années</b>."); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|strip_tags} - -SORTIE: - -Une femme aveugle obtient un nouveau <font face=\"helvetica\"> -rein</font> d'un père qu'elle n'a pas vu depuis<b> des années</b>. -Une femme aveugle obtient un nouveau rein d'un père -qu'elle n'a pas vu depuis des années. - - - - truncate - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - entier - Non - 80 - Le nombre de caractères maximums au-delà duquel - on effectue le troncage - - - 2 - chaîne de caractère - Non - ... - Le texte à rajouter lorsque l'on effectue un - troncage. - - - 3 - booléen - Non - false - Détermine si le troncage est effectué sur - le dernier mot (false), ou au caractère exact (true). - - - - - - - Tronque une variable à une certaine longueur, par défaut 80. - Un second paramètre optionnel permet de spécifier une chaîne à afficher - à la fin de la variable une fois tronquée. Les caractères de fin sont - inclus dans la longueur de la chaîne à tronquer. Par défaut, - truncate tentera de couper la chaîne à la fin d'un mot. Si vous voulez - tronquer la chaîne au caractère exact, donnez la valeur true au - dernier paramètre optionnel. - - -truncate - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', 'Deux soeurs réunies après 18 ans de séparation.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|truncate} -{$titreArticle|truncate:30} -{$titreArticle|truncate:30:""} -{$titreArticle|truncate:30:"---"} -{$titreArticle|truncate:30:"":true} -{$titreArticle|truncate:30:"...":true} - -SORTIE: - -Deux soeurs réunies après 18 ans de séparation. -Deux soeurs réunies après... -Deux soeurs réunies après -Deux soeurs réunies après--- -Deux soeurs réunies après 18 a -Deux soeurs réunies après 1... - - - - - upper - - Met une variable en majuscules. - - -upper - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', "Si l'attaque n'est pas mise en place -rapidement, cela risque de durer longtemps."); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|upper} - -SORTIE: - -Si l'attaque n'est pas mise en place rapidement, cela risque de durer longtemps. -SI L'ATTAQUE N'EST PAS MISE EN PLACE RAPIDEMENT, CELA RISQUE DE DURER LONGTEMPS. - - - - wordwrap - - - - - - - - - - Position du paramètre - Type - Requis - Defaut - Description - - - - - 1 - entier - Non - 80 - La nombre de colonnes sur lequel ajuster l'affichage. - - - 2 - chaîne de caractères - Non - \n - chaîne de caractères utilisée pour l'ajustement. - - - 3 - booléen - Non - false - Détermine si l'ajustement se fait en fin de mot - (false) ou au caractère exact (true). - - - - - - Ajuste une chaîne de caractères à une taille de colonne, par défaut 80. - Un second paramètre optionnel vous permet de spécifier la chaîne à utiliser - pour l'ajustement à la nouvelle ligne (retour chariot \n par défaut). - Par défaut, wordwrap tente un ajustement à la fin d'un mot. Si vous voulez - autoriser le découpage des mots pour un ajustement au caractère près, - passez true au troisième paramètre optionnel. - - -wordwrap - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', "Une femme aveugle obtient un nouveau rein -d'un père qu'elle n'a pas vu depuis des années."); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} - -{$titreArticle|wordwrap:30} - -{$titreArticle|wordwrap:20} - -{$titreArticle|wordwrap:30:"<br>\n"} - -{$titreArticle|wordwrap:30:"\n":true} - -SORTIE: - -Une femme aveugle obtient un nouveau rein d'un père qu'elle n'a pas vu depuis des années. - -Une femme aveugle obtient un -nouveau rein d'un père -qu'elle n'a pas vu depuis -des années. - -Une femme aveugle -obtient un nouveau -rein d'un père -qu'elle n'a pas vu -depuis des années. - -Une femme aveugle obtient un<br> -nouveau rein d'un père<br> -qu'elle n'a pas vu depuis<br> -des années. - -Une femme aveugle obtient un n -ouveau rein d'un père qu'elle -n'a pas vu depuis des années. - - - - - - - - Combiner des modificateurs de variable. - - Vous pouvez appliquer un nombre quelquonque de modificateurs à une variable. - Ils seront invoqués dans l'ordre d'apparition, de la gauche vers la droite. - Ils doivent être séparés par un | (pipe). - - - Combiner des modificateurs - -index.php: - -$smarty = new Smarty; -$smarty->assign('titreArticle', 'Les fumeurs sont productifs, mais la mort -tue l'efficacitée.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$titreArticle} -{$titreArticle|upper|spacify} -{$titreArticle|lower|spacify|truncate} -{$titreArticle|lower|truncate:30|spacify} -{$titreArticle|lower|spacify|truncate:30:". . ."} - - -SORTIE: - -Les fumeurs sont productifs, mais la mort tue l'efficacitée. -L E S F U M E U R S S O N T P R O D U C T I F S , M A I S L A M O R T T U E L ' E F F I C A C I T É E . -L E S F U M E U R S S O N T P R O D U C T I F S , M A I S L A M... -L E S F U M E U R S S O N T P R O D U C T I F S , M A I S L A M... -L e s f u m e u r s s o n t p r o d u c t i f s , . . . -L e s f u m e u r s s. . . - - - - - - Fonctions natives - - Smarty est fourni en standard avec plusieurs fonctions natives. - Les fonctions natives sont partie intégrante du language de template. - Vous ne pouvez pas créer de fonctions utilisateurs qui portent le même nom - qu'une fonction native. Vous ne pouvez pas non plus en modifier le - comportement. - - - capture - - Capture est utilisé pour récupérer la sortie d'éléments dans une variable - au lieu de les afficher. Tout contenu situé entre {capture - name="foo"} et {/capture} est intercepté dans une variable dont le nom est - spécifié dans l'attribut name. Le contenu capturé peut être utilisé dans - le template par l'intermédiaire de la variable spéciale $smarty.capture.foo - ou foo est la valeur de l'attribut name. Si vous ne donnez pas de valeur - à l'attribut name, alors "default" est utilisé. Toutes les commandes - {capture} doivent être utilisées de paire avec {/capture}. Vous pouvez - imbriquer les demandes de captures. - - - Note technique - - Smarty 1.4.0 - 1.4.4 plaçait les contenus capturés dans une variable - appelée $return. Depuis Smarty 1.4.5, ce comportement à été modifié et - Smarty utilise maintenant l'attribut name en lieu et place. - Veuillez donc mettre vos templates à jour selon cette règle. - - - - - Faites attention lorsque vous interceptez la sortie de commandes - insert. Si vous avez configuré le cache pour que ce - dernier soit actif, et que vous avez des commandes insert - supposées s'exécuter dans un contenu en cache, ne tentez pas de capturer - ce contenu. - - - - - Capturer le contenu d'un template. - -{* nous ne voulons afficher une ligne que si cette dernière est activé. *} -{capture name=banner} -{include file="get_banner.tpl"} -{/capture} -{if $smarty.capture.banner ne ""} - <tr> - <td> - {$smarty.capture.banner} - </td> - </tr> -{/if} - - - - - config_load - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - file - chaîne de caractère - Oui - n/a - Le nom du fichier de configuration à inclure - - - section - chaîne de caractère - Non - n/a - Le nom de la section à charger - - - scope - chaîne de caractère - non - local - - La façon dont la portée des variables est définie, soit - local, parent ou global. local signifie que la variable est - chargée dans le contexte du template. parent indique que - la variable est disponible tant dans le template qui - l'a inclus que dans le template parent, ayant réalisé - l'inclusion du sous template. global signifie que la variable - est diponible dans tous les templates. - - - - global - booléen - Non - No - - Si oui ou non les variables sont disponibles pour les - templates parents, identique à scope=parent. - Note: Cet attribut est obsolète depuis l'apparition - de l'attribut scope, il est toutefois toujours supporté. - Si scope est défini, global est ignoré. - - - - - - - Cette fonction est utiliseé pour charger des variables de fichier - de configuration dans un template. Voir - Fichiers de configuration pour de plus amples informations. - - -fonction config_load - - -{config_load file="colors.conf"} - -<html> -<title>{#pageTitle#}</title> -<body bgcolor="{#bodyBgColor#}"> -<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"> - <tr bgcolor="{#rowBgColor#}"> - <td>First</td> - <td>Last</td> - <td>Address</td> - </tr> -</table> -</body> -</html> - - - Les fichiers de configuration peuvent contenir des sections. - Vous pouvez charger des variables d'une section donnée avec le - nouvel attribut section. - - - NOTE: Les sections des fichiers de configuration - et la fonction native section n'ont rien en - commun, il s'avère simplement qu'elles portent le même nom. - - -fonction config_load et section - -{config_load file="colors.conf" section="client"} - -<html> -<title>{#pageTitle#}</title> -<body bgcolor="{#bodyBgColor#}"> -<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"> - <tr bgcolor="{#rowBgColor#}"> - <td>First</td> - <td>Last</td> - <td>Address</td> - </tr> -</table> -</body> -</html> - - - - foreach,foreachelse - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - from - chaîne de caractère - oui - n/a - Le nom du tableau à parcourir - - - item - chaîne de caractère - Oui - n/a - Le nom de la variable "élément courant" - - - key - chaîne de caractère - Non - n/a - Le nom de la variable représentant la clef courante. - - - name - chaîne de caractère - Non - n/a - Le nom de la boucle foreach, qui nous permettra - d'accéder à ses propriétés. - - - - - - Les boucles foreach sont une alternative aux boucles - section. Les boucles foreach - sont utilisées pour parcourir des tableaux associatifs simples. - La syntaxe des boucles foreach est bien plus simple - que celle des boucles section, mais en contrepartie, - elles ne peuvent être utilisées que pour des tableaux associatifs simples. - La balise foreach doit toujours être accompagnée - de la balise /foreach. Les paramètres requis sont - from et item. Le nom des boucles - foreach doit être composés exclusivement de lettres, - chiffres et underscores, selon vos préférences. Les boucles - foreach peuvent être imbriquées. - La variable from (généralement le tableau à - parcourir) détermine le nombre de fois que foreach - sera exécuté. foreachelse est exécuté si aucune - valeur n'est présente dans la variable donnée à l'attribut - from. - - -foreach - - -{* Cet exemple affiche toutes les valeurs du tableau $custid *} -{foreach from=$custid item=curr_id} - id: {$curr_id}<br> -{/foreach} - -SORTIE: - -id: 1000<br> -id: 1001<br> -id: 1002<br> - - - -foreach key - -{* key contient la clef de chaque élément parcouru - -l'attribution des élément est de la forme: - -$smarty->assign("contacts", array(array("tel" => "1", "fax" => "2", "portable" => "3"), - array("tel" => "555-4444", "fax" => "555-3333", "portable" => "760-1234"))); - -*} - -{foreach name=outer item=contact from=$contacts} - {foreach key=key item=item from=$contact} - {$key}: {$item}<br> - {/foreach} -{/foreach} - -SORTIE: - -tel: 1<br> -fax: 2<br> -portable: 3<br> -tel: 555-4444<br> -fax: 555-3333<br> -portable: 760-1234<br> - - - - include - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - file - chaîne de caractères - Oui - n/a - Le nom du template à inclure - - - assign - chaîne de caractères - Non - n/a - Le nom de la variable dans laquelle sera assignée - la sortie de include - - - [var ...] - [type de variable] - Non - n/a - Variables à passer au template - - - - - - Les balises "include" sont utilisées pour inclure des templates à - l'intérieur d'autres templates. Toutes les variables disponibles - dans le template réalisant l'inclusion sont disponibles dans le - template inclus. La balise include doit disposer de l'attribut - "file", qui contient le chemin de la ressource template. - - - Vous pouvez spécifier un attribut optionnel assign - qui définit une variable de template dans laquelle la sortie de - include sera stockée plutôt qu'affichée. - - -fonction include - -{include file="header.tpl"} - -{* Le corp du template va ici *} - -{include file="footer.tpl"} - - - Vous pouvez également passer des variables au template inclus - sous forme d'attributs. Les variables passées au template par ce moyen - ne sont accessibles que dans la portée de ce dernier. Les variables - passées en tant qu'attribut remplacent les variables déjà définies, - qui auraient le même nom. - - -fonction include, passage de variables - -{include file="header.tpl" title="Menu principal" table_bgcolor="#c0c0c0"} - -{* Le corps du template vient ici *} - -{include file="footer.tpl" logo="http://mon.domaine.com/logo.gif"} - - - Utilisez la syntaxe ressource template pour inclure - des fichiers situés en dehors du répertoire $template_dir. - - -fonction include, exemple de ressource template - -{* chemin absolu *} -{include file="/usr/local/include/templates/header.tpl"} - -{* chemin absolu (même chose) *} -{include file="file:/usr/local/include/templates/header.tpl"} - -{* chemin absolu windows (DOIT utiliser le préfixe "file:") *} -{include file="file:C:/www/pub/templates/header.tpl"} - -{* inclusion d'une ressource template "db" *} -{include file="db:header.tpl"} - - - - include_php - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - file - chaîne de caractère - oui - n/a - Le nom du fichier PHP à inclure - - - once - boléen - Non - true - Inclure plusieurs fois ou non le fichier PHP si - plusieurs demandes d'inclusions sont faites. - - - assign - chaîne de caractère - Non - n/a - le nom de la variable PHP dans laquelle la sortie - sera assignée plutôt que directement affichée. - - - - - - les balises include_php sont utilisées pour inclure directement - un script PHP dans vos templates. Si "security" est activé, alors le script - à exécuter doit être placé dans le chemin $trusted_dir. La balise - include_php attends l'attribut "file", qui contient le chemin du - fichier PHP à inclure, relatif à $trusted_dir, ou absolu. - - - include_php est un moyen agréable pour gérer des "composants templates", - tout en conservant le code PHP en dehors du template lui même. - Supposons que vous ayez un template reprenant la navigation de votre - site, elle même récupérée depuis une base de données. Vous pouvez - conserver la logique du code PHP récupérant le contenu de la base dans - un emplacement séparé, et l'inclure depuis votre template. Maintenant, - vous pouvez utiliser ce template n'importe ou, sans vous inquiéter de - savoir si les informations nécessaires ont bien étés assignées - par l'application, avant la demande d'affichage. - - - Par défaut, les fichiers PHP ne sont inclus qu'une seule fois, même si - la demande d'inclusion survient plusieurs fois dans le template. - Vous pouvez demander à ce que ce fichier soit inclus à chaque demande - grâce à l'attribut once. Mettre l'attribut once à - false aura pour effet d'inclure le script PHP à chaque fois que demandé - dans le template. - - - Vous pouvez donner une valeur à l'attribut optionnel - assign, pour demander à la fonction - include_php d'assigner la sortie du script PHP - à la variable spécifiée plutôt que d'en afficher directement le résultat. - - - L'objet Smarty est disponible en tant que $this dans le script PHP inclus. - - -fonction include_php - -load_nav.php -------------- - -<?php - - // charge des variables depuis une base de données mysql et les assigne au template. - require_once("MySQL.class.php"); - $sql = new MySQL; - $sql->query("select * from site_nav_sections order by name",SQL_ALL); - $this->assign('sections',$sql->record); - -?> - - -index.tpl ---------- - -{* chemin absolu, ou relatif à $trusted_dir *} -{include_php file="/path/to/load_nav.php"} - -{foreach item="curr_section" from=$sections} - <a href="{$curr_section.url}">{$curr_section.name}</a><br> -{/foreach} - - - - insert - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - name - chaîne de caractères - Oui - n/a - le nom de la fonction insert (insert_name) - - - assign - chaîne de caractère - Non - n/a - Le nom de la variable qui recevra la sortie - - - script - chaîne de caractères - Non - n/a - Le nom du script PHP inclus avant que la fonction - insert ne soit appelée. - - - [var ...] - [var type] - Non - n/a - Variable à passer à la fonction insert - - - - - - Les balises insert fonctionnent à peu près comme les balises include, - à l'exception que leur sortie n'est pas placée en cache lorsque - le cache [caching] est activé. - Les balises insert seront exécutées à chaque appel du template. - - - Supposons que vous avez un template avec un emplacement - pour un bandeau publicitaire en haut de page. - Ce bandeau publicitaire peut contenir toutes sortes de contenus - HTML, images, flash, etc. Nous ne pouvons pas placer du contenu - statique à cet endroit. Nous ne voulons pas non plus que ce - contenu fasse partie du cache. Arrive alors la balise insert. - Le template connais #emplacement_bandeau# et #id_site# (récupérés - depuis un fichier de configuration), et à besoin d'un appel de - fonction pour récupérer le contenu du bandeau. - - -function insert - -{* exemple de récupération d'un bandeau publicitaire *} -{insert name="getBanner" lid=#emplacement_bandeau# sid=#id_site#} - - - Dans cet exemple, nous utilisons le nom getBanner et lui passons les - paramètres #emplacement_bandeau# et #id_site#. Smarty va rechercher une - fonction appelée insert_getBanner () dans votre application PHP, et lui - passer les valeurs #banner_location_id# et #site_id# comme premier - paramètre, dans un tableau associatif. Tous les noms des fonctions insert - de votre application doivent être prefixées de "insert_" pour remédier - à d'éventuels conflits de nommage. Votre fonction insert_getBanner () - est supposée traiter les valeurs passées et retourner - un résultat. Ces résultats sont affichés dans le template en lieu et - place de la balise. Dans cet exemple, Smarty appellera cette fonction - insert_getBanner(array("lid" => "12345","sid" => "67890")); et affichera - le résultat retourné à la place de la balise insert. - - - Si vous donnez une valeur à l'attribut "assign", la sortie de la balise - insert sera assigné à une variable de template de ce nom au lieu d'être - affichée directement. NOTE: assigner la sortie à une variable n'est pas - très utile lorsque le cache est activé. - - - Si vous donnez une valeur à l'attribut "script", ce script PHP sera - inclus (une seule fois) avant l'exécution de la fonction insert. - Le cas peut survenir lorsque la fonction insert n'existe pas encore, - et que le script PHP chargé de sa définission doit être inclus. Le - chemin doit être absolu ou relatif à $trusted_dir. - Lorsque "security" est actif, le script doit être situé - dans $trusted_dir. - - - L'objet Smarty est passé comme second argument. De cette façon, vous - pouvez utiliser ou modifier des informations sur l'objet Smarty, - directement depuis votre fonction d'insertion. - - - Note technique - - Il est possible d'avoir des portions de template qui ne soient pas - gérables par le cache. Même si vous avez activé l'option - caching, les balises insert - ne feront pas partie du cache. Elles retourneront un contenu dynamique - à chaque invocation de la page. Cette méthode est très pratique pour - des éléments tels que les bandeaux publicitaires, les enquêtes, - la météo, les résultats de recherche, retours utilisateurs, etc. - - - - - if,elseif,else - - l'instruction if dans Smarty dispose de la même flexibilité que l'instruction - PHP du même nom, avec quelques fonctionnalités supplémentaires pour le - moteur de template. Tous les if doivent être - utilisés de pair avec un /if. - else et elseif sont également - des balises autorisées. "eq", "ne","neq", "gt", "lt", "lte", "le", - "gte" "ge","is even","is odd", "is not even","is not odd","not","mod", - "div by","even by","odd by","==","!=",">", "<","<=",">=" sont tous - des opérateurs conditionnels valides, et doivent obligatoirement être - séparés des autres éléments par des espaces. - - -Instruction if - -{if $name eq "Fred"} - Bienvenue, Monsieur. -{elseif $name eq "Wilma"} - Bienvenue m'dame. -{else} - Bienvenue, qui que vous soyez. -{/if} - -{* Un exemple avec l'opérateur or *} -{if $name eq "Fred" or $name eq "Wilma"} - ... -{/if} - -{* même chose que ci-dessus *} -{if $name == "Fred" || $name == "Wilma"} - ... -{/if} - -{* l'exemple suivant NE fonctionne PAS, les opérateurs - doivent être entourés d'espaces. *} -{if $name=="Fred" || $name=="Wilma"} - ... -{/if} - - -{* les parenthèses sont autorisées *} -{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#} - ... -{/if} - -{* vous pouvez également faire appel aux fonctions PHP *} -{if count($var) gt 0} - ... -{/if} - -{* teste si les valeurs sont paires(even) ou impaires(odd) *} -{if $var is even} - ... -{/if} -{if $var is odd} - ... -{/if} -{if $var is not odd} - ... -{/if} - -{* teste si la variable est divisble par 4 *} -{if $var is div by 4} - ... -{/if} - -{* teste si la variable est paire, par groupe de deux i.e., -0=paire, 1=paire, 2=impaire, 3=impaire, 4=paire, 5=paire, etc. *} -{if $var is even by 2} - ... -{/if} - -{* 0=paire, 1=paire, 2=paire, 3=impaire, 4=impaire, 5=impaire, etc. *} -{if $var is even by 3} - ... -{/if} - - - - ldelim,rdelim - - ldelim et rdelim sont utilisés pour afficher les délimiteurs en tant - que tels, dans notre cas "{" ou "}". Le moteur de template tentera - toujours d'interpréter le contenu entre les délimiteurs, c'est donc - une façon d'afficher ces derniers sans interférer avec Smarty. - - -ldelim, rdelim - -{* Affiche les délimiteurs de template *} - -{ldelim}nomFonction{rdelim} est la façon dont sont appelées les fonctions dans Smarty ! - - -SORTIE: - -{nomFonction} est la façon dont sont appelées les fonctions dans Smarty ! - - - - literal - - Les balises "literal" permettent à un bloc de données d'être pris tel - quel, sans qu'il ne soit interprété par Smarty. Très pratique lors - de l'emplois d'éléments tels que javascript, acolades et autres - qui peuvent confondre le moteur de template. Tout le contenu situé - entre les balises {literal}{/literal} ne sera pas interprété, et - affiché comme du contenu statique. - - -balises literal - -{literal} - <script language=javascript> - - <!-- - function isblank(field) { - if (field.value == '') - { return false; } - else - { - document.loginform.submit(); - return true; - } - } - // --> - - </script> -{/literal} - - - - php - - Les balises PHP permettent de rajouter du code PHP directement dans le - template. Ils ne seront pas ignorés, quelle que soit la valeur de $php_handling. Pour les - utilisateurs avancés seulement, son utilisation n'est normalement pas - nécessaire. - - -balises php - -{php} - // inclusion directe d'un script PHP - // depuis le template. - include("/path/to/display_weather.php"); -{/php} - - - - section,sectionelse - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - name - chaîne de caractère - Oui - n/a - Le nom de la section - - - loop - [$nom_variable] - Oui - n/a - le nom de la variable qui détermine le nombre de - fois que la boucle sera exécutée. - - - - start - entier - Non - 0 - La position de l'index ou la section commencera son - parcours. Si la valeur donnée est négative, la position de - départ est calculée depuis la fin du tableau. Par exemple, - s'il existe 7 valeurs dans le tableau à parcourir et que start - est à -2, l'index de départ sera 5. Les valeurs incorrectes - (en dehors de la portée du tableau) sont automatiquements - tronquées à la valeur correcte la plus proche. - - - step - entier - Non - 1 - La valeur du pas qui sera utilisé pour parcourir le - tableau.Par exemple, step=2 parcourera les indices - 0,2,4, etc. Si step est négatif, le tableau sera parcouru en sens - inverse. - - - max - entier - Non - 1 - Définit le nombre maximum de fois que le tableau sera - parcouru. - - - show - booléen - Non - true - Détermine s'il est nécessaire d'afficher la - section ou non. - - - - - - Les balises section sont utilisées pour - parcourir un tableau de données. Toutes les balises - section doivent être utilisées de paire avec - les balises /section. Les paramètres requis - sont name et loop. - Le nom de la section est, selon votre choix, composé de lettres, - chiffres et underscores. Les sections peuvent être imbriquées, - mais leurs noms doivent être uniques. La variable de parcours - (généralement un tableau de données) détermine le nombre de fois - que la section sera parcourue. Lorsque l'on affiche une variable - dans une section, le nom de la section doit précéder - la variable entre crochets. sectionelse - est exécuté lorsqu'aucune valeur n'est trouvée dans la variable à - parcourir. - - -section - - -{* Cet exemple va afficher toutes les valeurs du tableau $custid *} -{section name=client loop=$custid} - id: {$custid[client]}<br> -{/section} - -SORTIE: - -id: 1000<br> -id: 1001<br> -id: 1002<br> - - - -section, variable de parcours - -{* La variable de parcours détermine uniquement le nombre de fois que nous allons - rentrer dans la boucle. Vous pouvez accéder à toutes les variables du template - lorsque vous êtes dans une section. Cet exemple part du principe que - $idClient, $noms et $adresses sont tous des tableaux qui contiennent - autant de valeurs les uns que les autres.*} -{section name=client loop=$custid} - id: {$idClient[client]}<br> - nom: {$noms[client]}<br> - addresse: {$addresses[client]}<br> - <p> -{/section} - - -SORTIE: - -id: 1000<br> -nom: John Smith<br> -addresse: 253 N 45th<br> -<p> -id: 1001<br> -nom: Jack Jones<br> -addresse: 417 Mulberry ln<br> -<p> -id: 1002<br> -nom: Jane Munson<br> -addresse: 5605 apple st<br> -<p> - - - -nom de section - -{* Le nom de la section peut être ce que vous voulez, - et est utilisé pour référencer les données depuis la section. *} -{section name=monTableau loop=$idClient} - id: {$idCLient[monTableau]}<br> - name: {$noms[monTableau]}<br> - address: {$addresses[monTableau]}<br> - <p> -{/section} - - - -sections imbriquées - -{* Les sections peuvent être imbriquées à un nombre de niveaux illimité. - Grâce aux sections imbriquées, vous pouvez accéder à des structures de données - complexes, comme des tableaux multi-dimentionnels. Dans cet exemple, - $type_contact[client] est un tableau de type de contact pour le client - courant. *} -{section name=client loop=$custid} - id: {$idClient[client]}<br> - nom: {$nom[client]}<br> - addresse: {$addresse[client]}<br> - {section name=contact loop=$type_contact[client]} - {$type_contact[client][contact]}: {$info_contact[client][contact]}<br> - {/section} - <p> -{/section} - - -SORTIE: - -id: 1000<br> -nom: John Smith<br> -addresse: 253 N 45th<br> -telephone: 555-555-5555<br> -telephone portable: 555-555-5555<br> -e-mail: john@mydomain.com<br> -<p> -id: 1001<br> -nom: Jack Jones<br> -addresse: 417 Mulberry ln<br> -telephone: 555-555-5555<br> -telephone portable: 555-555-5555<br> -e-mail: jack@mydomain.com<br> -<p> -id: 1002<br> -nom: Jane Munson<br> -addresse: 5605 apple st<br> -telephone: 555-555-5555<br> -telephone portable: 555-555-5555<br> -e-mail: jane@mydomain.com<br> -<p> - - - -Sections et tableaux associatifs - -{* Exemple d'affichage d'un tableau associatif dans une section *} -{section name=client loop=$contacts} - nom: {$contacts[client].name}<br> - telephone: {$contacts[client].home}<br> - portable: {$contacts[client].cell}<br> - e-mail: {$contacts[client].email}<p> -{/section} - - -SORTIE: - -nom: John Smith<br> -telephone: 555-555-5555<br> -portable: 555-555-5555<br> -e-mail: john@mydomain.com<p> -nom: Jack Jones<br> -telephone: 555-555-5555<br> -portable: 555-555-5555<br> -e-mail: jack@mydomain.com<p> -nom: Jane Munson<br> -telephone: 555-555-5555<br> -portable: 555-555-5555<br> -e-mail: jane@mydomain.com<p> - - - - - -sectionelse - -{* sectionelse est exécuté s'il n'existe aucune valeur dans idClient *} -{section name=client loop=$idClient} - id: {$idClient[client]}<br> -{sectionelse} - Aucune valeur dans $idClient. -{/section} - - - Les sections ont leur propre variable de gestion des propriétés. - Elles sont de la forme: {$smarty.section.nomSection.nomVariable} - - - NOTE: Depuis Smarty 1.5.0, la syntaxe pour les propiétés des sections - a été changée de {%sectionname.varname%} à - {$smarty.section.nomSection.nomVariable}. L'ancienne syntaxe est toujours - supportée, mais vous ne verrez que des exemples avec la nouvelle syntaxe - dans le manuel. - - - index - - Index est utilisé pour afficher l'index de parcours courant, commence par - 0 (ou l'attribut start), et s'incrémente de 1 (ou de la valeur - de l'attribut step). - - - Note technique - - Si les attributs step et start ne sont pas modifiés, alors index - fonctionne de la même façon que iteration, à l'exception qu'il commence - par 0 plutôt que par 1. - - - - propriété de section index - - {section name=client loop=$idClient} - {$smarty.section.client.index} id: {$idClient[client]}<br> - {/section} - - - SORTIE: - - 0 id: 1000<br> - 1 id: 1001<br> - 2 id: 1002<br> - - - - - index_prev - - index_prev est utilisé pour afficher l'index de parcours - précédent de la boucle. Au premier passage, il vaut -1. - - - propriété de section index_prev - - {section name=client loop=$custid} - {$smarty.section.client.index} id: {$idClient[client]}<br> - {* Pour votre information, $idClient[client.index] and $idClient[client] sont identiques *} - {if $idClient[client.index_prev] ne $idClient[client.index]} - L'id du client à été modifié<br> - {/if} - {/section} - - - SORTIE: - - 0 id: 1000<br> - L'id du client à été modifié<br> - 1 id: 1001<br> - L'id du client à été modifié<br> - 2 id: 1002<br> - L'id du client à été modifié<br> - - - - - index_next - - index_next est utilisé pour afficher la valeur théorique suivante de - index. Dans la dernière boucle, cela reste la valeur incrémentée, - qui respecte l'attribut step si donné. - - - propriété de section index_next - - {section name=client loop=$idClient} - {$smarty.section.client.index} id: {$idClient[client]}<br> - {* Pour votre information, $idClient[client.index] and $idClient[client] sont identiques *} - {if $idClient[client.index_next] ne $idClient[client.index]} - L'id du client va changer<br> - {/if} - {/section} - - - SORTIE: - - 0 id: 1000<br> - L'id du client va changer<br> - 1 id: 1001<br> - L'id du client va changer<br> - 2 id: 1002<br> - L'id du client va changer<br> - - - - - iteration - - iteration est utilisé pour afficher la valeur courante de l'iteration. - - - NOTE: Cette valeur n'est pas affectée par les attributs start, step et - max, à l'inverse de la propriété index. L'itération commence par - 1 et non par 0 (comme le fait index). rownum est un alias de iteration, - ils fonctionnent de la même façon. - - - propriété iteration de section - - {section name=client loop=$idClient start=5 step=2} - Iteration courante: {$smarty.section.client.iteration}<br> - {$smarty.section.client.index} id: {$idClient[client]}<br> - {* Pour votre information, $idClient[client.index] and $idClient[client] sont identiques *} - {if $idCLient[client.index_next] ne $idClient[client.index]} - L'id du client va changer<br> - {/if} - {/section} - - - SORTIE: - - Iteration courante: 1 - 5 id: 1000<br> - L'id du client va changer<br> - Iteration courante: 2 - 7 id: 1001<br> - L'id du client va changer<br> - Iteration courante: 3 - 9 id: 1002<br> - L'id du client va changer<br> - - - - - first - - first est à true lorsque la section est parcouru pour la première fois. - - - propriété first de la section - - {section name=client loop=$idClient} - {if $smarty.section.client.first} - <table> - {/if} - - <tr><td>{$smarty.section.client.index} id: - {$idClient[client]}</td></tr> - - {if $smarty.section.client.last} - </table> - {/if} - {/section} - - - SORTIE: - - <table> - <tr><td>0 id: 1000</td></tr> - <tr><td>1 id: 1001</td></tr> - <tr><td>2 id: 1002</td></tr> - </table> - - - - - last - - last est à true lorsque la section est parcourue pour la dernière fois. - - - Propriété last de section - - {section name=client loop=$idClient} - {if $smarty.section.client.first} - <table> - {/if} - - <tr><td>{$smarty.section.client.index} id: - {$idClient[client]}</td></tr> - - {if $smarty.section.client.last} - </table> - {/if} - {/section} - - - SORTIE: - - <table> - <tr><td>0 id: 1000</td></tr> - <tr><td>1 id: 1001</td></tr> - <tr><td>2 id: 1002</td></tr> - </table> - - - - - rownum - - rownum, utilisé pour afficher la valeur courante de l'itération, - commence par 1. C'est un alias de iteration, ils fonctionnent de façon - identique. - - - propriété rownum de section - - {section name=client loop=$idClient} - {$smarty.section.client.rownum} id: {$idClient[client]}<br> - {/section} - - - SORTIE: - - 1 id: 1000<br> - 2 id: 1001<br> - 3 id: 1002<br> - - - - - loop - - loop est utilisé pour afficher la dernière valeur de index que cette - section a utilisé. Peut être utilisé dans ou en dehors de la section. - - - Propriété de section index - - {section name=client loop=$idClient} - {$smarty.section.client.index} id: {$idClient[client]}<br> - {/section} - - Il y eu {$smarty.section.client.loop} clients d'affichés. - - SORTIE: - - 0 id: 1000<br> - 1 id: 1001<br> - 2 id: 1002<br> - - il y eu 3 clients d'affichés. - - - - - show - - show est utilisé comme paramètre de section. - show est une valeur booléenne, true ou false. - Si show est à "false", la section ne sera pas affichée. Si un - sectionelse est présent, elle sera affiché. - - - section, attribut show - - {* $show_client_info a pu être passé par le script PHP, - pour déterminer si oui ou non on souhaite afficher la section *} - {section name=client loop=$idClient show=$show_client_info} - {$smarty.section.client.rownum} id: {$idClient[client]}<br> - {/section} - - {if $smarty.section.client.show} - la section à été affichée. - {else} - la section n'a pas été affichée. - {/if} - - - SORTIE: - - 1 id: 1000<br> - 2 id: 1001<br> - 3 id: 1002<br> - - la section à été affichée. - - - - - total - - total est utilisé pour afficher le nombre d'itération que la section - va exécuter. Peut être utilisé dans ou en dehors de la section. - - - section, propriété total - - {section name=client loop=$idClient step=2} - {$smarty.section.client.index} id: {$idClient[client]}<br> - {/section} - - Il y eu {$smarty.section.client.total} clients affichés. - - SORTIE: - - 0 id: 1000<br> - 2 id: 1001<br> - 4 id: 1002<br> - - Il y eu 3 clients affichés. - - - - - - strip - - Il est fréquent que les designers web rencontrent des problèmes - dus aux espaces et retours chariots, qui affectent le rendu HTML - ("fonctionnalités" des navigateurs), les obligeant à coller les - balises les unes aux autres. Cette solution rend généralement le - code illisible et impossible à maintenir. - - - Tout contenu situé entre les balises {strip}{/strip} se verra - allégé des espaces superflus et des retours chariots en début ou en fin - de ligne, avant qu'il ne soit affichés. De la sorte, vous pouvez - conserver vos templates lisibles, sans vous soucier des effets - indésirables que peuvent apporter les espaces superflus. - - - Note technique - - {strip}{/strip} n'affecte en aucun cas le contenu des variables de - template. Voir le modificateur - strip pour un rendu identique pour les variables. - - - -balises strip - -{* la suite sera affichée sur une seule ligne *} -{strip} -<table border=0> - <tr> - <td> - <A HREF="{$url}"> - <font color="red">Un test</font> - </A> - </td> - </tr> -</table> -{/strip} - - -SORTIE: - -<table border=0><tr><td><A HREF="http://mon.domaine.com"><font color="red">Un test</font></A></td></tr></table> - - - Notez que dans l'exemple ci-dessus, toutes les lignes commencent et - se terminent par des balises HTML. Sachez que si vous avez du texte - en début ou en fin de ligne dans des balises strip, ce dernier sera collé - au suivant/précédent et risque de ne pas être affiché selon - l'effet désiré. - - - - - - Fonctions utilisateur - - Smarty est livré avec plusieurs fonctions utilisateurs que vous pouvez - appeler dans vos templates. - - - assign - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - var - chaîne de caractère - Oui - n/a - Le nom de la variable assignée - - - value - chaîne de caractère - Oui - n/a - La valeur assignée - - - - - - Assign est utilisé pour déclarer ou modifier des variables de template. - - -assign - -{assign var="name" value="Bob"} - -La valeur de $name est {$name}. - -SORTIE: - -La valeur de $name est Bob. - - - - counter - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - name - chaîne de caractère - Non - default - Le nom du compteur - - - start - numérique - Non - 1 - La valeur initiale du compteur - - - skip - numérique - Non - 1 - L'intervale du compteur - - - direction - chaîne de caractères - Non - up - la direction du compteur (up/down) [compte / décompte] - - - print - booléen - Non - true - S'il faut afficher cette valeur ou non - - - assign - chaîne de caractères - Non - n/a - La variable dans laquelle la valeur du compteur - sera assignée. - - - - - - counter affiche un compteur. counter retient la valeur - du compte à chaque itération. Vous pouvez adapter le nombre, l'intervale - et la direction du compteur, ainsi que décider d'afficher ou non - les valeurs. Vous pouvez lancer plusieurs compteurs simultanément en - leur donnant des noms uniques. Si vous ne donnez pas de nom à un - compteur, 'default' sera utilisé. - - - Si vous donnez une valeur à l'attribut "assign", alors la sortie de la - fonction counter sera assignée à la variable de template donnée plutôt - que d'être directement affichée. - - -counter - -{* initialisation du compteur *} -{counter start=0 skip=2 print=false} - -{counter}<br> -{counter}<br> -{counter}<br> -{counter}<br> - -SORTIE: - -2<br> -4<br> -6<br> -8<br> - - - - cycle - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - name - chaîne de caractères - Non - default - Le nom du cycle - - - values - divers - Oui - N/A - Les valeurs sur lesquelles boucler, soit une liste - séparée par des virgules, (voir l'attribut delimiter), - soit un tableau de valeurs. - - - print - booléen - Non - true - S'il faut afficher ou non cette valeur - - - advance - booléen - Non - true - Oui ou non aller à la prochaîne valeur - - - delimiter - chaîne de caractères - Non - , - Le délimiteur à utiliser dans la liste. - - - assign - chaîne de caractères - Non - n/a - La variable de template dans laquelle la sortie - sera assignée - - - - - - cycle est utilisé pour boucler sur un ensemble de valeurs. Très pratique - pour alterner entre deux ou plusieurs couleurs dans un tableau, - ou plus généralement pour boucler sur les valeurs d'un tableau. - - - Vous pouvez définir plusieurs "cycle" dans votre template, en leur - donnant des noms uniques (attribut name). - - - Vous pouvez empêcher la valeur courante de s'afficher en définissant - l'attribut print à false. Ce procédé peut être utile pour discrètement - passer outre une valeur de la liste. - - - L'attribut advance est utilisé pour répéter une valeur. Lorsque - définit à false, le prochain appel de cycle ramènera la même valeur. - - - Si vous définissez l'attribut spécial "assign", la sortie de la fonction - cycle y sera assignée plutôt que d'être directement affichée. - - -cycle - -{section name=rows loop=$data} -<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"> - <td>{$data[rows]}</td> -</tr> -{/section} - -SORTIE: - -<tr bgcolor="#eeeeee"> - <td>1</td> -</tr> -<tr bgcolor="#d0d0d0"> - <td>2</td> -</tr> -<tr bgcolor="#eeeeee"> - <td>3</td> -</tr> - - - - - debug - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - output - chaîne de caractères - Non - html - Type de sortie, html ou javascript - - - - - - {debug} amène la console de débogage sur la page. Fonctionne - quelle que soit la valeur du paramètre debug de Smarty. - Comme ce dernier est appelé lors de l'exécution, il n'est capable - d'afficher que les variables assignées au template, et non - les templates en cours d'utilisation. Toutefois, vous voyez toutes - les variables disponibles pour le template courant. - - - - eval - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - var - mixed - Oui - n/a - variable (ou chaîne de caractères) à évaluer - - - assign - chaîne de caractères - Non - n/a - Le nom de la variable PHP dans laquelle la sortie - sera assignée - - - - - - eval évalue une variable comme si cette dernière était un template. - Peut être utile pour embarquer des balises de templates ou des variables - de template dans des variables ou des balises/variables dans des - variables de fichiers de configuration. - - - Si vous définissez l'attribut "assign", la sortie sera assignée à la - variable de template désignée plutôt que d'être affichée dans le - template. - - - Note technique - - Les variables évaluées sont traitées de la même façon que les templates. - Elles suivent les mêmes règles de traitement et de sécurité, comme si - elles étaient réellement des templates. - - - - Note technique - - Les variables évaluées sont compilées à chaque invocation, et la version - compilée n'est pas sauvegardée ! Toutefois, si le cache est activé, - la sortie sera placée en cache avec le reste du template. - - - -eval - -setup.conf ----------- - -emphstart = <b> -emphend = </b> -titre = Bienvenue sur la homepage de {$company} ! -ErrorVille = Vous devez spécifier un nom de {#emphstart#}ville{#emphend#}. -ErrorDept = Vous devez spécifier un {#emphstart#}département{#emphend#}. - - -index.tpl ---------- - -{config_load file="setup.conf"} - -{eval var=$foo} -{eval var=#titre#} -{eval var=#ErrorVille#} -{eval var=#ErrorDept# assign="state_error"} -{$state_error} - -SORTIE: - -Ceci est le contenu de foo. -Bienvenue sur la homepage de FictifLand. -Vous devez spécifier un nom de <b>ville</b>. -Vous devez spécifier un <b>département</b>. - - - - - - fetch - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - file - chaîne de caractères - Oui - n/a - le fichier, site http ou ftp à récupérer - - - assign - chaîne de caractères - Non - n/a - le nom de la variable PHP dans laquelle la sortie - sera assignée plutôt que d'être directement affichée. - - - - - - - fetch est utilisé pour récupérer des fichiers depuis le système de - fichier local, depuis un serveur http ou ftp, et en afficher le contenu. - Si le nom du fichier commence par "http://", la page internet sera - récupérée, puis affichée. Si le nom du fichier commence par "ftp://", - le fichier sera récupéré depuis le serveur ftp, et affiché. - Pour les fichiers du système local, le chemin doit être absolu ou - relatif au chemin d'exécution du script PHP. - - - Vous pouvez spécifier l'attribut optionnel assign - qui défini une variable de template dans laquelle la sortie - sera stockée plutôt qude d'être affichée (nouveau dans Smarty 1.5.0). - - - Note technique - Ne supporte pas les redirections http. Assurez vous d'inclure les - slash de fin sur votre page web si nécessaire. - - - - Note technique - - Si la sécurité est activée, vous ne pourez récupérer les - fichiers du système local que s'ils sont situés dans l'un des - répertoires sécurisé ($secure_dir). - - - -fetch - -{* Inclus du javascript dans votre template *} -{fetch file="/export/httpd/www.domain.com/docs/navbar.js"} - -{* récupère les informations météo d'un autre site sur votre page *} -{fetch file="http://www.myweather.com/68502/"} - -{* récupère les titres depuis un fichier ftp *} -{fetch file="ftp://user:password@ftp.domain.com/path/to/currentheadlines.txt"} - -{* assigne le contenu récupéré à une variable de template *} -{fetch file="http://www.myweather.com/68502/" assign="weather"} -{if $weather ne ""} - <b>{$weather}</b> -{/if} - - - - html_checkboxes - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - name - chaîne de caractères - Non - checkbox - Nom de la liste de cases à cocher - - - values - array - Oui, à moins que vous n'utilisiez l'attribut - option - n/a - Un tableau de valeurs pour les cases à - cocher - - - output - array - Oui, à moins que vous n'utilisiez l'attribut - option - n/a - Un tableau de sortie pour les cases à cocher - - - checked - chaîne de caractères - Non - empty - Les éléments cochés de la liste - - - options - associative array - Oui, à moins que vous n'utilisiez values et - output - n/a - Un tableau associatif de valeurs et - sorties - - - separator - chaîne de caractères - Non - empty - chaîne de caractère pour séparer chaque case - à cocher - - - - - - html_checkboxes est une fonction utilisateur qui crée un groupe de - cases à cocher avec les données fournies. Elle prend en compte la liste - des éléments sélectionnés par défaut. Les attributs requis sont - values et output, à moins que vous n'utilisiez options à la place. - La sortie générée est compatible XHTML. - - - Tous les paramètres qui ne sont pas listés ci-dessus sont affichés - en tant que paires nom/valeur dans chaque balise <input> crée. - - -html_checkboxes - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('id_client', array(1000,1001,1002,1003)); -$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane -Johnson','Charlie Brown')); -$smarty->assign('client_id', 1001); -$smarty->display('index.tpl'); - - -index.tpl: - -{html_checkboxes values=$id_client checked=$client_id output=$nom_client separator="<br />"} - - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_checkboxes', array( - 1001 => 'Joe Schmoe', - 1002 => 'Jack Smith', - 1003 => 'Jane Johnson','Charlie Brown')); -$smarty->assign('client_id', 1001); -$smarty->display('index.tpl'); - -index.tpl: - -{html_checkboxes name="id" options=$cust_checkboxes checked=$client_id separator="<br />"} - - -SORTIE: (pour les deux exemples) - -<input type="checkbox" name="id[]" value="1000">Joe Schmoe<br /> -<input type="checkbox" name="id[]" value="1001" checked="checked"><br /> -<input type="checkbox" name="id[]" value="1002">Jane Johnson<br /> -<input type="checkbox" name="id[]" value="1003">Charlie Brown<br /> - - - - html_image - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - file - chaîne de caractères - Oui - n/a - nom/chemin des images - - - border - chaîne de caractères - Non - 0 - Bordure de l'image - - - height - chaîne de caractères - Non - Hauteur de l'image actuelle - Hauteur de l'image à afficher - - - width - chaîne de caractères - Non - Longueur de l'image actuelle - Longueur de l'image à afficher - - - basedir - chaîne de caractères - non - racine du serveur web - répertoire depuis lequel baser le calcul des - chemins relatifs - - - link - chaîne de caractères - non - n/a - lien sur lequel l'image pointe - - - - - - html_image est une fonction utilisateur qui génère la balise - HTML pour une image. La hauteur et la longueur de l'image sont calculés - automatiquement depuis le fichier image si aucune n'est spécifiée. - - - basedir est le répertoire de base depuis lequel seront calculés les - chemins relatifs. Si non spécifié, la racine du serveur web est utilisé - (variable d'environnement DOCUMENT_ROOT). Si la sécurité est activée, - l'image doit se situer dans un répertoire sécurisé. - - - link est la valeur href à laquelle lier l'image. Si link est défini, - une balise <a href="VALEURLINK"><a> est placée autour de - l'image. - - - Note technique - - html_image requiert un accès au disque dur pour lire l'image et - calculer ses dimensions. Si vous n'utilisez pas un cache, il - est généralement préférable d'éviter d'utiliser html_image - et de laisser les balises images statiques pour de meilleures - performances. - - - -html_image - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->display('index.tpl'); - -index.tpl: - -{image file="pumpkin.jpg"} -{image file="/path/from/docroot/pumpkin.jpg"} -{image file="../path/relative/to/currdir/pumpkin.jpg"} - -SORTIE: (possible) - -<img src="pumpkin.jpg" border="0" width="44" height="68"> -<img src="/path/under/docroot/pumpkin.jpg" border="0" width="44" height="68"> -<img src="../path/relative/to/currdir/pumpkin.jpg" border="0" width="44" height="68"> - - - - html_options - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - values - array - Oui, à moins que vous n'utilisiez - l'attribut options - n/a - un tableau de valeurs pour les listes - déroulantes - - - output - array - Oui, à moins que vous n'utilisiez - l'attribut options - n/a - Un tableau de libellés pour la liste - déroulante - - - selected - chaîne de caractères/tableau - Non - empty - Les éléments sélectionnés - - - options - Tableau associatif - Oui, à moins que vous n'utilisiez option - et values - n/a - Un tableau associatif valeur / libellé - - - name - chaîne de caractères - Non - empty - Nom du goupe d'options - - - - - - html_options est une fonction utilisateur qui crée un groupe d'options - avec les données fournies. Elle prend en charge les éléments - sélectionnés par défaut. Les attributs requis sont values et output, - à moins que vous n'utilisiez options à la place. - - - Si la valeur donnée est un tableau, elle sera traitée comme un - OPTGROUP html, et affichée. La récursivité est supportée avec - OPTGROUP. La sortie est compatible XHTML. - - - Si l'attribut optionnel name est donné, les - balises <select name="groupname"></select> entoureront la - liste d'options. - - - Tous les paramètres qui ne sont pas dans la liste ci-dessus sont - affichés en tant que paires nom / valeur. Ils sont ignorés si - le paramètre optionnel name n'est pas donné. - - -html_options - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('id_client', array(1000,1001,1002,1003)); -$smarty->assign('nom_client', array('Joe Schmoe','Jack Smith','Jane -Johnson','Charlie Brown')); -$smarty->assign('client_id', 1001); -$smarty->display('index.tpl'); - -index.tpl: - -<select name=client_id> - {html_options values=$id_client selected=$client_id output=$nom_client} -</select> - - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_options', array( - 1001 => 'Joe Schmoe', - 1002 => 'Jack Smith', - 1003 => 'Jane Johnson', - 1004 => 'Charlie Brown')); -$smarty->assign('client_id', 1001); -$smarty->display('index.tpl'); - -index.tpl: - -<select name=client_id> - {html_options options=$cust_options selected=$client_id} -</select> - - -SORTIE: (valable pour les deux exemples) - -<select name=client_id> - <option value="1000">Joe Schmoe</option> - <option value="1001" selected="selected">Jack Smith</option> - <option value="1002">Jane Johnson</option> - <option value="1003">Charlie Brown</option> -</select> - - - - html_radios - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - name - chaîne de caractères - Non - radio - nom de la liste boutons radio - - - values - tableau - Oui, à moins que vous n'utilisiez l'attribut - options - n/a - Le tableau des valeurs des boutons radio - - - output - tableau - Oui, à moins que vous n'utilisiez l'attribut - options - n/a - Un tableau de libellés pour les boutons radio - - - checked - chaîne de caractères - Non - empty - Les boutons radios sélectionnés - - - options - tableau associatif - Oui, à moins que vous n'utilisiez values - et outputs - n/a - un tableau associatif valeurs / libellés - - - separator - chaîne de caractères - Non - empty - chaîne de séparation à placer entre les - boutons radio - - - - - - html_radio est une fonction utilisateur qui crée des boutons radio - html à partir des données fournies. Elle prend en charge les éléments - sélectionnés par défaut. Les attributs requis sont values et output, - à moins que vous n'utilisiez options à la place. La sortie générée est - compatible XHTML. - - - Tous les paramètres qui ne sont pas dans la liste ci dessus sont - affichés en tant que paires nom / valeur dans chaque balise <input> - créée. - - - -html_radios - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('id_client', array(1000,1001,1002,1003)); -$smarty->assign('nom_client', array('Joe Schmoe','Jack Smith','Jane -Johnson','Charlie Brown')); -$smarty->assign('client_id', 1001); -$smarty->display('index.tpl'); - - -index.tpl: - -{html_radios values=$id_client checked=$client_id output=$nom_client separator="<br />"} - - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_radios', array( - 1001 => 'Joe Schmoe', - 1002 => 'Jack Smith', - 1003 => 'Jane Johnson', - 1004 => 'Charlie Brown')); -$smarty->assign('client_id', 1001); -$smarty->display('index.tpl'); - - -index.tpl: - -{html_radios name="id" options=$cust_radios checked=$client_id separator="<br />"} - - -SORTIE: (both examples) - -<input type="radio" name="id[]" value="1000">Joe Schmoe<br /> -<input type="radio" name="id[]" value="1001" checked="checked"><br /> -<input type="radio" name="id[]" value="1002">Jane Johnson<br /> -<input type="radio" name="id[]" value="1003">Charlie Brown<br /> - - - - html_select_date - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - prefix - chaîne de caractères - Non - Date_ - Avec quoi préfixer le nom de variable - - - time - timestamp/YYYY-MM-DD - Non - la date courante au format unix YYYY-MM-DD - format - la date / heure à utiliser - - - start_year - chaîne de caractères - Non - current year - La première année dans la liste déroulante, soit - le numéro de l'année, soit un nombre relatif à l'année - courante (+/- N). - - - end_year - chaîne de caractères - Non - même chose que start_year - La dernière année dans la liste déroulante, soit - le numéro de l'année, soit un nombre relatif à l'année - courante (+/- N). - - - display_days - boolean - Non - true - Si l'on souhaite afficher les jours ou pas. - - - display_months - boolean - Non - true - Si l'on souhaite afficher les mois ou pas. - - - display_years - boolean - Non - true - Si l'on souhaite afficher les années ou pas. - - - month_format - chaîne de caractères - Non - %B - le format du mois (strftime) - - - day_format - chaîne de caractères - Non - %02d - Le format du jour (sprintf) - - - day_value_format - chaîne de caractères - Non - %d - le format de la valeur du jour (sprintf) - - - year_as_text - boolean - Non - false - S'il faut afficher l'année au format texte - - - reverse_years - boolean - Non - false - Affiche les années dans l'ordre inverse - - - field_array - chaîne de caractères - Non - null - - Si un nom est donné, la liste déroulante sera affichée - de telle façon que les résultats seront retournés à PHP - sous la forme nom[Day] (jour), nom[Year] (année), - nom[Month] (Mois). - - - - day_size - chaîne de caractères - Non - null - Ajoute un attribut size à la liste - déroulante des jours. - - - month_size - chaîne de caractères - Non - null - Ajoute un attribut size à la liste - déroulante des mois. - - - year_size - chaîne de caractères - Non - null - Ajoute un attribut size à la liste - déroulante des années. - - - all_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires à - toutes les balises select/input. - - - day_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select/input du jour. - - - month_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select/input du mois. - - - year_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select/input de l'année. - - - field_order - chaîne de caractères - Non - MDY - L'ordre dans lequel afficher les - listes déroulantes. - - - field_separator - chaîne de caractères - Non - \n - la chaîne de caractères affichée entre les - différents champs. - - - month_value_format - chaîne de caractères - Non - %m - Le format strftime de la valeur des mois, par défaut %m - pour les numéros. - - - - - - html_select_date est une fonction utilisateur qui crée des listes - déroulantes pour saisir la date. Elle peut afficher n'importe quel - jour, mois et année. - - -html_select_date - -{html_select_date} - - -SORTIE: - -<select name="Date_Month"> -<option value="1">January</option> -<option value="2">February</option> -<option value="3">March</option> -<option value="4">April</option> -<option value="5">May</option> -<option value="6">June</option> -<option value="7">July</option> -<option value="8">August</option> -<option value="9">September</option> -<option value="10">October</option> -<option value="11">November</option> -<option value="12" selected>December</option> -</select> -<select name="Date_Day"> -<option value="1">01</option> -<option value="2">02</option> -<option value="3">03</option> -<option value="4">04</option> -<option value="5">05</option> -<option value="6">06</option> -<option value="7">07</option> -<option value="8">08</option> -<option value="9">09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13" selected>13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20">20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23">23</option> -<option value="24">24</option> -<option value="25">25</option> -<option value="26">26</option> -<option value="27">27</option> -<option value="28">28</option> -<option value="29">29</option> -<option value="30">30</option> -<option value="31">31</option> -</select> -<select name="Date_Year"> -<option value="2001" selected>2001</option> -</select> - - - - -html_select_date - - -{* le démarage et la fin de l'année peuvent être relatif à l'année courante *} -{html_select_date prefix="StartDate" time=$time start_year="-5" end_year="+1" display_days=false} - -SORTIE: (current year is 2000) - -<select name="StartDateMonth"> -<option value="1">January</option> -<option value="2">February</option> -<option value="3">March</option> -<option value="4">April</option> -<option value="5">May</option> -<option value="6">June</option> -<option value="7">July</option> -<option value="8">August</option> -<option value="9">September</option> -<option value="10">October</option> -<option value="11">November</option> -<option value="12" selected>December</option> -</select> -<select name="StartDateYear"> -<option value="1999">1995</option> -<option value="1999">1996</option> -<option value="1999">1997</option> -<option value="1999">1998</option> -<option value="1999">1999</option> -<option value="2000" selected>2000</option> -<option value="2001">2001</option> -</select> - - - - html_select_time - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - prefix - chaîne de caractères - Non - Time_ - Par quoi préfixer la variable. - - - time - timestamp - Non - current time - Quel jour / heure utiliser. - - - display_hours - boolean - Non - true - S'il faut afficher l'heure. - - - display_minutes - boolean - Non - true - S'il faut afficher les minutes. - - - display_seconds - boolean - Non - true - S'il faut afficher les secondes. - - - display_meridian - boolean - Non - true - S'il faut afficher le méridian (am/pm) - - - use_24_hours - boolean - Non - true - S'il faut utiliser l'horloge 24 heure. - - - minute_interval - integer - Non - 1 - Intervalle des minutes dans la liste - déroulante - - - second_interval - integer - Non - 1 - Intervalle des secondes dans la liste - déroulante - - - field_array - chaîne de caractères - Non - n/a - Nom du tableau dans lequel les valeures - seront stockées. - - - all_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select / input. - - - hour_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select / input de l'heure. - - - minute_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select / input des minutes. - - - second_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select / input des secondes. - - - meridian_extra - chaîne de caractères - Non - null - Ajoute des attributs supplémentaires aux balises - select / input du méridian. - - - - - - html_select_time est une fonction utilisateur qui crée des listes - déroulantes pour saisir une heure. Elle prends en charge l'heure, - les minutes, les secondes et le méridian. - - -html_select_time - -{html_select_time use_24_hours=true} - - -SORTIE: - -<select name="Time_Hour"> -<option value="00">00</option> -<option value="01">01</option> -<option value="02">02</option> -<option value="03">03</option> -<option value="04">04</option> -<option value="05">05</option> -<option value="06">06</option> -<option value="07">07</option> -<option value="08">08</option> -<option value="09" selected>09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13">13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20">20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23">23</option> -</select> -<select name="Time_Minute"> -<option value="00">00</option> -<option value="01">01</option> -<option value="02">02</option> -<option value="03">03</option> -<option value="04">04</option> -<option value="05">05</option> -<option value="06">06</option> -<option value="07">07</option> -<option value="08">08</option> -<option value="09">09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13">13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20" selected>20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23">23</option> -<option value="24">24</option> -<option value="25">25</option> -<option value="26">26</option> -<option value="27">27</option> -<option value="28">28</option> -<option value="29">29</option> -<option value="30">30</option> -<option value="31">31</option> -<option value="32">32</option> -<option value="33">33</option> -<option value="34">34</option> -<option value="35">35</option> -<option value="36">36</option> -<option value="37">37</option> -<option value="38">38</option> -<option value="39">39</option> -<option value="40">40</option> -<option value="41">41</option> -<option value="42">42</option> -<option value="43">43</option> -<option value="44">44</option> -<option value="45">45</option> -<option value="46">46</option> -<option value="47">47</option> -<option value="48">48</option> -<option value="49">49</option> -<option value="50">50</option> -<option value="51">51</option> -<option value="52">52</option> -<option value="53">53</option> -<option value="54">54</option> -<option value="55">55</option> -<option value="56">56</option> -<option value="57">57</option> -<option value="58">58</option> -<option value="59">59</option> -</select> -<select name="Time_Second"> -<option value="00">00</option> -<option value="01">01</option> -<option value="02">02</option> -<option value="03">03</option> -<option value="04">04</option> -<option value="05">05</option> -<option value="06">06</option> -<option value="07">07</option> -<option value="08">08</option> -<option value="09">09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13">13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20">20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23" selected>23</option> -<option value="24">24</option> -<option value="25">25</option> -<option value="26">26</option> -<option value="27">27</option> -<option value="28">28</option> -<option value="29">29</option> -<option value="30">30</option> -<option value="31">31</option> -<option value="32">32</option> -<option value="33">33</option> -<option value="34">34</option> -<option value="35">35</option> -<option value="36">36</option> -<option value="37">37</option> -<option value="38">38</option> -<option value="39">39</option> -<option value="40">40</option> -<option value="41">41</option> -<option value="42">42</option> -<option value="43">43</option> -<option value="44">44</option> -<option value="45">45</option> -<option value="46">46</option> -<option value="47">47</option> -<option value="48">48</option> -<option value="49">49</option> -<option value="50">50</option> -<option value="51">51</option> -<option value="52">52</option> -<option value="53">53</option> -<option value="54">54</option> -<option value="55">55</option> -<option value="56">56</option> -<option value="57">57</option> -<option value="58">58</option> -<option value="59">59</option> -</select> -<select name="Time_Meridian"> -<option value="am" selected>AM</option> -<option value="pm">PM</option> -</select> - - - - html_table - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - loop - array - Oui - n/a - Tableau de données à parcourir - - - cols - integer - Non - 3 - Nombre de colonnes du tableau - - - table_attr - chaîne de caractères - Non - border="1" - attributs pour la balise table - - - tr_attr - chaîne de caractères - Non - empty - attributs pour les balises tr (les tableaux sont - parcourus) - - - td_attr - chaîne de caractères - Non - empty - attributs pour les balises td (les tableaux sont - parcourus) - - - trailpad - chaîne de caractères - Non - &nbsp; - valeur avec laquelle remplir les cellules - restantes de la dernière ligne (si il y en a) - - - - - - html_table est une fonction utilisateur - qui transforme un tableau de données dans un tabeau HTML. L'attribut - cols détermine le nombre de colonne du tableau. - Les attributs table_attr, tr_attr - et td_attr déterminent les attributs donnés aux - balises table, tr et td. Si tr_attr ou - td_attr sont des tableaux, ils seront parcourus. - trailpad est la valeur avec laquelle remplir - les cellules restantes de la dernière ligne, s'il y en a une. - - -html_table - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('data',array(1,2,3,4,5,6,7,8,9)); -$smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"')); -$smarty->display('index.tpl'); - -index.tpl: - -{html_table loop=$data} -{html_table loop=$data cols=4 table_attr='border="0"'} -{html_table loop=$data cols=4 tr_attr=$tr} - -SORTIE: - -<table border="1"> -<tr><td>1</td><td>2</td><td>3</td></tr> -<tr><td>4</td><td>5</td><td>6</td></tr> -<tr><td>7</td><td>8</td><td>9</td></tr> -</table> -<table border="0"> -<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr> -<tr><td>5</td><td>6</td><td>7</td><td>8</td></tr> -<tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> -</table> -<table border="1"> -<tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr> -<tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr> -<tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> -</table> - - - - math - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - equation - chaîne de caractères - Oui - n/a - L'opération à éxécuter - - - format - chaîne de caractères - Non - n/a - Le format du résultat (sprintf) - - - var - numeric - Oui - n/a - Les variables de l'opération - - - assign - chaîne de caractères - Non - n/a - Variable de template dans laquelle la sortie - sera assignée - - - [var ...] - numeric - Oui - n/a - Valeurs des variables de l'opération - - - - - - math autorise les designers de templates à effectuer des opérations - dans le template. Toute valeur numérique peut être utilisée dans une - opération, et le résultat sera affiché à la place des balises - "equation". Les variables utilisées dans l'opération sont passées en - tant que paramètre, et peuvent être des variables de templates ou des - valeurs statiques. +, -, /, *, abs, ceil, cos, - exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, - srans et tan sont tous des opérateurs valides. Voir la - documentation PHP pour plus d'informations sur ces fonctions - mathématiques. - - - Si vous spécifiez l'attribut assign, la sortie sera assignée à la variable - donnée plutôt que d'être directement affichée. - - - Note technique - - math est une fonction coûteuse en terme de performances, du fait - qu'elle utilise la fonction PHP eval (). Effectuer les calculs - dans votre code PHP est beaucoup plus efficient, donc, chaque fois - que possible, effectuez vos calculs directement dans PHP et assignez - le résultat au template. Evitez coût que coût les appels - répétitifs à la fonction math, comme on pourait le faire une - une boucle section. - - - -math - -{* $height=4, $width=5 *} - -{math equation="x + y" x=$height y=$width} - -SORTIE: - -9 - - -{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *} - -{math equation="height * width / division" - height=$row_height - width=$row_width - division=#col_div#} - -SORTIE: - -100 - - -{* vous pouvez utiliser des parenthèses *} - -{math equation="(( x + y ) / z )" x=2 y=10 z=2} - -SORTIE: - -6 - - -{* vous pouvez définir un format sprintf pour l'affichage *} - -{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"} - -SORTIE: - -9.44 - - - - mailto - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - address - chaîne de caractères - Oui - n/a - l'adresse email - - - text - chaîne de caractères - Non - n/a - le texte à afficher, par défaut l'adresse email - - - encode - chaîne de caractères - Non - none - Comment encoder l'adresse email. - none, hex et javascript sont des valeurs correctes. - - - cc - chaîne de caractères - Non - n/a - Les adresses email en copie (Cc). - Séparez les entrées par une virgule. - - - bcc - chaîne de caractères - Non - n/a - Les adresses email en copie cachées (Bcc). - Séparez les entrées par une virgule. - - - subject - chaîne de caractères - Non - n/a - Sujet de l'email. - - - newsgroups - chaîne de caractères - Non - n/a - newsgroup ou poster le message. - Séparez les entrées par une virgule. - - - followupto - chaîne de caractères - Non - n/a - Adresses ou transmettre le message. - Séparez les entrées par une virgule. - - - - extra - chaîne de caractères - Non - n/a - Toute information que vous souhaitez passer au lien, - comme par exemple une classe css. - - - - - - mailto crée un lien mailto automatiquement encodé (optionnel). - L'encodage rend la tâche de récupération des e-mails sur votre - site plus difficiles aux "web spiders". - - - Note technique - - javascript n'est certainement pas la forme d'encodage la plus robuste. - Vous pouvez également utiliser un encodage hexadécimal. - - - -mailto - -{mailto address="me@domain.com"} -{mailto address="moi@domaine.com" text="send me some mail"} -{mailto address="moi@domaine.com" encode="javascript"} -{mailto address="moi@domaine.com" encode="hex"} -{mailto address="moi@domaine.com" subject="Hello to you!"} -{mailto address="moi@domaine.com" cc="you@domain.com,they@domain.com"} -{mailto address="moi@domaine.com" extra='class="email"'} - -SORTIE: - -<a href="mailto:moi@domaine.com" >moi@domaine.com</a> -<a href="mailto:moi@domaine.com" >send me some mail</a> -<SCRIPT language="javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%6 -9%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d% -61%69%6e%2e%63%6f%6d%22%20%3e%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%3c%2f%61%3e -%27%29%3b'))</SCRIPT> -<a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d" >&#x6d;&#x65;&#x40;&#x64;& -#x6f;&#x6d;&#x61;&#x69;&#x6e;&#x2e;&#x63;&#x6f;&#x6d;</a> -<a href="mailto:moi@domaine.com?subject=Hello%20to%20you%21" >moi@domaine.com</a> -<a href="mailto:moi@domaine.com?cc=you@domain.com%2Cthey@domain.com" >moi@domaine.com</a> -<a href="mailto:moi@domaine.com" class="email">moi@domaine.com</a> - - - - popup_init - - popup est une intégration de overLib, une librairie capable de réaliser - des fenêtres surgissantes. (nous parlerons de "popup"). - Ce type de fenêtre est utilisé pour apporter des informations - contextuelles, comme des infobulles d'aides ou astuces. - popup_init doit être appelé une fois, en début de page si vous comptez - utiliser la fonction popup. - overLib à été écrit par Erik Bosrup. Le site d'overlib est situé à - l'adresse http://www.bosrup.com/web/overlib/. - - - Comme dans Smarty 2.1.2, overLib n'est PAS fournie dans la distribution. - Téléchargez overLib, déposez overlib.js dans votre arborescence web et - indiquez le chemin relatif à ce fichier dans l'attribut src de - popup_init. - - -popup_init - -{* popup_init doit être appelé une fois en début de page. *} -{popup_init src="/javascripts/overlib.js"} - - - - popup - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - text - chaîne de caractères - Oui - n/a - le texte/code html à afficher dans la popup - - - trigger - chaîne de caractères - Non - onMouseOver - L'évènement utilisé pour rendre la popup active, - onMouseOver ou onClick. - - - sticky - boolean - Non - false - Rends la popup active jusqu'a ce qu'elle soit - explicitement fermée. - - - caption - chaîne de caractères - Non - n/a - Défini le libellé du titre - - - fgcolor - chaîne de caractères - Non - n/a - couleur interne de la popup - - - bgcolor - chaîne de caractères - Non - n/a - couleur de la bordure de la popup - - - textcolor - chaîne de caractères - Non - n/a - couleur du texte à l'intérieur de la - popup - - - capcolor - chaîne de caractères - Non - n/a - couleur du libellé de la popup - - - closecolor - chaîne de caractères - Non - n/a - couleur du texte de fermeture - - - textfont - chaîne de caractères - Non - n/a - la police à utiliser dans le texte principal - - - captionfont - chaîne de caractères - Non - n/a - la police à utiliser dans le libellé - - - closefont - chaîne de caractères - Non - n/a - la police pour le texte de fermeture - - - textsize - chaîne de caractères - Non - n/a - taille de la police texte prinicpal - - - captionsize - chaîne de caractères - Non - n/a - taille de la police du libellé - - - closesize - chaîne de caractères - Non - n/a - taille de la police du bouton "fermer" - - - width - integer - Non - n/a - Longeur de la popup - - - height - integer - Non - n/a - Hauteur de la popup - - - left - boolean - Non - false - la popup va à gauche de la souris - - - right - boolean - Non - false - la popup va à droite de la souris - - - center - boolean - Non - false - la popup est centrée par rapport à la - position de la souris - - - above - boolean - Non - false - la popup est au dessus de la souris. NOTE: - possible uniquement si la hauteur est définie - - - below - boolean - Non - false - la popup apparait en dessous de la souris - - - border - integer - Non - n/a - rends la bordure de la popup plus épaisse ou plus - fine - - - offsetx - integer - Non - n/a - A quelle distance du curseur la popup apparaitra - , horizontalement. - - - offsety - integer - Non - n/a - A quelle distance du curseur la popup apparaitra - , verticalement. - - - fgbackground - url to image - Non - n/a - Une image à utiliser à la place de la couleur de - fonds dans la popup - - - bgbackground - url to image - Non - n/a - Image à utiliser à la place de la bordure de la - popup. NOTE: vous veillerez à définir bgcolor à "" ou la - couleur apparaitra de même. NOTE: Lorsque vous avez un - lien de fermeture, Netscape effectuera un nouveau rendu - des cellules du tableau, affichant mal les éléments - - - closetext - chaîne de caractères - Non - n/a - définit le texte de fermeture par autre chose - que "Close" - - - noclose - boolean - Non - n/a - N'affiche pas le bouton "Close" pour les fenêtres - "collantes". - - - - status - chaîne de caractères - Non - n/a - défini le texte de la barre de statut - du navigateur - - - autostatus - boolean - Non - n/a - Défini le texte de la barre de statut au contenu - de la popup. NOTE: Ecrase l'attribut status. - - - autostatuscap - chaîne de caractères - Non - n/a - Défini le texte de la barre de statut au libellé - de la popup. NOTE: Ecrase l'attribut status. - - - inarray - integer - Non - n/a - indique à overLib de lire le texte à cet index dans le - tableau ol_text, situé dans overlib.js. Ce paramètre peut être - utilisé à la place de text. - - - caparray - integer - Non - n/a - indique à overlib de lire le libellé depuis le - tableau ol_caps - - - capicon - url - Non - n/a - affiche l'image spécifiée avant le libellé de la - popup - - - snapx - integer - Non - n/a - Aligne la popup sur une grille horizontale - - - snapy - integer - Non - n/a - Aligne la popup sur une grille verticale - - - fixx - integer - Non - n/a - vérrouille la popup à une position horizontale. - Note: remplace les autres paramètres de position - horizontale - - - fixy - integer - Non - n/a - vérouille la popup à une position verticale - Note: remplace les autres paramètres de position - verticale - - - background - url - Non - n/a - défini l'image à utiliser plutôt que le tableau - de fond - - - padx - integer,integer - Non - n/a - écarte l'image de fond du reste des éléments - avec un espace horizontal, pour le positionnement du texte. - Note: c'est un attribut à deux paramètres. - - - pady - integer,integer - Non - n/a - écarte l'image de fond du reste des éléments - avec un espace vertical, pour le positionnement du texte. - Note: c'est un attribut à deux paramètres. - - - fullhtml - boolean - Non - n/a - vous autorise à placer du code html en tant que - contenu de la popup. Le code html est attendu dans - l'attribut text. - - - frame - chaîne de caractères - Non - n/a - contrôle la popup dans un cadre différent. - Voir la documentation d'overlib pour plus de détails - sur cette fonction. - - - timeout - chaîne de caractères - Non - n/a - Appelle la fonction javascript spécifiée et prends - sa valeur de retour comme texte devant être affiché - dans la popup. - - - delay - integer - Non - n/a - la popup se comporte comme une infobulle. - Elle disparaitra au bout d'un certain délai, en - millisecondes. - - - hauto - boolean - Non - n/a - Détermine automatiquement si la popup doit être - à gauche ou à droite de la souris - - - vauto - boolean - Non - n/a - Détermine automatiquement si la popup doit être - au-dessus ou au-dessous de la souris - - - - - - popup est utilisé pour créer une fenêtre popup javascript. - - -popup - -{* popup_init doit être appelé en haut de votre page *} -{popup_init src="/javascripts/overlib.js"} - -{* création d'un lien avec une popup qui apparait sur l'évènement onMouseOver *} -<A href="mypage.html" {popup text="Ce lien vous amène sur ma page!"}>mypage</A> - -{* vous pouvez utiliser du html, des liens, etc dans vos popup *} -<A href="mypage.html" {popup sticky=true caption="mypage contents" -text="<UL><LI>links<LI>pages<LI>images</UL>" snapx=10 snapy=10}>mypage</A> - -SORTIE: - -(allez sur le site officiel de Smarty pour des exemples.) - - - - textformat - - - - - - - - - - Nom attribut - Type - Requis - Defaut - Description - - - - - style - chaîne de caractères - Non - n/a - style prédéfini - - - indent - number - Non - 0 - Taille de l'indentation pour chaque - ligne - - - indent_first - number - Non - 0 - Taille de l'indentation de la - première ligne - - - indent_char - chaîne de caractères - Non - (single space) - Le caractère (ou la chaîne) à utiliser pour - indenter - - - wrap - number - Non - 80 - A combien de caractères doit on ajuster chaque - ligne - - - wrap_char - chaîne de caractères - Non - \n - Le caractère (ou chaîne de caractères) avec lequel - terminer les lignes - - - wrap_cut - boolean - Non - false - Si true, wrap réduira les lignes au caractère exact - au lieu d'ajuster à la fin d'un mot - - - assign - chaîne de caractères - Non - n/a - Le nom de la variable PHP dans laquelle la - sortie sera assignée - - - - - - textformat est une fonction de bloc utilisée pour formater du texte. - Elle nettoie la chaîne de ses espaces et caractères spéciaux, puis - formate les paragraphes en ajustant ces derniers à une certaine limite, - puis en indentant les lignes. - - - Vous pouvez soit utiliser un style prédéfini, soit définir explicitement - chaque attribut. Actuellement, seul le style prédéfini "email" est - disponible. - - -textformat - -{textformat wrap=40} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -SORTIE: - -This is foo. This is foo. This is foo. -This is foo. This is foo. This is foo. - -This is bar. - -bar foo bar foo foo. bar foo bar foo -foo. bar foo bar foo foo. bar foo bar -foo foo. bar foo bar foo foo. bar foo -bar foo foo. bar foo bar foo foo. - - -{textformat wrap=40 indent=4} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -SORTIE: - - This is foo. This is foo. This is - foo. This is foo. This is foo. This - is foo. - - This is bar. - - bar foo bar foo foo. bar foo bar foo - foo. bar foo bar foo foo. bar foo - bar foo foo. bar foo bar foo foo. - bar foo bar foo foo. bar foo bar - foo foo. - -{textformat wrap=40 indent=4 indent_first=4} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -SORTIE: - - This is foo. This is foo. This - is foo. This is foo. This is foo. - This is foo. - - This is bar. - - bar foo bar foo foo. bar foo bar - foo foo. bar foo bar foo foo. bar - foo bar foo foo. bar foo bar foo - foo. bar foo bar foo foo. bar foo - bar foo foo. - -{textformat style="email"} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -SORTIE: - -This is foo. This is foo. This is foo. This is foo. This is foo. This is -foo. - -This is bar. - -bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo -bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo -foo. - - - - - - - - Fichiers de configuration - - Les fichiers de configuration sont un moyen interressant pour gérer - des variables depuis un seul et même fichier. L'exemple le plus courant - étant le schéma de couleurs du template. Normalement, pour changer le - schéma de couleur d'une application, vous devriez aller - dans chaque template et changer la couleur des éléments (ou les classes css). - Avec un fichier de configuration, il vous est possible de conserver - la couleur dans un seul endroit, puis de la mettre à jour une seule fois. - - - Exemple de fichier de configuration - -# variables globales -titrePage = "Menu principal" -bodyBgColor = #000000 -tableBgColor = #000000 -rowBgColor = #00ff00 - -[client] -titrePage = "Infos client" - -[Login] -titrePage = "Login" -focus = "utilisateur" -Intro = """Une valeur qui tient sur - plusieur lignes. Vous devez la placer - entre trois guillemets.""" - -# hidden section -[.Database] -host=mon.domaine.com -db=ADDRESSBOOK -user=php-user -pass=foobar - - - Les valeurs des variables de fichiers de configuration peuvent être entre - guillemets, sans que cela soit nécessaire. Si vous vouler utiliser des - valeurs sur plusieurs lignes, vous devrez les entourer de triples - guillemets ("""). Vous pouvez insérer des commentaires dans les fichiers de - configuration en utilisant une syntaxe quelquonque, non valide. - Nous recommandons l'utilisation de # (dièse) en début - de ligne. - - - Cet exemple de fichier de configuration contient deux sections. Les noms des - sections sont entourés de crochets []. Les noms de section peuvent être - des chaînes, ne contenant aucun des symboles [ et - ]. Dans notre exemple, les 4 variables du début sont - des variables dites globales, qui ne sont pas contenue dans une section. - Ces variables sont toujours chargées depuis le fichier de configuration. - Si une section est chargée, alors toutes les variables de cette section - ainsi que les variables globales sont chargées. Si une variable existe - à la fois en tant que globale et à la fois en tant que variable de - section, la variable de section est prioritaire. - Si vous appelez deux variables dans une même section de la même façon, - la dernière déclarée prime. - - - Les fichiers de configuration sont chargés dans le template grâce à la - fonction config_load. - - - Vous pouvez masquer des variables ou des sections entières en préfixant - le nom de la variable ou le nom de la section avec une virgule. - Ce procédé est utile si votre application récupère ses données depuis - plusieurs fichiers de configuration et récupère des données sensibles dont - vos templates n'ont pas besoin. Si des tiers éditent des templates, vous - êtes sûr que ces derniers n'accèderont pas à ces données de configuration - en les chargeant depuis le template. - - - - - Console de débogage - - Il existe une console de débogage dans Smarty. La console vous indique - toutes les variables incluses, assignées et chargées depuis un fichier de - configuration pour le template courant. Un template appelé "debug.tpl" - est inclus dans la distribution de Smarty. Si besoin, vous pouvez définir - $debug_tpl de façon à ce que ce dernier contienne le chemin - du template à utiliser(dans SMARTY_DIR par defaut). - Lorsque vous chargez la page, une console javascript est censée surgir - et vous donner les noms de toutes les variables inclues et assignées dans - votre page courante. Pour voir toutes les variables d'un template particulier, - voir la fonction {debug}. - Pour désactiver la console de débogage, définissez $debugging à false. - Vous pouvez également temporairement activer le débogage en indiquant - SMARTY_DEBUG dans l'url si tant est que l'option - $debugging_ctrl soit activée. - - - Note technique - - La console de débogage ne fonctionne pas si vous utilisez l'API fetch (), - mais seulement lorsque vous utilisez display (). C'est en effet un jeu - d'instructions javascripts à la fin du template qui déclenchent l'ouverture - de la fenêtre. Si vous n'aimez pas javascript, vous pouvez modifier - debug.tpl pour formater les données de la façon qui vous conviendra le - mieux. Les données de débogage ne sont pas mises en cache et les - informations de debug.tpl ne sont pas incluses dans la sortie de la - console de débogage. - - - - - Le temps de chargement des templates et des fichiers de configuration sont - indiqués en secondes. - - - - \ No newline at end of file diff --git a/docs/fr/getting-started.sgml b/docs/fr/getting-started.sgml deleted file mode 100644 index 44cca6be..00000000 --- a/docs/fr/getting-started.sgml +++ /dev/null @@ -1,427 +0,0 @@ - - Pour commencer - - - Qu'est-ce que Smarty ? - - Smarty est un moteur de template pour PHP. Plus précisément, il facilite - la séparation entre la logique applicative et la présentation. - Cela s'explique plus facilement dans une situation où le - programmeur et le designer de templates jouent des rôles différents, ou, - comme la plupart du temps, sont deux personnes distinctes. - Supposons par exemple que vous concevez une page Web qui affiche un - article de newsletter. Le titre, le sous-titre, l'auteur et le corps - sont des éléments de contenu, ils ne contiennent aucune information - concernant la présentation. Ils sont transmis à Smarty par l'application, - puis le designer de templates éditent les templates et utilisent une - combinaison de balises HTML et de balises de templates pour formater - la présentation de ces éléments (tableaux HTML, couleurs d'arrière-plan, - tailles des polices, feuilles de styles, etc.). Un beau jour le programmeur - a besoin de changer la façon dont le contenu de l'article - est récupéré (un changement dans la logique applicative). Ce - changement n'affecte pas le designer de templates, le contenu - arrivera toujours au template de la même façon. De même, si le - le designer de templates veut changer complétement l'apparence - du template, aucun changement dans la logique de l'application - n'est nécessaire. Ainsi le programmeur peut changer la logique - de l'application sans restructurer les templates, et le designer - de templates peut changer les templates sans briser la logique - applicative. - - - Et maintenant un mot rapide sur ce que Smarty NE fait PAS. Smarty n'a - pas pour prétention de supprimer complétement les traitements au sein des - templates. - Il est tout à fait envisageable de recontrer un traitement dans un template, - à condition que ce dernier ne désserve que des besoins de présentation. - Un conseil : laissez la logique applicative en dehors des templates et - la logique de présentation en dehors de l'application. A l'avenir, cela permet - une meilleure gestion des évènements. - - - L'un des aspects unique de Smarty est la compilation des templates. - Cela signifie que Smarty lit les templates et crée des scripts PHP à partir - de ces derniers. Une fois créés, ils sont exécutés. - Il n'y a donc pas d'analyse coûteuse de template à chaque requête, - et les templates peuvent bénéficier des solutions de cache PHP - comme Zend Accelerator (http://www.zend.com) ou PHP Accelerator - (http://www.php-accelerator.co.uk). - - - Quelques caractéristiques de Smarty : - - - Il est très rapide. - Il est efficace, le parser PHP s'occupe - du sale travail. - Pas d'analyse de template coûteuse, une seule compilation. - - Il sait ne recompiler que les fichiers de templates - qui ont été modifiés. - Vous pouvez créer des - fonctions utilisateurs et des - modificateurs de variables personnalisés, le langage de - template est donc extrémement extensible. - Syntaxe des templates configurable, vous - pouvez utiliser {}, {{}}, <!--{}-->, etc comme délimiteurs. - - Les instructions if/elseif/else/endif - sont passées au parser PHP, la syntaxe de l'expression {if...} - peut être aussi simple ou aussi complexe que vous - le désirez. - Imbrication illimitée de sections, - de 'if', etc. autorisée. - Il est possible d'inclure du code PHP - directement dans vos templates, bien que cela ne soit pas obligatoire - (ni conseillé), vu que le moteur est extensible. - Support de cache intégré. - Sources de templates arbitraires. - Fonctions de gestion de cache personnalisables. - Architecture de plugins - - - - - Installation - - - Ce dont vous avez besoin - - Smarty nécessite un serveur Web utilisant PHP 4.0.6 ou supérieur. - - - - - Installation de base - - Copiez les fichiers bibliothèques de Smarty du répertoire - /libs/ de la distribution à un emplacement accessible à PHP. - Ce sont des fichiers PHP que vous NE DEVEZ PAS - modifier. Ils sont partagés par toutes les applications et ne seront - mis à jour que lorsque vous installerez une nouvelle version de - Smarty. - - - fichiers de la bibliothèque SMARTY - -Smarty.class.php -Smarty_Compiler.class.php -Config_File.class.php -debug.tpl -/plugins/*.php (tous !) - - - - Smarty utilise une constante PHP appelée SMARTY_DIR qui - représente le chemin complet de la bibliothèque Smarty. En fait, - si votre application trouve le fichier - Smarty.class.php, vous n'aurez pas - besoin de définir la variable SMARTY_DIR, Smarty s'en chargera pour vous. - En revanche, si Smarty.class.php - n'est pas dans votre répertoire d'inclusion ou que vous ne - donnez pas un chemin absolu à votre application, vous - devez définir SMARTY_DIR explicitement. SMARTY_DIR - doit avoir être terminé par un slash. - - - - Voici comment créer une instance de Smarty dans vos scripts PHP : - - - - créer une instance de Smarty - -require('Smarty.class.php'); -$smarty = new Smarty; - - - - Essayez de lancer le script ci-dessus. Si vous obtenez une erreur indiquant - que le fichier Smarty.class.php n'est pas trouvé, - tentez l'une des choses suivantes : - - - - fournir un chemin absolu vers la bibliothèque Smarty - -require('/usr/local/lib/php/Smarty/Smarty.class.php'); -$smarty = new Smarty; - - - - Ajouter le répertoire de la bibliothèque au chemin de php_include - -// Editez le fichier php.ini, ajoutez le répertoire de la -// bibliothèque Smarty au include_path et redémarrez le serveur Web. -// Cela devrait ensuite fonctionner : -require('Smarty.class.php'); -$smarty = new Smarty; - - - - Définir explicitement la constante SMARTY_DIR - -define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); -require(SMARTY_DIR.'Smarty.class.php'); -$smarty = new Smarty; - - - - Maintenant que les fichiers de la librairie sont en place, - il est temps de définir les répertoires de Smarty, pour votre application. - Smarty a besoin de quatre répertoires qui sont (par défaut) - templates, - templates_c, configs et - cache. Chacun d'entre eux peut être défini - via les attributs $template_dir, - $compile_dir, $config_dir et - $cache_dir respectivement. Il est vivement - conseillé que vous régliez ces répertoires séparément pour chaque - application qui utilise Smarty. - - - Assurez-vous de bien connaître chemin de la racine - de votre arborescence Web. Dans notre exemple, la racine - est "/web/www.mydomain.com/docs". Seul Smarty - accède aux répertoires en question, et jamais le serveur Web. - Pour des raisons de sécurité, il est donc conseillé de - sortir ces répertoires dans un répertoire - en dehors de l'arborescence - Web. - - - Dans notre exemple d'installation, nous allons régler l'environnement - de Smarty pour une application de livre d'or. Nous avons ici choisi - une application principalement pour mettre en évidence une - convention de nommage des répertoires. Vous pouvez utiliser le même - environnement pour n'importe quelle autre application, il suffit de - remplacer "livredor" avec le nom de votre application. Nous allons - mettre nos répertoires Smarty dans - "/web/www.mydomain.com/smarty/livredor/". - - - Vous allez avoir besoin d'au moins un fichier à la racine de - l'arborescence Web, - il s'agit du script auquel l'internaute a accès. Nous allons l'appeler - "index.php" et le placer dans un sous-répertoire - appelé "/livredor/". Il est pratique de configurer le serveur Web de - sorte que "index.php" soit identifié comme fichier - par défaut de ce répertoire. Aicnsi, si l'on tape - "http://www.mydomain.com/livredor/", le script index.php soit - exécuté sans que "index.php" ne soit spécifié dans l'URL. Avec Apache - vous pouvez régler cela en ajoutant "index.php" à la ligne où se - trouve DirectoryIndex (séparez chaque entrée par un espace). - - - Jetons un coup d'oeil à la structure de fichier obtenue : - - - - exemple de structure de fichiers - -/usr/local/lib/php/Smarty/Smarty.class.php -/usr/local/lib/php/Smarty/Smarty_Compiler.class.php -/usr/local/lib/php/Smarty/Config_File.class.php -/usr/local/lib/php/Smarty/debug.tpl -/usr/local/lib/php/Smarty/plugins/*.php - -/web/www.mydomain.com/smarty/livredor/templates/ -/web/www.mydomain.com/smarty/livredor/templates_c/ -/web/www.mydomain.com/smarty/livredor/configs/ -/web/www.mydomain.com/smarty/livredor/cache/ - -/web/www.mydomain.com/docs/livredor/index.php - - - - Smarty a besoin d'accéder en écriture aux répertoires - $compile_dir et $cache_dir, - assurez-vous donc que le serveur Web dispose de ces droits d'accès. - Il s'agit généralement de l'utilisateur "nobody" et du group - "nobody". Pour les utilisateurs de OS X, l'utilisateur par défaut - est "web" et le group "web". Si vous utilisez Apache, vous pouvez - parcourir le fichier httpd.conf (en général dans - "/usr/local/apache/conf/") pour déterminer quel est l'utilisateur - et le groupe auquel il appartient. - - - - - régler les permissions d'accès - - -chown nobody:nobody /web/www.mydomain.com/smarty/templates_c/ -chmod 770 /web/www.mydomain.com/smarty/templates_c/ - -chown nobody:nobody /web/www.mydomain.com/smarty/cache/ -chmod 770 /web/www.mydomain.com/smarty/cache/ - - - - Note technique - - La commande chmod 770 est relativement bien sécurisée, elle donne - à l'utilisateur "nobody" et au groupe "nobody" les accès en - lecture/écriture aux répertoires. Si vous voulez donner le droit d'accès - en lecture à tout le monde (principalement pour pouvoir accéder - vous-même à ces fichiers), vous pouvez lui préférer chmod 775. - - - - - Nous devons créer le fichier index.tpl que Smarty va charger. - Il va se trouver dans $template_dir. - - - - Edition de /web/www.mydomain.com/smarty/templates/index.tpl - - -{* Smarty *} - -Hello, {$name}! - - - - - Note technique - - {* Smarty *} est un commentaire de template. Il n'est pas - obligatoire mais il est bon de commencer tous vos templates - avec ce commentaire. Cela rend le fichier facilement - reconnaissable en plus de son extension. Les éditeurs - de texte peuvent par exemple reconnaître le fichier et - adapter la coloration syntaxique. - - - - - Maintenant passons à l'édition du fichier index.php. Nous allons - créer une instance de Smarty, assigner une valeur à une variable - de template et afficher le résultat avec index.tpl. Dans notre - exemple d'environnement, "/usr/local/lib/php/Smarty" est dans notre - include_path. Assurez-vous de faire la même chose ou d'utiliser - des chemins absolus. - - - - édition de /web/www.mydomain.com/docs/livredor/index.php - -// charge la bibliothèque Smarty -require('Smarty.class.php'); - -$smarty = new Smarty; - -$smarty->template_dir = '/web/www.mydomain.com/smarty/livredor/templates/'; -$smarty->compile_dir = '/web/www.mydomain.com/smarty/livredor/templates_c/'; -$smarty->config_dir = '/web/www.mydomain.com/smarty/livredor/configs/'; -$smarty->cache_dir = '/web/www.mydomain.com/smarty/livredor/cache/'; - -$smarty->assign('name','Ned'); - -$smarty->display('index.tpl'); - - - - Note techique - - Dans notre exemple, nous avons configuré les chemins absolus - pour chacun des répertoires Smarty. Si - '/web/www.mydomain.com/smarty/livredor/' est dans votre - include_path PHP alors ces réglages ne sont pas nécessaires. - Quoi qu'il en soit il est plus efficace et (par expérience) - moins générateur d'erreurs de les définir avec des chemins - absolus. Cela nous garantit que Smarty récupèrera les bons fichiers. - - - - - Et maintenant appelez le fichier index.php avec navigateur - Web. Vous devriez voir "Hello, Ned!". - - - Vous venez de terminer l'installation de base de Smarty ! - - - - Configuration avancée - - - Ceci est la suite de l'installation de base, veuillez - lire cette dernière avant de poursuivre. - - - - Une manière un peu plus commode de configurer Smarty est de faire votre - propre classe fille et de l'initialiser selon votre environnement. - De la sorte, nous n'aurons plus besoin de configurer à chaques fois les - chemins de notre environnement. Créons un nouveau répertoire - "/php/includes/livredor/" et un nouveau fichier appelé "setup.php". - Dans notre exemple d'environnement, "/php/includes" est notre - include_path PHP. Assurez-vous de faire la même chose ou alors d'utiliser - des chemins absolus. - - - - édition de /php/includes/livredor/setup.php - - -// charge la librairie Smarty -require('Smarty.class.php'); - -// le fichier setup.php est un bon -// endroit pour charger les fichiers -// de librairies de l'application et vous pouvez -// faire cela juste ici. Par exemple : -// require('livredor/livredor.lib.php'); - -class Smarty_livredor extends Smarty { - - function Smarty_livredor() { - - // Constructeur de la classe. Appelé automatiquement - // à l'instanciation de la classe. - - $this->Smarty(); - - $this->template_dir = '/web/www.mydomain.com/smarty/livredor/templates/'; - $this->compile_dir = '/web/www.mydomain.com/smarty/livredor/templates_c/'; - $this->config_dir = '/web/www.mydomain.com/smarty/livredor/configs/'; - $this->cache_dir = '/web/www.mydomain.com/smarty/livredor/cache/'; - - $this->caching = true; - $this->assign('app_name','Guest Book'); - } - -} - - - - Modifions maintenant le fichier index.php pour qu'il utilise "setup.php" - - - - édition de /web/www.mydomain.com/docs/livredor/index.php - - -require('livredor/setup.php'); - -$smarty = new Smarty_livredor; - -$smarty->assign('name','Ned'); - -$smarty->display('index.tpl'); - - - - Vous savez maintenant qu'il est facile de créer une instance de Smarty, - correctement configurée, en utilisant Smarty_livredor qui initialise - automatiquement tout ce qu'il faut pour votre application. - - - - - - diff --git a/docs/fr/html-common.dsl b/docs/fr/html-common.dsl deleted file mode 100644 index 7fd772c5..00000000 --- a/docs/fr/html-common.dsl +++ /dev/null @@ -1,382 +0,0 @@ -;; -*- Scheme -*- -;; -;; $Id$ -;; - -;; Returns the depth of the auto-generated TOC (table of contents) that -;; should be made at the nd-level -(define (toc-depth nd) - (if (string=? (gi nd) (normalize "book")) - 3 ; the depth of the top-level TOC - 1 ; the depth of all other TOCs - )) - - - - - - -(element (funcdef function) - ($bold-seq$ - (make sequence - (process-children) - ) - ) - ) - - -(define (is-true-optional nl) - (and (equal? (gi (parent nl)) (normalize "parameter")) - (equal? 0 (string-length (strip (data (preced nl))))) - (equal? 0 (string-length (strip (data (follow nl))))) - ) - ) - - -(define (has-true-optional nl) - (is-true-optional - (node-list-first-element - (select-elements - (descendants nl) - (normalize "optional")) - ) - ) - ) - - -(define (count-true-optionals nl) - (let loop - ((result 0) - (nl (select-elements (descendants nl) (normalize "optional"))) - ) - (if(node-list-empty? nl) - result - (if(is-true-optional(node-list-first nl)) - (loop (+ result 1) (node-list-rest nl)) - (loop result (node-list-rest nl)) - ) - ) - ) - ) - - -;; there are two different kinds of optionals -;; optional parameters and optional parameter parts -;; an optional parameter is identified by an optional tag -;; with a parameter tag as its parent -;; and only whitespace between them -(element optional - ;;check for true optional parameter - (if (is-true-optional (current-node)) - ;; yes - handle '[...]' in paramdef - (process-children-trim) - ;; no - do '[...]' output - (make sequence - (literal %arg-choice-opt-open-str%) - (process-children-trim) - (literal %arg-choice-opt-close-str%) - ) - ) - ) - -;; now this is going to be tricky -(element paramdef - (make sequence - ;; special treatment for first parameter in funcsynopsis - (if (equal? (child-number (current-node)) 1) - ;; is first ? - (make sequence - ;; start parameter list - (literal "(") - ;; is optional ? - ( if (has-true-optional (current-node)) - (literal %arg-choice-opt-open-str%) - (empty-sosofo) - ) - ) - ;; not first - (empty-sosofo) - ) - - ;; - (process-children-trim) - - ;; special treatment for last parameter - (if (equal? (gi (ifollow (current-node))) (normalize "paramdef")) - ;; more parameters will follow - (make sequence - ;; next is optional ? - ( if (has-true-optional (ifollow (current-node))) - ;; optional - (make sequence - (literal " ") - (literal %arg-choice-opt-open-str%) - ) - ;; not optional - (empty-sosofo) - ) - (literal ", " ) - ) - ;; last parameter - (make sequence - (literal - (let loop ((result "")(count (count-true-optionals (parent (current-node))))) - (if (<= count 0) - result - (loop (string-append result %arg-choice-opt-close-str%)(- count 1)) - ) - ) - ) - ( literal ")" ) - ) - ) - ) - ) - - -(element function - (let* ((function-name (data (current-node))) - (linkend - (string-append - "function." - (string-replace - (string-replace function-name "_" "-") - "::" "."))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond - ;; function names should be plain in FUNCDEF - ((equal? parent-gi "funcdef") - (process-children)) - - ;; if a valid ID for the target function is not found, or if the - ;; FUNCTION tag is within the definition of the same function, - ;; make it bold, add (), but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - function-name)) - ($bold-seq$ - (make sequence - (process-children) - (literal "()")))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-seq$ - (make sequence - (process-children) - (literal - ) - (literal "()")))))))) - -(element command - (let* ((command-name (data (current-node))) - (linkend - (string-append - "language.function." - (string-replace - (string-replace command-name "_" ".") - "::" "."))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond - ;; function names should be plain in FUNCDEF - ((equal? parent-gi "funcdef") - (process-children)) - - ;; if a valid ID for the target function is not found, or if the - ;; FUNCTION tag is within the definition of the same function, - ;; make it bold, add (), but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - command-name)) - ($bold-seq$ - (make sequence - (literal "{") - (process-children) - (literal "}")))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-seq$ - (make sequence - (literal "{") - (process-children) - (literal "}")))))))) - -(element classname - (let* ((class-name (data (current-node))) - (linkend - (string-append - "class." - (string-replace - (case-fold-down class-name) "_" "-"))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond - ;; function names should be plain in SYNOPSIS - ((equal? parent-gi "synopsis") - (process-children)) - - ;; if a valid ID for the target class is not found, or if the - ;; CLASSNAME tag is within the definition of the same class, - ;; make it bold, but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - class-name)) - ($bold-seq$ - (process-children))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-seq$ - (process-children))))))) - - -(element constant - (let* ((constant-name (data (current-node))) - (linkend - (string-append "constant." - (case-fold-down - (string-replace constant-name "_" "-")))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond -; ;; constant names should be plain in FUNCDEF -; ((equal? parent-gi "funcdef") -; (process-children)) - - ;; if a valid ID for the target constant is not found, or if the - ;; CONSTANT tag is within the definition of the same constant, - ;; make it bold, add (), but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - constant-name)) - ($bold-mono-seq$ - (process-children))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-mono-seq$ - (process-children))))))) - - -(element example - (make sequence - (make element gi: "TABLE" - attributes: (list - (list "WIDTH" "100%") - (list "BORDER" "0") - (list "CELLPADDING" "0") - (list "CELLSPACING" "0") - (list "CLASS" "EXAMPLE")) - (make element gi: "TR" - (make element gi: "TD" - ($formal-object$)))))) - - -(element (paramdef parameter) - (make sequence - font-posture: 'italic - (process-children-trim) - ) - ) - -(mode book-titlepage-recto-mode - (element authorgroup - (process-children)) - - (element author - (let ((author-name (author-string)) - (author-affil (select-elements (children (current-node)) - (normalize "affiliation")))) - (make sequence - (make element gi: "DIV" - attributes: (list (list "CLASS" (gi))) - (literal author-name)) - (process-node-list author-affil)))) - ) - -(define (chunk-element-list) - (list (normalize "preface") - (normalize "chapter") - (normalize "appendix") - (normalize "article") - (normalize "glossary") - (normalize "bibliography") - (normalize "index") - (normalize "colophon") - (normalize "setindex") - (normalize "reference") - (normalize "refentry") - (normalize "part") - (normalize "sect1") - (normalize "sect2") - (normalize "section") - (normalize "book") ;; just in case nothing else matches... - (normalize "set") ;; sets are definitely chunks... - )) - -(define ($section-body$) - (make element gi: "DIV" - attributes: (list (list "CLASS" (gi))) - ($section-separator$) - ($section-title$) - - (if (or (not (node-list-empty? (select-elements (children (current-node)) - (normalize "sect2")))) - (not (node-list-empty? (select-elements (children (current-node)) - (normalize "sect3"))))) - (build-toc (current-node) 1) - (empty-sosofo)) - - (process-children))) - diff --git a/docs/fr/manual.sgml b/docs/fr/manual.sgml deleted file mode 100644 index 144efb43..00000000 --- a/docs/fr/manual.sgml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - -]> - - - - Smarty - le moteur et compilateur de template PHP - - - MonteOhrt <monte@ispi.net> - - - AndreiZmievski <andrei@php.net> - - - - - - ArnaudCogoluègnes <arnaud.cogoluegnes@free.fr> - - - GéraldCroës <gcroes@aston.fr> - - - - Version 2.0 - - 2001 - 2002 - 2003 - ispi of Lincoln, Inc. - - - - &preface; - &getting.started; - &smarty.for.designers; - &smarty.for.programmers; - &appendixes; - - diff --git a/docs/fr/preface.sgml b/docs/fr/preface.sgml deleted file mode 100644 index 66027b6e..00000000 --- a/docs/fr/preface.sgml +++ /dev/null @@ -1,77 +0,0 @@ - - Préface - - "Comment rendre mes scripts PHP indépendants de la présentation ?". - Voici sans doute la question la plus posée sur la mailing list - PHP. Alors que PHP est étiqueté "langage de script - pour HTML", on se rend vite compte, après quelques projets qui mélangent - sans complexe HTML et PHP, que la séparation entre la forme et - le contenu est important. De plus, dans de nombreuses entreprises - les rôles du designer et du programmeur sont distincts. La solution template - coule donc de source. - - - Dans notre entreprise par exemple, le développement d'une application - se fait de la manière suivante : une fois le cahier des charges écrit, - le designer réalise une maquette, et donne ses interfaces - au programmeur. Le programmeur implémente les fonctionnalités applicatives - et utilise les maquettes pour faire des squelettes de templates. Le projet - est alors passé au designer HTML/responsable de la mise en page qui amène les - templates jusqu'au faîte de leur gloire. Il est possible que le projet fasse - une fois ou deux des allers/retours entre la programmation et la présentation. - En conséquence, il est important de disposer d'un bon système de template. Les - programmeurs ne veulent pas avoir à faire au HTML, et ne veulent pas non plus - que les designers HTML bidouillent le code PHP. Les designers ont besoin d'outils - comme des fichiers de configuration, des blocs dynamiques et d'autres solutions - pour répondre à des problématiques d'interface, mais ne veulent pas - nécessairement avoir à faire à toutes les subtilités de la programmation PHP. - - - Un rapide tour d'horizon des solutions type template aujourd'hui et - l'on s'aperçoit que la plupart d'entre elles n'offrent que des moyens - rudimentaires pour substituer des variables dans des templates, ainsi que des - fonctionnalités limitées de blocs dynamiques. Cependant nous avons - besoin d'un peu plus. Nous ne voulons pas que les programmeurs - s'occupent de la présentation HTML du TOUT, mais cela est pratiquement - inévitable. Par exemple, si un designer veut des couleurs d'arrière plan - différentes pour alterner entre différents blocs dynamiques, il est nécessaire - que ce dernier travaille avec le programmeur. Nous avons aussi besoin que les - designers soient capables de travailler avec leurs propres fichiers - de configuration pour y récupérer des variables, exploitables dans leurs - templates. Et la liste est longue. - - - Fin 1999, nous avons commencé à écrire une spécification pour un moteur de - template. Une fois la spécification terminée, - nous avons commencé à travailler sur un moteur de template écrit - en C qui pourrait, avec un peu de chance, être inclus à PHP. - Non seulement nous avons rencontré des problèmes techniques complexes, - mais nous avons participés à de nombreux débats sur ce que devait - et ce que ne devait pas faire un moteur de template. De cette expérience nous avons - décidé qu'un moteur de template se devait d'être écrit sous la forme d'une - classe PHP, afin que quiconque puisse l'utiliser à sa convenance. Nous - avons donc réalisé un moteur de template qui se contentait de faire cela, - et SmartTemplate a vu le jour (note : cette - classe n'a jamais été soumise au public). C'était une classe qui - faisait pratiquement tout ce que nous voulions : substitution de variables, - inclusion d'autres templates, intégration avec des fichiers de configuration, - intégration de code PHP, instruction 'if' basique et une gestion plus robuste - des blocks dynamiques imbriqués. Elle faisait tout cela avec des expressions - rationnelles et le code se révéla, comment dire, impénétrable. De plus, elle était - relativement lente pour les grosses applications à cause de l'analyse - et du travail sur les expressions rationnelles qu'elle devait faire à chaque - exécution. Le plus gros problème du point de vue du programmeur était - tout le travail nécessaire en amont, dans le script PHP, pour configurer - et exécuter les templates, et les blocs dynamiques. Comment rendre tout ceci - plus simple ? - - - Puis vint la vision de ce que devait devenir Smarty. Nous - savons combien le code PHP peut être rapide sans le coût - d'analyse des templates. Nous savons aussi combien fastidieux - et décourageant peut paraître le langage pour le designer moyen, et que - cela peut être remplacé par une syntaxe spécifique, beaucoup - plus simple. Et si nous combinions les deux forces ? Ainsi, Smarty - était né... - - diff --git a/docs/fr/programmers.sgml b/docs/fr/programmers.sgml deleted file mode 100644 index d2c6e68d..00000000 --- a/docs/fr/programmers.sgml +++ /dev/null @@ -1,3091 +0,0 @@ - - Smarty pour les programmeurs - - - - Constantes - - - - SMARTY_DIR - - Il doit s'agir du chemin complet du rTpertoire oú - se trouvent les fichiers classes de Smarty. - S'il n'est pas dTfini, Smarty essaiera alors d'en - dTterminer automatiquement la valeur. - S'il est dTfini, le chemin doit se terminer par un slash. - - - - SMARTY_DIR - -// dTfinit le chemin du rTpertoire de Smarty -define("SMARTY_DIR","/usr/local/lib/php/Smarty/"); - -require_once(SMARTY_DIR."Smarty.class.php"); - - - - - - Variables - - - $template_dir - - C'est le nom par dTfaut du rTpertoire des templates. - Si vous ne spTcifiez aucun chemin lors de l'utilisation de templates, Smarty - les cherchera a cet emplacement. - Par dTfaut, il s'agit de "./templates", ce qui signifie - qu'il va chercher le rTpertoire templates - dans le rTpertoire oú se trouve le script PHP en cours d'exTcution. - - - - Note technique - - Il n'est pas conseillT de mettre ce rTpertoire - dans l'arborescence Web. - - - - - $compile_dir - - C'est le nom du rTpertoire oú se trouvent les templates - compilTs. Par dTfaut, il s'agit de "./templates_c", - ce qui signifie que Smarty va chercher ce rTpertoire - dans le mOme rTpertoire que le script PHP en cours d'exTcution. - - - Note technique - - Ce rTglage doit Otre soit un chemin absolu, soit un chemin - relatif. include_path n'est pas utilisT pour Tcrire des fichiers. - - - - Note technique - - Il n'est pas conseillT de mettre ce rTpertoire - sous la racine de l'arborescence Web. - - - - - $config_dir - - Il s'agit du rTpertoire utilisT pour stocker les - fichiers de configuration utilisTs dans les templates. - La valeur par dTfaut est "./configs", ce qui signifie - que Smarty va chercher ce rTpertoire - dans le mOme rTpertoire que le script PHP qui s'exTcute. - - - Note technique - - Il n'est pas conseillT de mettre ce rTpertoire - sous la racine de l'arborescence Web. - - - - - $plugins_dir - - Ce sont les rTpertoire dans lesquels Smarty ira chercher les plugins - dont il a besoin. La valeur par dTfaut est "plugins" sous le - rTpertoire SMARTY_DIR. Si vous donnez un chemin relatif, Smarty - regardera d'abord relativement au SMARTY_DIR, puis relativement au rtc (rTpertoire - de travail courant), puis relativement a chaque entrTe de votre rTpertoire - d'inclusion PHP. - - - Note technique - - Pour des raisons de performances, ne rTglez pas votre plugins_dir - pour qu'il utilise votre include_path PHP. Utilisez un - chemin absolu ou un chemin relatif a SMARTY_DIR ou au rtc. - - - - - $debugging - - Cela active la - console de dTbogage. - La console est une fenOtre javascript qui vous informe des templates - inclus et des variables assignTes dans la page courante. - - - - $debug_tpl - - C'est le nom du fichier template utilisT pour la - console de dTbuggage. Par dTfaut debug.tpl, il se situe dans SMARTY_DIR - - - - $debugging_ctrl - - Cela permet d'avoir diffTrents moyens pour activer - le dTbogage. URL signifie que si SMARTY_DEBUG se - trouve dans QUERY_STRING, le dTbuggage - est activT a l'invocation du script. Si $debugging - est a vrai, cette valeur est sans effet. - - - - $global_assign - - C'est une liste de variable qui sont toujours - implicitement assignTes au moteur de templates. - Ceci est commode pour rendre des variables globales - ou des variables du serveur accessibles a tous les templates - plut(t que de devoir les assigner a la main. Chaque TlTment - de $global_assign doit Otre soit le nom de la variable - globale, soit une paire clef/valeur, oú clef est le - nom du tableau global et valeur le tableau de variable - assignTes depuis ce tableau global. - $SCRIPT_NAME est globalement assignT par dTfaut depuis - $HTTP_SERVER_VARS. - - - Note technique - - On peut accTder aux variables du serveur avec la variable - $smarty, par exemple {$smarty.server.SCRIPT_NAME}. - Se reporter a la section sur la variable - $smarty. - - - - - $undefined - - Cela rFgle la valeur de $undefined, null par dTfaut. - N'est actuellement utilisT que pour initialiser - des variables non-dTfinies dans $global_assign a des - valeurs par dTfaut. - - - - $autoload_filters - - Si vous dTsirez charger des filtres a chaque invocation - de templates, vous pouvez le spTcifier en utilisant cette - variable. Les types de filtres et les valeurs sont des - tableaux comportant le nom des filtres. - - -$smarty->autoload_filters = array('pre' => array('trim', 'stamp'), - 'output' => array('convert')); - - - - - - $compile_check - - A chaque invocation de l'application PHP, Smarty fait - un test pour voir si le template courant a TtT modifiT - (date de derniFre modification diffTrente) depuis sa - derniFre compilation. S'il a changT, le template est recompilT. - Si le template n'a pas encore TtT compilT, il le sera - quelle que soit la valeur ce rTglage. - Par dTfaut cette valeur est a vrai. Quand - une application est mise en production (les templates - ne changent plus), cette vTrification n'est pas nTcessaire. - Assurez-vous de mettre $compile_check a "false" pour des performances - maximales. Notez que si vous mettez ce paramFtre a "false" et qu'un - template est modifiT, vous ne verrez *pas* le changement - car le template ne sera *pas* recompilT. Si le processus de cache - est activT et que $compile_check l'est aussi, alors les fichiers - du cache seront regTnTrTs si un template concernT ou un fichier de - configuration concernT est modifiT. Voir aussi $force_compile ou clear_compiled_tpl. - - - - - $force_compile - - Cela oblige Smarty a (re)compiler les templates a chaque - invocation. Ce rTglage supplante $compile_check. Par dTfaut, il - est dTsactivT. Ceci est commode pour le dTveloppement et le - dTbogage mais ne devrait jamais Otre utilisT dans un environnment - de production. Si le systFme de cache est actif, les - fichiers du cache seront regTnTrTs a chaque appel. - - - - $caching - - Ce paramFtre demande a Smarty de mettre ou non en cache la sortie des - templates. - Par dTfaut ce rTglage est a 0 (dTsactivT). Si vos templates - gTnFrent du contenu redondant, il est conseillT d'activer le - cache. Cela permettra un gain de performance consTquent. - Vous pouvez aussi avoir de nombreux fichiers de cache pour un mOme template. - Une valeur de 1 ou 2 active le cache. 1 indique a Smarty d'utiliser - la variable $cache_lifetime pour dTterminer si le fichier de cache a expirT. - Une valeur de 2 indique a Smarty d'utiliser la valeur - $cache_lifetime spTcifiTe a la gTnTration du cache. Ainsi vous pouvez rTgler - la durTe de vie d'un fichier de cache avant de rTcupTrer le template pour avoir - un certain contr(le quand ce fichier en particulier expire. Voir - aussi is_cached. - - - Si $compile_check est actif, le contenu du cache sera regTnTrT - si un des templates ou un des fichiers de configuration qui fait partie - de ce fichier de cache a TtT modifiT. Si $force_compile est actif, le contenu - du cache est toujours regTnTrT. - - - - $cache_dir - - Il s'agit du nom du rTpertoire oú les caches des templates - sont stockTs. Par dTfaut il s'agit de "./cache", ce qui signifie - que Smarty va chercher ce rTpertoire - dans le mOme rTpertoire que le script PHP en cours d'exTcution. - - - Note technique - - Ce rTglage doit Otre soit un chemin absolu, soit un chemin - relatif. include_path n'a aucune influence lors de l'Tcriture des fichiers. - - - - Technical Note - - Il n'est pas conseillT de mettre ce rTpertoire - dans l'arborescence Web. - - - - - $cache_lifetime - - Il s'agit de la durTe en secondes pendant laquelle un cache de template - est valide. Une fois cette durTe dTpassTe, le cache est regTnTrT. - $caching doit Otre a "true" pour que $cache_lifetime ait une - quelconque utilitT. Avec une valeur de -1, le cache n'expire jamais. - Avec une valeur de 0, le cache est toujours regTnTrT (utile - a des fins de tests seulement. Une meilleure faton de dTsactiver - le cache est de mettre $caching a "false"). - - - Si $force_compile est - activT, les fichiers du cache seront regTnTrTs a chaque fois, - dTsactivant ainsi le cache. Vous pouvez effacer tous les fichiers du cache - avec la function - clear_all_cache() - ou de faton individuelle (ou groupTe) - avec la fonction clear_cache(). - - - Note technique - - Si vous souhaitez donner a certains templates leur propre durTe de vie - en cache, vous pouvez le faire en rTglant - $caching a 2, - puis $cache_lifetime a une unique valeur juste avant d'appeler - display ou fetch(). - - - - - $cache_handler_func - - Vous pouvez utiliser votre propre fonction de gestion du cache plut(t que - d'utiliser celle livrTe avec Smarty. - RTfTrez-vous a la section sur la fonction de gestion de cache - personnalisTe pour plus de dTtails. - - - - $cache_modified_check - - Si cette variable est a vrai, Smarty respectera l'en-tOte - If-Modified-Since envoyT par le client. Si la date de derniFre - modification du fichier de cache n'a pas changT depuis la derniFre - visite, alors un en-tOte "304 Not Modified" sera envoyT a la place - du contenu. Cela ne fonctionne qu'avec du contenu mis en cache hors de la - balise insert. - - - - $config_overwrite - - Si cette variable est a vrai, les variables lues dans les fichiers - de configuration peuvent s'Tcraser entre elles. Sinon les variables - seront mises dans un tableau. TrFs utile si vous voulez stocker - des tableaux de donnTes dans des fichiers de configuration, listez - simplement chaque TlTment plusieurs fois. Mise a faux par dTfaut. - - - - $config_booleanize - - Si cette variable est a vrai, les valeurs on/true/yes et off/false/no - dans les fichiers de configuration sont automitiquement converties - en boolTen. De cette faton vous pouvez utiliser ces valeurs dans le - template de la faton suivante : {if #foobar#} ... {/if}. Si foobar - est a on, true ou yes, l'instruction {if} sera exTcutTe. vrai - par dTfaut. - - - - $config_read_hidden - - Si cette variable est a vrai, les sections cachTs (dont les noms - commencent par un point) dans les fichiers de configuration peuvent - Otre lues depuis les templates. On laisse habituellement cela a faux, de - cette faton vous pouvez stocker des donnTes sensibles dans les fichiers - de configuration, comme par exemple des paramFtres de base de donnTes, - sans vous soucier de la faton dont les templates les chargent. - Mise a faux par dTfaut. - - - - $config_fix_newlines - - Si cette variable est mise a vrai, les caractFres de nouvelles lignes mac et dos - (\r et \r\n) sont convertis en \n quand ils sont analysTs. vrai par dTfaut. - - - - $default_template_handler_func - - Cette fonction est appelTe quand un template ne peut pas Otre - obtenu avec sa ressource. - - - - $php_handling - - Indique a Smarty comment interprTter le code PHP - intTgrT dans les templates. Il y a quatre valeurs possibles, par - dTfaut SMARTY_PHP_PASSTHRU. Notez que cela n'affecte PAS le code - PHP entourT des balises - {php}{/php} - dans le template. - - - SMARTY_PHP_PASSTHRU - Smarty Tcrit les balises - telles quelles. - SMARTY_PHP_QUOTE - Smarty transforme les balises - en entitTs HTML. - SMARTY_PHP_REMOVE - Smarty supprime les balises - des templates. - SMARTY_PHP_ALLOW - Smarty exTcute les balises - comme du code PHP. - - - NOTE : IntTgrer du code PHP dans les templates est vivement - dTconseillT. PrTfTrez les - fonctions utilisateurs - ou les modificateurs de variables. - - - - $security - - Cette variable est a faux par dTfaut. $security est de rigueur - quand vous n'Otes pas complFtement svr des personnes qui Tditent les templates - (par ftp par exemple) et que vous voulez rTduire le risque que - la sTcuritT du systFme soit compromise par le language de template. - Activer cette option de sTcuritT applique les rFgles suivantes - au langage de template, a moins que $security_settings ne spTcifie - le contraire : - - - Si $php_handling est rTglTe a SMARTY_PHP_ALLOW, - cela est implicitement changT a SMARTY_PHP_PASSTHRU. - Les fonctions PHP ne sont pas autorisTes dans les - instructions IF, a part celles dTclarTes dans - $security_settings. - Les templates ne peuvent Otre inclus que depuis - des rTpertoires listTs dans le tableau $security_dir. - Les fichiers locaux ne peuvent Otre rTcupTrTs que depuis - les rTpertoires listTs dans le tableau $security_dir en - utilisant {fetch}. - Les balises {php}{/php} ne sont pas autorisTes. - Les fonctions PHP ne sont pas autorisTes en tant - modificateurs, a part celles spTcifiTes dans $security_settings. - - - - $secure_dir - - Il s'agit d'un tableau contenant tous les rTpertoires locaux qui sont - considTrTs comme sTcurisTs. {include} et {fetch} l'utilisent quand - la sTcuritT est activTe. - - - - $security_settings - - Ces rTglages servent a Tcraser ou spTcifier les paramFtres de sTcuritT - quand celle-ci est activTe. Les rTglages possibles sont les suivants : - - - PHP_HANDLING - true/false. Si vrai, le - rTglage $php_handling n'est pas vTrifiT. - IF_FUNCS - Le tableau des noms de fonctions - PHP autorisTes dans les intructions IF. - INCLUDE_ANY - true/false. Si vrai, - les templates peuvent Otre inclus de n'importe oú, quelque soit - le contenu de $secure_dir. - PHP_TAGS - true/false. Si vrai, - les balises {php}{/php} sont autorisTes dans les templates. - MODIFIER_FUNCS - Le tableau des noms de fonctions - autorisTes a Otre utilisTes comme modificateurs de variables. - - - - $trusted_dir - - $trusted_dir n'est utilisTe lorsque $security est activTe. C'est un - tableau de tous les rTpertoires qui peuvent Otre considTrTs comme svrs. - Les rTpertoires svrs sont ceux qui contiennent des scripts PHP qui - sont exTcutTs directement depuis les templates avec - {include_php}. - - - - $left_delimiter - - Il s'agit du dTlimiteur gauche utilisT par le moteur de templates. La - valeur par dTfaut est "{". - - - - $right_delimiter - - Il s'agit du dTlimiteur droit utilisT par le moteur de templates. - La valeur par dTfaut est "}". - - - - $compiler_class - - SpTcifie le nom de la classe du compilateur qui va Otre utilisTe pour - compiler les templates. Le compilateur par dTfaut est - 'Smarty_Compiler'. RTservT aux utilisateurs avancTs. - - - - $request_vars_order - - L'ordre dans lequel les variables de requOtes sont enregistrTes, - identique a variables_order dans php.ini. - - - - $compile_id - - Identifiant persistant du compilateur. On peut passer le mOme compile_id - a chaque appel de fonction mais une alternative consiste a rTgler ce - compile_id, qui sera utilisT implicitement. - - - - $use_sub_dirs - - RTgler cela a faux si votre environnement PHP n'autorise pas Smarty a crTer - des sous-rTpertoires. Les sous-rTpertoires sont efficaces, utilisez-les quand - vous le pouvez. - - - - $default_modifiers - - Il s'agit d'un tableau de modificateurs utilisT pour assigner - une valeur par dTfaut a chaque variable dans un template. - Par exemple, pour par dTfaut Tchapper les caractFres HTML de chaque variable, - utilisez array('escape:"htmlall"'); Pour rendre une variable indTpendante - des modificateurs par dTfaut, passez-lui en paramFtre le modificateur - "nodefaults" : {$var|nodefaults}. - - - - - - MTthodes - - append - - - void append - mixed var - - - void append - string varname - mixed var - - - void append - string varname - mixed var - boolean merge - - - - UtilisTe pour ajouter un TlTment a un tableau assignT. Si vous utilisez - cette fonction avec une chaene de caractFre, elle est convertie en - tableau auquel on ajoute ensuite l'TlTment. Vous pouvez explicitement passer - des paires nom/valeur. Si vous passez le troisiFme paramFtre - (optionel) a vrai, la valeur sera fusionnTe avec le tableau plut(t que - d'Otre ajoutTe. - - - Note technique - - Le paramFtre de fusion respecte les clTs des tableaux, ainsi si vous - fusionnez deux tableaux indexTs numTriquement, ils pourront s'Tcraser - l'un l'autre ou donner des clTs qui ne se suivent pas. Cela diffFre - donc de la fonction PHP array_merge() qui supprime les clTs numTriques - et les renumTrote. - - - - append - -// passe des paires nom/valeur -$smarty->append("Name","Fred"); -$smarty->append("Address",$address); - -// passe un tableau associatif -$smarty->append(array("city" => "Lincoln","state" => "Nebraska")); - - - - append_by_ref - - - void append_by_ref - string varname - mixed var - - - void append_by_ref - string varname - mixed var - boolean merge - - - - UtilisTe pour ajouter des valeurs a un template par rTfTrence plut(t que - par copie. Si vous ajoutez une variable par rTfTrence puis changez sa - valeur, le changement est aussi rTpercutT sur la valeur assignTe. - Pour les objets, append_by_ref ne fait pas de copie en mTmoire de l'objet - assignT. Voir la documentation PHP pour plus d'informations sur les - rTfTrences de variable. - Si vous passez le troisiFme paramFtre a vrai, la valeur sera fusionnTe - avec le tableau courant plut(t que d'Otre ajoutTe. - - - Note technique - - Le paramFtre de fusion respecte les clTs des tableaux, ainsi si vous - fusionnez deux tableaux indexTs numTriquement, ils pourront s'Tcraser - l'un l'autre ou donner des clTs qui ne se suivent pas. Cela diffFre - donc de la fonction PHP array_merge() qui supprime les clTs numTriques - et les renumTrote. - - - - append_by_ref - -// ajoute des paires nom/valeur -$smarty->append_by_ref("Name",$myname); -$smarty->append_by_ref("Address",$address); - - - - assign - - - void assign - mixed var - - - void assign - string varname - mixed var - - - - UtilisTe pour assigner des valeurs aux templates. Vous pouvez - explicitement passer des paires nom/valeur, ou des tableaux - associatifs contenant des paires nom/valeur. - - - assign - -// passe des paires nom/valeur -$smarty->assign("Name","Fred"); -$smarty->assign("Address",$address); - -// passe un tableau associatif -$smarty->assign(array("city" => "Lincoln","state" => "Nebraska")); - - - - assign_by_ref - - - void assign_by_ref - string varname - mixed var - - - - UtilisTe pour assigner des valeurs aux templates par rTfTrence plut(t - que par copie. RTfTrez-vous au manuel PHP pour une explication plus prTcise - sur les rTfTrences des variables. - - - Note technique - - Si vous assignez une variable par rTfTrence puis changez sa - valeur, le changement est aussi rTpercutT sur la valeur assignTe. - Pour les objets, assign_by_ref ne fait pas de copie en mTmoire de l'objet - assignT. RTfTrez-vous au manuel PHP pour une explication plus prTcise sur - les rTfTrences de variable. - - - - assign_by_ref - -// passe des paires noms/valeurs -$smarty->assign_by_ref("Name",$myname); -$smarty->assign_by_ref("Address",$address); - - - - clear_all_assign - - - void clear_all_assign - - - - - UtilisTe pour effacer les valeurs de toutes les variables assignTes. - - -clear_all_assign - -// efface toutes les variables assignTes -$smarty->clear_all_assign(); - - - - clear_all_cache - - - void clear_all_cache - int expire time - - - - UtilisTe pour effacer les fichiers de cache des templates. Vous pouvez passer un - paramFtre optionnel afin d'indiquer l'Gge minimun que doivent avoir - les fichiers de cache pour qu'ils soient effacTs. - - -clear_all_cache - -// efface le cache -$smarty->clear_all_cache(); - - - - clear_assign - - - void clear_assign - string var - - - - Efface la valeur d'une variable assignTe. Il peut s'agir - d'une simple valeur ou d'un tableau de valeur. - - -clear_assign - -// efface une variable -$smarty->clear_assign("Name"); - -// efface plusieurs variables -$smarty->clear_assign(array("Name","Address","Zip")); - - - - clear_cache - - - void clear_cache - string template - string cache id - string compile id - int expire time - - - - UtilisTe pour nettoyer le(s) fichier(s) de cache d'un template en particulier. - Si vous avez plusieurs fichiers de cache pour ce template vous - pouvez en spTcifier un en particulier en passant son identifiant - en deuxiFme paramFtre. Vous pouvez aussi passer un identifiant - de compilation en troisiFme paramFtre. Vous pouvez grouper des - templates ensemble afin qu'ils puissent Otre supprimTs en groupe. - RTfTrez-vous a la section sur le - cache - pour plus d'informations. Vous pouvez passer un quatriFme paramFtre - pour indiquer un Gge minimum en secondes que le fichier en cache doit - avoir avant d'Otre effacT. - - -clear_cache - -// efface le fichier de cache de ce template -$smarty->clear_cache("index.tpl"); - -// efface un fichier de cache grGce a son identifiant de cache -$smarty->clear_cache("index.tpl","CACHEID"); - - - - clear_compiled_tpl - - - void clear_compiled_tpl - string tpl_file - - - - UtilisTe pour effacer la version compilTe du template spTcifiT ou - de tous les templates si aucun n'est spTcifiT. Cette fonction - est destinTe a un usage avancT et n'est pas habituellement utilisTe. - - -clear_compiled_tpl - -// efface la version compilTe du template spTcifiT -$smarty->clear_compiled_tpl("index.tpl"); - -// efface tout le contenu du rTpertoire des templates compilTs -$smarty->clear_compiled_tpl(); - - - - clear_config - - - void clear_config - string var - - - - UtilisTe pour effacer toutes les variables de configuration s'Ttant - vues assigner une valeur. Si une variable est spTcifiTe, seule cette - variable est effacTe. - - -clear_config - -// efface toutes les variables de configuration assignTes -$smarty->clear_config(); - -// efface une seule variable -$smarty->clear_config('foobar'); - - - - config_load - - - void config_load - string file - string section - - - - UtilisTe pour charger des donnTes d'un fichier de config et les - assigner a un template. Cette fonction fonctionne exactement comme - la fonction de template config_load. - - - Note technique - - Comme pour Smarty 2.4.0, les variables de templates assignTes - sont conservTes entre chaque appel a fetch et display. - Les variables de configuration chargTes avec config_load sont - globales. Les fichiers de config sont aussi compilTs pour une - exTcution plus rapide et respecte les rTglages de force_compile et de compile_check. - - - -config_load - -// charge les variables de configuration et les assigne -$smarty->config_load('my.conf'); - -// charge une section -$smarty->config_load('my.conf','foobar'); - - - - display - - - void display - string template - string cache_id - string compile_id - - - - UtilisTe pour afficher un template. Il faut fournir un type et un - chemin de ressource template - valides. Vous pouvez passer en second paramFtre un identifiant - de fichier de cache. Reportez-vous a la section - cache pour plus de renseignements. - - - Le troisiFme paramFtre optionnel est un identifiant de compilation. - Cela s'avFre utile quand vous voulez compiler diffTrentes versions - d'un mOme template, pour par exemple avoir des templates - compilTs sTparTs pour diffTrents langages. Une autre utilitT de ce - paramFtre est le cas oú vous utilisez plus d'un $template_dir mais un seul - $compile_dir, car certains templates avec le mOme nom s'Tcraseraient - entre eux. Vous pouvez aussi rTgler la variable $compile_id une seule - fois au lieu de la passer a chaque appel. - - -affichage - -include("Smarty.class.php"); -$smarty = new Smarty; -$smarty->caching = true; - -// ne fait un appel a la base de donnTes que si le fichier -// de cache n'existe pas -if(!$smarty->is_cached("index.tpl")) -{ - - // quelques donnTes - $address = "245 N 50th"; - $db_data = array( - "City" => "Lincoln", - "State" => "Nebraska", - "Zip" = > "68502" - ); - - $smarty->assign("Name","Fred"); - $smarty->assign("Address",$address); - $smarty->assign($db_data); - -} - -// display the output -$smarty->display("index.tpl"); - - - Utilisez la syntaxe des ressources templates - pour afficher des fichiers en-dehors du rTpertoire - $template_dir - - - -exemples de fonction d'affichage de ressources templates - -// chemin absolu -$smarty->display("/usr/local/include/templates/header.tpl"); - -// chemin absolu (pareil) -$smarty->display("file:/usr/local/include/templates/header.tpl"); - -// chemin absolu Windows (on DOIT utiliser le prTfixe "file:") -$smarty->display("file:C:/www/pub/templates/header.tpl"); - -// inclue a partir de la ressource template "db" -$smarty->display("db:header.tpl"); - - - - - fetch - - - string fetch - string template - string cache_id - string compile_id - - - - UtilisTe pour renvoyer le rTsultat du template plut(t que de l'afficher. - Il faut passer un type et un chemin de ressource template - valides. Vous pouvez passer un identifiant de cache en deuxiFme - paramFtre. Reportez-vous a la section cache - pour plus de renseignements. - - - Un troisiFme paramFtre optionnel est un identifiant de compilation. - Cela s'avFre utile quand vous voulez compiler diffTrentes versions - d'un mOme template, pour par exemple avoir des templates - compilTs sTparTs pour diffTrents langages. Une autre utilitT de ce - paramFtre est le cas oú vous utilisez plus d'un $template_dir - mais un seul $compile_dir, car certains templates avec le mOme nom - s'Tcraseraient entre eux. Vous pouvez aussi rTgler la variable $compile_id une seule - fois plut(t que de la passer a chaque appel. - - -fetch - -include("Smarty.class.php"); -$smarty = new Smarty; - -$smarty->caching = true; - -// ne fait un appel a la base de donnTes que si le fichier -// de cache n'existe pas -if(!$smarty->is_cached("index.tpl")) -{ - - // quelques donnTes - $address = "245 N 50th"; - $db_data = array( - "City" => "Lincoln", - "State" => "Nebraska", - "Zip" = > "68502" - ); - - $smarty->assign("Name","Fred"); - $smarty->assign("Address",$address); - $smarty->assign($db_data); - -} - -// rTcupFre le rTsultat -$output = $smarty->fetch("index.tpl"); - -// fait quelque chose avec $output - -echo $output; - - - - get_config_vars - - - array get_config_vars - string varname - - - - Retourne la valeur de la variable de configuration passTe en paramFtre. - Si aucun paramFtre n'est donnT, un tableau de toutes les variables de - configuration chargTes est renvoyT. - - -get_config_vars - -// rTcupFre la variable de configuration chargTe 'foo' -$foo = $smarty->get_config_vars('foo'); - -// rTcupFre toutes les variables de configuration chargTes -$config_vars = $smarty->get_config_vars(); - -// les affiche a l'Tcran -print_r($config_vars); - - - - get_registered_object - - - array get_registered_object - string object_name - - - - Retourne la rTfTrence d'un objet enregistrT. Utile quand vous - voulez accTder directement a un objet enregistrT avec une - fonction utilisateur. - - -get_registered_object - -function smarty_block_foo($params, &$smarty) { - if (isset[$params['object']]) { - // rTcupFre la rTfTrence de l'objet enregistrT - $obj_ref =& $smarty->get_registered_object($params['object']); - // $obj_ref est maintenant une rTfTrence vers l'objet - } -} - - - - get_template_vars - - - array get_template_vars - string varname - - - - Retourne la valeur assignTe passTe en paramFtre. Si aucun paramFtre - n'est donnT, un tableau de toutes les variables assignTes est - renvoyT. - - -get_template_vars - -// rTcupFre la variable 'foo' assignTe au template -// get assigned template var 'foo' -$foo = $smarty->get_template_vars('foo'); - -// rTcupFre toutes les variables assignTes a ce template -$tpl_vars = $smarty->get_template_vars(); - -// les affiche a l'Tcran -print_r($tpl_vars); - - - - is_cached - - - void is_cached - string template - [string cache_id] - - - - Retourne vrai s'il y a un fichier de cache valide pour ce template. - Cela fonctionne seulement si caching est a vrai. - - -is_cached - -$smarty->caching = true; - -if(!$smarty->is_cached("index.tpl")) { - // faire des requOtes base de donnTes et assigner - // des variables ici. -} - -$smarty->display("index.tpl"); - - - Vous pouvez aussi passer en second paramFtre un identifiant - de cache au cas oú vous voudriez plusieurs fichiers de cache - pour ce template. - - -is_cached with multiple-cache template - -$smarty->caching = true; - -if(!$smarty->is_cached("index.tpl","FrontPage")) { - // faire des requOtes base de donnTes et assigner - // des variables ici. -} - -$smarty->display("index.tpl","FrontPage"); - - - - load_filter - - - void load_filter - string type - string name - - - - Cette fonction peut Otre utilisTe pour charger un plugin - de filtrage. Le premier argument spTcifie le type du filtre - et peut prendre l'une des valeurs suivantes : 'pre', 'post' - ou 'output'. Le second argument spTcifie le nom du plugin - de filtrage, par exemple 'trim'. - - -Chargement de plugins de filtrage - -$smarty->load_filter('pre', 'trim'); // charge le filtre 'trim' de type 'pre' -$smarty->load_filter('pre', 'datefooter'); // charge un autre filtre de type 'pre' appelT 'datefooter' -$smarty->load_filter('output', 'compress'); // charge le filtre 'compress' de type 'output' - - - - register_block - - - void register_block - string name - string impl - - - - UtilisTe pour dTclarrer dynamiquement des plugins de fonction - de blocs. Il faut passer en paramFtre le nom de la fonction - de blocs, suivi du nom de la fonction PHP qui l'implTmente. - - -register_block - -/* PHP */ -$smarty->register_block("translate", "do_translation"); - -function do_translation ($params, $content, &$smarty) { - if ($content) { - $lang = $params['lang']; - // fait de la traduction avec la variable $content - echo $translation; - } -} - -{* template *} -{translate lang="br"} - Hello, world! -{/translate} - - - - register_compiler_function - - - void register_compiler_function - string name - string impl - - - - UtilisTe pour dTclarer dynamiquement un plugin de fonction - de compilation. Il faut passer en paramFtres le nom de la fonction - de compilation, suivi par la fonction PHP qui - l'implTmente. - - - - register_function - - - void register_function - string name - string impl - - - - UtilisTe pour dTclarer dynamiquement des plugins de fonction - de templates. Il faut passer en paramFtres le nom de la fonction - de templates, suivi par le nom de la fonction PHP qui l'implTmente. - - -register_function - -$smarty->register_function("date_now", "print_current_date"); - -function print_current_date ($params) { - extract($params); - if(empty($format)) - $format="%b %e, %Y"; - echo strftime($format,time()); -} - -// vous pouvez maintenant utiliser ceci dans Smarty pour afficher -// la date actuelle : {date_now} ou {date_now format="%Y/%m/%d"} -// pour la formater - - - - register_modifier - - - void register_modifier - string name - string impl - - - - UtilisTe pour dTclarer dynamiquement un plugin de modificateur. - Il faut passer en paramFtre le nom du modificateur de variables, - suivi de la fonction PHP qui l'implTmente. - - -register_modifier - -// associons la fonction PHP stripslashes a un modificateur Smarty. - -$smarty->register_modifier("sslash","stripslashes"); - -// vous pouvez maintenant utiliser {$var|sslash} pour supprimer les slash des variables - - - - register_object - - - void register_object - string object_name - object $object - array allowed methods/properties - boolean format - - - - UtilisTe pour enregistrer un objet a utiliser dans un template. - Reportez-vous a la section - objet de - ce manuel pour des exemples. - - - - register_outputfilter - - - void register_outputfilter - string function_name - - - - UtilisTe pour dTclarer dynamiquement des filtres de sortie, pour - agir sur la sortie d'un template avant qu'elle ne soit affichTe. - Reportez-vous a la section - filtres de sortie pour plus d'information sur le sujet. - - - - register_postfilter - - - void register_postfilter - string function_name - - - - UtilisTe pour dTclarer dynamiquement des filtres de post-compilation pour y faire - passer des templates une fois qu'ils ont TtT compilTs. Reportez-vous - a la section - filtres de post-compilation de templates - pour avoir plus de renseignements sur la faton de paramTtrer les fonctions - de post-compilation. - - - - register_prefilter - - - void register_prefilter - string function_name - - - - UtilisTe pour dTclarer dynamiquement des filtres de prT-compilation pour y faire - passer des templates avant qu'ils ne soient compilTs. Reportez-vous - a la section - filtres de prT-compilation de templates - pour avoir plus de renseignements sur la faton de paramTtrer les fonctions - de prT-compilation. - - - - register_resource - - - void register_resource - string name - array resource_funcs - - - - UtilisTe pour dTclarer dynamiquement une ressource plugin - dans Smarty. Il faut passer en paramFtre le nom de la ressource - et le tableau des fonctions PHP qui l'implTmentent. Reportez-vous - a la section ressources templates - pour avoir plus d'informations sur la faton de paramTtrer une fonction - rTcupTrant des templates. - - -register_resource - -$smarty->register_resource("db", array("db_get_template", - "db_get_timestamp", - "db_get_secure", - "db_get_trusted")); - - - - trigger_error - - - void trigger_error - string error_msg - [int level] - - - - Cette fonction peut-Otre utilisTe pour afficher un message d'erreur - en utilisant Smarty. Le paramFtre level - peut prendre l'une des valeures utilisTes par la fonction PHP - trigger_error, i.e. E_USER_NOTICE, E_USER_WARNING, etc. Par dTfaut - il s'agit de E_USER_WARNING. - - - - - template_exists - - - bool template_exists - string template - - - - Cette fonction vTrifie si le template spTcifiT existe. Elle accepte - soit un chemin vers le template, soit une ressource de type - chaene de caractFres prTcisant le nom du template. - - - - unregister_block - - - void unregister_block - string name - - - - UtilisTe pour dTsallouer dynamiquement un plugin de fonction - de blocs. Passez en paramFtre le nom du bloc. - - - - unregister_compiler_function - - - void unregister_compiler_function - string name - - - - UtilisTe pour dTsallouer dynamiquement un fonction de compilation. - Passez en paramFtre le nom de la fonction de compilation. - - - - unregister_function - - - void unregister_function - string name - - - - UtilisTe pour dTsallouer dynamiquement un plugin de fonction - de templates. Passez en paramFtres le nom de la fonction de templates. - - -unregister_function - -// nous ne voulons pas que les designers de templates aient accFs -// au systFme de fichiers. - -$smarty->unregister_function("fetch"); - - - - unregister_modifier - - - void unregister_modifier - string name - - - - UtilisTe pour dTsallouer dynamiquement un plugin modificateur de variable. - Passez en paramFtre le nom du modificateur de templates. - - -unregister_modifier - -// nous ne voulons pas que les designers de templates -// suppriment les balises des Tlements - -$smarty->unregister_modifier("strip_tags"); - - - - unregister_object - - - void unregister_object - string object_name - - - - UtilisTe pour dTsallouer un objet. - - - - unregister_outputfilter - - - void unregister_outputfilter - string function_name - - - - UtilisTe pour dTsallouer dynamiquement un filtre de sortie. - - - - unregister_postfilter - - - void unregister_postfilter - string function_name - - - - UtilisTe pour dTsallouer dynamiquement un filtre de post-compilation. - - - - unregister_prefilter - - - void unregister_prefilter - string function_name - - - - UtilisTe pour dTsallouer dynamiquement un filtre de prT-compilation. - - - - unregister_resource - - - void unregister_resource - string name - - - - UtilisTe pour dTsallouer dynamiquement un plugin ressource. - Passez en paramFtre le nom de la ressource. - - -unregister_resource - -$smarty->unregister_resource("db"); - - - - - - Cache - - Le cache est utilisTe pour accTlTrer l'appel de display() ou de fetch() en sauvegardant leur rTsultat - dans un fichier. Si un fichier de cache est disponible lors d'un appel, - il sera affichT sans qu'il ne soit nTcessaire de regTnTrer le rTsultat. - Le systFme de cache - peut accTlTrer les traitements de faton impressionnante, en particulier les - templates dont la compilation est trFs longue. Comme le rTsultat de - display() ou de fetch() est dans le cache, un fichier de cache peut - Otre composT de plusieurs fichiers de templates, plusieurs fichiers - de configuration, etc. - - - Comme les templates sont dynamiques, il est important de faire attention - a la faton dont les fichiers de cache sont gTnTrTs, et pour combien de temps. - Si par exemple vous affichez la page d'accueil de votre site Web dont le - contenu ne change pas souvent, il peut Otre intTressant de mettre cette page - dans le cache pour une heure ou plus. A l'inverse, si vous affichez une page - de mTtTo mises a jour toutes les minutes, mettre cette page en cache - n'a aucun sens. - - - ParamTtrer le cache - - La premiFre chose a faire est d'activer le cache. Cela est fait en - mettant $caching = true - (ou 1). - - - activation du cache - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -$smarty->display('index.tpl'); - - - Avec le cache activT, la fonction display('index.tpl') va afficher - le template mais sauvegardera par la mOme occasion une copie du rTsultat - dans un fichier (de cache) du rTpertoire - $cache_dir. Au prochain appel de - display('index.tpl'), le fichier de cache sera prTfTrT a la rTutilisation - du template. - - - Note technique - - Les fichiers situTs dans $cache_dir sont nommTs de la mOme faton que les templates. - Bien qu'ils aient une extension ".php", ils ne sont pas vraiment exTcutable. - N'Tditez surtout pas ces fichiers ! - - - - Tout fichier de cache a une durTe de vie limitTe dTterminTe par $cache_lifetime. La valeur par - dTfaut est 3600 secondes, i.e. 1 heure. Une fois que cette durTe est - dTpassTe, le cache est regTnTrT. Il est possible de donner - une durTe d'expiration propre a chaque fichier de cache en rTglant - $caching = 2. - Se reporter a la documentation de $cache_lifetime pour plus de - dTtails. - - - rTglage individuel de cache_lifetime - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = 2; // rTgler la durTe de vie individuellement - -// rTgle la durTe de vie du cache a 15 minutes pour index.tpl -$smarty->cache_lifetime = 300; -$smarty->display('index.tpl'); - -// rTgle la durTe de vie du cache a 1 heure pour home.tpl -$smarty->cache_lifetime = 3600; -$smarty->display('home.tpl'); - -// NOTE : le rTglage suivant ne fonctionne pas quand $caching = 2. La durTe de vie -// du fichier de cache de home.tpl a dTja TtT rTglTe a 1 heure et ne respectera -// plus la valeur de $cache_lifetime. Le cache de home.tpl expirera toujours -// dans 1 heure. -$smarty->cache_lifetime = 30; // 30 secondes -$smarty->display('home.tpl'); - - - Si $compile_check est actif, - chaque fichier de template et de configuration qui a un rapport - avec le fichier de cache sera vTrifiT pour dTtecter une Tventuelle - modification. Si l'un de ces fichiers a TtT modifiT depuis que le fichier de cache a TtT - gTnTrT, le cache est immTdiatement regTnTrT. Ce processus est covteux, donc, - pour des raisons de performances, mettez ce paramFtre a false pour une application - en production. - - - activation de $compile_check - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; -$smarty->compile_check = true; - -$smarty->display('index.tpl'); - - - Si $force_compile est actif, - les fichiers de cache sont toujours regTnTrTs. Ceci revient finalement a - dTsactiver le cache. $force_compile est utilisT a des fins de dTbogage, - un moyen plus efficace de dTsactiver le cache est de rTgler - $caching = false (ou 0). - - - La fonction is_cached() permet - de tester si un template a ou non un fichier de cache valide. - Si vous disposez d'un template en cache qui requiert une requOte - a une base de donnTes, vous pouvez utiliser cette mTthode plut(t - que $compile_check. - - - utilisation de is_cached() - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -if(!$smarty->is_cached('index.tpl')) { - // pas de cache disponible, on assigne - $contents = get_database_contents(); - $smarty->assign($contents); -} - -$smarty->display('index.tpl'); - - - Vous pouvez rendre dynamiques seulement certaines parties d'une - page avec la fonction de templates insert. - Imaginons que toute une page doit Otre mise en cache a part - une banniFre en bas a droite. En utilisant une fonction insert pour la - banniFre, vous pouvez garder cet TlTment dynamique dans le contenu qui - est en cache. Reportez-vous a la documentation - insert pour plus de dTtails - et des exemples. - - - Vous pouvez effacer tous les fichiers du cache avec la fonction clear_all_cache(), ou de faton - individuelle (ou par groupe) avec la fonction clear_cache(). - - - nettoyage du cache - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -// efface tous les fichiers du cache -$smarty->clear_all_cache(); - -// efface le fichier de cache du template 'index.tpl' -$smarty->clear_cache('index.tpl'); - -$smarty->display('index.tpl'); - - - - Caches multiples pour une seule page - - Vous pouvez avoir plusieurs fichiers de caches pour un mOme appel - aux fonctions display() ou fetch(). Imaginons qu'un appel a display('index.tpl') - puisse avoir plusieurs rTsultats, en fonction de certaines conditions, et que - vous vouliez des fichiers de cache sTparTs pour chacun d'eux. Vous - pouvez faire cela en passant un identifiant de cache (cache_id) en - deuxiFme paramFtre a l'appel de fonction. - - - Passage d'un cache_id a display() - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -$my_cache_id = $_GET['article_id']; - -$smarty->display('index.tpl',$my_cache_id); - - - Nous passons ci-dessus la variable $my_cache_id a display() comme - identifiant de cache. Pour chaque valeur distincte de $my_cache_id, - un fichier de cache distinct va Otre crTT. Dans cet exemple, - "article_id" a TtT passT dans l'URL et est utilisT en tant qu'identifiant - de cache. - - - Note technique - - Soyez prudent en passant des valeurs depuis un client (navigateur Web) - vers Smarty (ou vers n'importe quelle application PHP). Bien que l'exemple - ci-dessus consistant a utiliser article_id depuis l'URL puisse paraetre - commode, le rTsultat peut s'avTrer mauvais. L'identifiant - de cache est utilisT pour crTer un rTpertoire sur le systFme de fichiers, - donc si l'utilisateur dTcide de donner une trFs grande valeur a article_id - ou d'Tcrire un script qui envoie des article_id de faton alTatoire, - cela pourra causer des problFmes cotT serveur. Assurez-vous de bien - tester toute donnTe passTe en paramFtre avant de l'utiliser. Dans cet - exemple, peut-Otre savez-vous que article_id a une longueur de 10 - caractFres, est exclusivement composT de caractFres alph-numTriques et - doit avoir une valeur contenue dans la base de donnTes. VTrifiez-le bien ! - - - - Assurez-vous de bien passer le mOme identifiant aux fonctions - is_cached() et - clear_cache(). - - - passer un cache_id a is_cached() - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -$my_cache_id = $_GET['article_id']; - -if(!$smarty->is_cached('index.tpl',$my_cache_id)) { - // pas de fichier de cache dispo, on assigne donc les variables - $contents = get_database_contents(); - $smarty->assign($contents); -} - -$smarty->display('index.tpl',$my_cache_id); - - - Vous pouvez effacer tous les fichiers de cache pour un identifiant - de cache particulier en passant null en tant que premier paramFtre - a clear_cache(). - - - effacement de tous les fichiers de cache pour un identifiant de cache particulier - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -// efface tous les fichiers de cache avec "sports" comme identifiant -$smarty->clear_cache(null,"sports"); - -$smarty->display('index.tpl',"sports"); - - - De cette maniFre vous pouvez "grouper" vos fichiers de cache en leur - donnant le mOme identifiant. - - - - groupes de fichiers de cache - - Vous pouvez faire des groupements plus TlaborTs en paramTtrant les - groupes d'identifiant de cache. Il suffit de sTparer chaque sous-groupes - avec une barre verticale "|" dans la valeur de l'identifiant de cache. - Vous pouvez faire autant de sous-groupes que vous le dTsirez. - - - groupes d'identifiants de cache - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -// efface tous les fichiers de cache avec "sports|basketball" comme premiers -// groupes d'identifiants de cache -$smarty->clear_cache(null,"sports|basketball"); - -// efface tous les fichiers de cache "sports" comme premier groupe d'identifiants. -// Inclue donc "sports|basketball" ou "sports|nimportequoi|nimportequoi|..." -$smarty->clear_cache(null,"sports"); - -$smarty->display('index.tpl',"sports|basketball"); - - - Note technique - - Le systFme de cache n'utilise PAS le chemin vers le template en quoi - que ce soit pour l'identifiant de cache. Si par exemple vous - faites display('themes/blue/index.tpl'), vous ne pouvez pas effacer tous - les fichiers de cache dans le rTpertoire "theme/blue". Si vous voulez - faire cela, vous devez les grouper avec un mOme identifiant de cache, - display('themes/blue/index.tpl','themes|blue'). Vous pouvez ensuite effacer les - fichiers de cache pour blue et theme avec clear_cache(null,'theme|blue'). - - - - - - - FonctionnalitTs avancTes - - Objets - - Smarty donne l'accFs aux objets PHP a travers les templates. Il y - a 2 moyens d'y avoir accFs. Le premier consiste a allouer les objets - au template puis de les utiliser avec une syntaxe similaire a celles - des fonctions personnalisTes. Le deuxiFme moyen consiste a allouer - des objets aux templates et de les utiliser comme n'importe quelle - variable. La premiFre mTthode a une syntaxe beaucoup plus sympathique. - Elle est aussi plus sTcurisTe, puisqu'un objet allouT ne peut avoir accFs - qu'a certaines mTthodes et propriTtTs. NTanmoins, un objet allouT - ne peut pas avoir de lien sur lui-mOme ou Otre mis dans un tableau - d'objet, etc. Vous devez choisir la mTthode qui correspond a vos - besoins, mais tGchez d'utiliser la premiFre mTthode autant que possible - afin de rTduire la syntaxe des templates au minimum. - - - Si l'option de sTcuritT est activTe, aucune mTthode ou fonctions privTes - n'est accessible (commentant par "_"). S'il existe une mTthode et une - propriTtT du mOme nom, c'est la mTthode qui sera utilisTe. - - - Vous pouvez restreindre l'accFs aux mTthodes et aux propriTtTs en - les listant dans un tableau en tant que troisiFme paramFtre - d'allocation. - - - Par dTfaut, les paramFtres passTs aux objets depuis le templates le sont de la - mOme faton que les fonctions utilisateurs les rTcupFrent. - Le premier paramFtre correspond a un tableau associatif, le second a l'objet - Smarty. Si vous souhaitez que les paramFtres soient passTes un a un, comme - dans un appel traditionnel, dTfinissez registration, quatriFme paramFtre optionnel, - a false. - - - utilisation d'un objet allouT ou assignT - -<?php -// la classe - -class My_Object() { - function meth1($params, &$smarty_obj) { - return "this is my meth1"; - } -} - -$myobj = new My_Object; -// enregistre l'objet -$smarty->register_object("foobar",$myobj); -// on restreint l'accFs a certaines mTthodes et propriTtTs en les listant -$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1')); -// pour utiliser le format habituel de paramFtre objet, passez le boolTen = false -$smarty->register_object("foobar",$myobj,null,false); - -// on peut aussi assigner des objets. Assignez par rTfTrence quand c'est possible -$smarty->assign_by_ref("myobj", $myobj); - -$smarty->display("index.tpl"); -?> - -TEMPLATE: - -{* accFs a notre objet enregistrT *} -{foobar->meth1 p1="foo" p2=$bar} - -{* on peut aussi assigner la sortie *} -{foobar->meth1 p1="foo" p2=$bar assign="output"} -the output was {$output) - -{* access our assigned object *} -{$myobj->meth1("foo",$bar)} - - - - Filtres de prT-compilation - - Les filtres de prT-compilation sont des fonctions PHP que vos templates - exTcutent avant qu'ils ne soient compilTs. Cela peut Otre utile - pour prT-traiter vos templates afin d'enlever les commentaires - inutiles, garder un oeil sur ce que les gens mettent dans leurs templates, etc. - Les filtre de prT-compilations peuvent Otre soit - dTclarTs soit chargTs - a partir des rTpertoires de plugins en utilisant la fonction - load_filter() ou en rTglant - la variable - $autoload_filters. - Smarty passera a la fonction le code source en tant que premier argument, - et attendra en retour le code modifiT. - - - Utilisation un filtre de prT-compilation de template - -<?php -// mettre ceci dans votre application -function remove_dw_comments($tpl_source, &$smarty) -{ - return preg_replace("/<!--#.*-->/U","",$tpl_source); -} - -// enregistrer le filtre de prT-compilation -$smarty->register_prefilter("remove_dw_comments"); -$smarty->display("index.tpl"); -?> - -{* template Smarty index.tpl *} -<!--# cette ligne va Otre supprimTe par le filtre de prT-compilation --> - - - - - Filtres de post-compilation - - Les filtres de post-compilation sont des fonctions PHP que vos templates - exTcutent aprFs avoir TtT compilTs. Les filtres de post-compilation peuvent - Otre soit dTclarTs soit chargTs - depuis les rTpertoires des plugins en utilisant la fonction - load_filter() ou en rTglant - la variable $autoload_filters. - Smarty passera le template compilT en tant que premier paramFtre et attendra - de la fonction qu'elle retourne le rTsultat de l'exTcution. - - - utilisation d'un filtre de post-compilation de templates - -<?php -// mettez cela dans votre application -function add_header_comment($tpl_source, &$smarty) -{ - return "<?php echo \"<!-- Created by Smarty! -->\n\" ?>\n".$tpl_source; -} - -// enregistre le filtre de post-compilation -$smarty->register_postfilter("add_header_comment"); -$smarty->display("index.tpl"); -?> - -{* template Smarty compilT index.tpl *} -<!-- Created by Smarty! --> -{* reste du contenu du template... *} - - - - - Filtres de sortie - - Quand le template est appelT via les fonctions display() ou fetch(), - sa sortie est envoyTe a travers un ou plusieurs filtres de sorties. - Ils diffFrent des filtres de post-compilation dans le sens ou ils agissent - sur la sortie des templates, une fois exTcutTs, et non sur les sources - des templates. - - - Les filtres de sortie peuvent Otre soit - dTclarTs soit - chargTs depuis les rTpertoires des plugins en utilisant la fonction - load_filter() - ou en rTglant la variable - $autoload_filters. - Smarty passera la sortie du template en premier argument et attendra - de la fonction qu'elle retourne le rTsultat de l'exTcution. - - - utilisation d'un filtre de sortie - -<?php -// mettez ceci dans votre application -function protect_email($tpl_output, &$smarty) -{ - $tpl_output = - preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!', - '$1%40$2', $tpl_output); - return $tpl_output; -} - -// enregistre le filtre de sortie -$smarty->register_outputfilter("protect_email"); -$smarty->display("index.tpl"); - -// dorTnavant toute occurence d'un adresse email dans le rTsultat du template -// aura un protection simple contre les robots spammers -?> - - - - - Fonction de gestion du cache - - Une alternative au mTcanisme de cache par dTfaut (basT sur des fichiers - de cache) consiste a spTcifier une fonction de gestion de cache utilisateur - qui sera utilisTe pour lire, Tcrire et effacer les fichiers de cache. - - - Il suffit de crTer dans votre application une fonction que Smarty - utilisera pour la gestion du cache et d'assigner le nom de cette - fonction a la variable de classe - $cache_handler_func. - Smarty utilisera alors cette fonction pour gTrer les donnTes du cache. - Le premier argument est l'action, qui sera 'read', 'write' ou 'clear'. - Le second paramFtre est l'objet Smarty. Le troisiFme est le contenu - du cache. Pour Tcrire, Smarty passe le contenu du cache dans ces paramFtres. - Pour lire, Smarty s'attend a ce que votre fonction accepte ce paramFtre - par rTfTrence et que vous le remplissiez avec les donnTes du cache. Pour effacer, - il suffit de passer une variable fictive car cette derniFre n'est pas utilisTe. - Le quatriFme paramFtre est le nom du fichier de template (utile pour - lire/Tcrire), le cinquiFme paramFtre est l'identifiant de cache (optionnel) - et le sixiFme est l'identifiant de compilation. - - - exemple d'utilisation de MySQL pour la source du cache - -<?php -/* - -exemple d'usage : - -include('Smarty.class.php'); -include('mysql_cache_handler.php'); - -$smarty = new Smarty; -$smarty->cache_handler_func = 'mysql_cache_handler'; - -$smarty->display('index.tpl'); - - -la base mysql est attendu dans ce format : - -create database SMARTY_CACHE; - -create table CACHE_PAGES( -CacheID char(32) PRIMARY KEY, -CacheContents MEDIUMTEXT NOT NULL -); - -*/ - -function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null) -{ - // l'h(te de la bd, l'utilisateur, et le mot de passe - $db_host = 'localhost'; - $db_user = 'myuser'; - $db_pass = 'mypass'; - $db_name = 'SMARTY_CACHE'; - $use_gzip = false; - - // crTe un identifiant de cache unique - $CacheID = md5($tpl_file.$cache_id.$compile_id); - - if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) { - $smarty_obj->_trigger_error_msg("cache_handler: could not connect to database"); - return false; - } - mysql_select_db($db_name); - - switch ($action) { - case 'read': - // rTcupFre le cache dans la base de donnTes - $results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'"); - if(!$results) { - $smarty_obj->_trigger_error_msg("cache_handler: query failed."); - } - $row = mysql_fetch_array($results,MYSQL_ASSOC); - - if($use_gzip && function_exists("gzuncompress")) { - $cache_contents = gzuncompress($row["CacheContents"]); - } else { - $cache_contents = $row["CacheContents"]; - } - $return = $results; - break; - case 'write': - // sauvegarde le cache dans la base de donnTes - - if($use_gzip && function_exists("gzcompress")) { - // compresse le contenu pour gagner de la place - $contents = gzcompress($cache_content); - } else { - $contents = $cache_content; - } - $results = mysql_query("replace into CACHE_PAGES values( - '$CacheID', - '".addslashes($contents)."') - "); - if(!$results) { - $smarty_obj->_trigger_error_msg("cache_handler: query failed."); - } - $return = $results; - break; - case 'clear': - // efface les donnTes du cache - if(empty($cache_id) && empty($compile_id) && empty($tpl_file)) { - // les efface toutes - $results = mysql_query("delete from CACHE_PAGES"); - } else { - $results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'"); - } - if(!$results) { - $smarty_obj->_trigger_error_msg("cache_handler: query failed."); - } - $return = $results; - break; - default: - // erreur, action inconnue - $smarty_obj->_trigger_error_msg("cache_handler: unknown action \"$action\""); - $return = false; - break; - } - mysql_close($link); - return $return; - -} - -?> - - - - - Ressources - - Les templates peuvent provenir d'une grande variTtT de ressources. Quand vous - affichez ou rTcupTrez un template, ou quand vous incluez un template - dans un autre template, vous fournissez un type de ressource, suivi - par le chemin appropriT et le nom du template. - - - Templates depuis $template_dir - - Les templates du rTpertoire $template_dir n'ont pas - besoin d'une ressource template, bien que vous puissiez utiliser - la ressource "file" pour Otre cohTrent. Vous n'avez qu'a fournir - le chemin vers le template que vous voulez utiliser, relatif - au rTpertoire racine $template_dir. - - - Utilisation de templates depuis $template_dir - -// le script PHP -$smarty->display("index.tpl"); -$smarty->display("admin/menu.tpl"); -$smarty->display("file:admin/menu.tpl"); // le mOme que celui ci-dessus - -{* le template Smarty *} -{include file="index.tpl"} -{include file="file:index.tpl"} {* le mOme que celui ci-dessus *} - - - - Templates a partir de n'importe quel rTpertoire - - Les templates en-dehors du rTpertoire $template_dir nTcessitent - le type de ressource template, suivi du chemin absolu et du nom du - template. - - - utilisation d'un template depuis n'importe quel rTpertoire - -// le script PHP -$smarty->display("file:/export/templates/index.tpl"); -$smarty->display("file:/path/to/my/templates/menu.tpl"); - -{* le template Smarty *} -{include file="file:/usr/local/share/templates/navigation.tpl"} - - - - Chemin de fichiers Windows - - Si vous utilisez Windows, les chemins de fichiers sont la plupart - du temps sur un disque identifiT par une lettre (c:) au dTbut du chemin. - Assurez-vous de bien mettre "file:" dans le chemin pour Tviter des - conflits d'espace de nommage et obtenir les rTsultats escomptTs. - - - utilisation de templates avec des chemins de fichiers Windows - -// le script PHP -$smarty->display("file:C:/export/templates/index.tpl"); -$smarty->display("file:F:/path/to/my/templates/menu.tpl"); - -{* le template Smarty *} -{include file="file:D:/usr/local/share/templates/navigation.tpl"} - - - - - - Templates depuis d'autres sources - - Vous pouvez rTcupTrer les templates a partir n'importe quelle - source a laquelle vous avez accFs avec PHP : base de donnTes, - sockets, LDAP et ainsi de suite. Il suffit d'Tcrire les fonctions - de ressource plugins et de les enregistrer auprFs de Smarty. - - - Reportez-vous a la section ressource plugins - pour plus d'informations sur les fonctions que vous Otes censT fournir. - - - - Notez que vous ne pouvez pas Tcraser la ressource file native, - toutefois, vous pouvez fournir une ressource qui rTcupFre un template depuis - le systFme de fichier par un autre moyen en l'enregistrant sous un autre - nom de ressource. - - - - utilisation de ressources utilisateurs - -// le script PHP - -// mettez ces fonctions quelque part dans votre application -function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj) -{ - // requOte BD pour rTcupTrer le template - // et remplir $tpl_source - $sql = new SQL; - $sql->query("select tpl_source - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_source = $sql->record['tpl_source']; - return true; - } else { - return false; - } -} - -function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj) -{ - // requOte BD pour remplir $tpl_timestamp - $sql = new SQL; - $sql->query("select tpl_timestamp - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_timestamp = $sql->record['tpl_timestamp']; - return true; - } else { - return false; - } -} - -function db_get_secure($tpl_name, &$smarty_obj) -{ - // on suppose que tous les templates sont svrs - return true; -} - -function db_get_trusted($tpl_name, &$smarty_obj) -{ - // pas utilisTe pour les templates dans notre cas -} - -// enregistre le nom de ressource "db" -$smarty->register_resource("db", array("db_get_template", - "db_get_timestamp", - "db_get_secure", - "db_get_trusted")); - -// utilise la ressource depuis le script PHP -$smarty->display("db:index.tpl"); - -{* utilise la ressource depuis le template Smarty *} -{include file="db:/extras/navigation.tpl"} - - - - - Fonction de gestion de template par dTfaut - - Vous pouvez spTcifier une fonction qui sera utilisTe pour - rTcupTrer le contenu d'un template dans le cas oú le template - ne peut pas Otre rTcupTrT depuis sa ressource. Une utilisation possible est - la crTation de templates a la volTe. - - - utilisation de la fonction de gestion de template par dTfaut - -<?php -// mettez cette fonction quelque part dans votre application - -function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj) -{ - if( $resource_type == 'file' ) { - if ( ! is_readable ( $resource_name )) { - // crTe le fichier de template et renvoie le contenu - $template_source = "This is a new template."; - $template_timestamp = time(); - $smarty_obj->_write_file($resource_name,$template_source); - return true; - } - } else { - // pas un fichier - return false; - } -} - -// rTgle la fonction par dTfaut -$smarty->default_template_handler_func = 'make_template'; -?> - - - - - - - Etendre Smarty avec des plugins - - La version 2.0 a introduit l'architecture de plugin qui est - utilisTe pour pratiquement toute les fonctionnalitTs - personnalisables de Smarty. Ceci comprend : - - les fonctions - les modificateurs - les fonctions de blocs - les fonctions de compilation - les filtres de prT-compilation - les filtres de post-compilation - les filtres de sorties - les ressources - les insertions - - A part pour les ressources, la compatibilitT avec les anciennes - fatons d'enregistrer les fonctions de gestion avec l'API register_ - est conservTe. Si vous n'avez pas utilisT cette API et que vous avez - a la place directement modifiT les variables de classes - $custom_funcs, $custom_mods et - d'autres, vous devez alors modifier vos scripts pour utiliser - l'API ou convertir vos fonctionnalitTs personnalisTes en plugins. - - - - Comment fonctionnent les plugins - - Les plugins sont toujours chargTs a la demande. Seuls les modificateurs - de variables, les ressources, etc invoquTs dans les scripts de templates - seront chargTs. De plus, chaque plugin n'est chargT qu'une fois, et ce - mOme si vous avez plusieurs instances de Smarty qui tournent dans - la mOme requOte. - - - Les filtres de post/prT-compilation et les filtres de sortie sont des cas - un peu spTciaux. - Comme ils ne sont pas mentionnTs dans les templates, ils doivent Otre dTclarTs - ou chargTs explicitement via les fonctions de l'API avant que le template - ne soit exTcutT. L'ordre dans lequel les filtres multiples d'un mOme type - sont exTcutTs dTpend de l'ordre dans lequel ils sont enregistrTs ou chargTs. - - - Il n'existe qu'un seul rTpertoire de plugin (pour des raisons de performances). - Pour installer un plugin, copiez-le simplement dans le rTpertoire et Smarty - l'utilisera automatiquement. - - - - - Conventions de nommage - - Les fichiers et les fonctions de plugins doivent suivre une convention - de nommage trFs spTcifique pour Otre localisTs par Smarty. - - - Les fichiers de plugins doivent Otre nommTs de la faton suivante : -
- - - type.nom.php - - -
-
- - Oú type est l'une des valeurs suivantes : - - function - modifier - block - compiler - prefilter - postfilter - outputfilter - resource - insert - - - - Et nom doit Otre un identifiant valide (lettres, nombres - et underscore seulement). - - - Quelques exemples : function.html_select_date.php, - resource.db.php, - modifier.spacify.php. - - - Les fonctions de plugins dans les fichiers de plugins doivent Otre - nommTes de la faton suivante : -
- - smarty_type_nom - -
-
- - Les significations de type et de nom sont les mOmes - que prTcTdemment. - - - Smarty donnera des messages d'erreur appropriT si le fichier de plugin - n'est pas trouvT, ou si le fichier ou la fonction de plugin ne sont - pas nommTs correctement. - -
- - - Ecrire des plugins - - Les plugins peuvent Otre soit chargTs automatiquement par Smarty - depuis le systFme de fichier, soit Otre dTclarTs - pendant l'exTcution via une fonction register_* de l'API. Ils peuvent - aussi Otre dTsallouTs en utilisant une fonction unregister_* de - l'API. - - - Pour les plugins qui ne sont pas enregistrTs pendant l'exTcution, le nom - des fonctions n'ont pas a suivre la convention de nommage. - - - Si certaines fonctionnalitTs d'un plugin dTpendent d'un autre plugin - (comme c'est le cas de certains plugins accompagnant Smarty), alors la maniFre appropriTe - de charger le plugin est la suivante : - - - -require_once SMARTY_DIR . 'plugins/function.html_options.php'; - - Une rFgle gTnTrale est que chaque objet Smarty est toujours passT au plugin - en tant que dernier paramFtre (a part pour les modificateurs). - - - - Les fonctions de templates - - - void smarty_function_name - array $params - object &$smarty - - - - Tous les attributs passTs aux fonctions de template a partir du template - sont contenus dans le tableau associatif $params. - Vous pouvez accTder a ces valeurs soit directement, par exemple - $params['start'], soit en utilisant - extract($params) pour les importer dans la table - des symboles. - - - Le retour de la fonction sera substituTe a la balise de fonction - du template (fonction fetch par exemple). Sinon, - la fonction peut simplement accomplir une autre tGche sans sortie - (la fonction assign par exemple) - - - Si la fonction a besoin d'assigner des variables aux templates ou d'utiliser - d'autres fonctionnalitTs fournies par Smarty, elle peut recevoir un - objet $smarty pour cela. - - - RTfTrez-vous aussi a : - register_function(), - unregister_function(). - - - - fonction de plugin avec sortie - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : function.eightball.php - * Type : fonction - * Nom : eightball - * R(le : renvoie une phrase magique au hasard - * ------------------------------------------------------------- - */ -function smarty_function_eightball($params, &$smarty) -{ - $answers = array('Yes', - 'No', - 'No way', - 'Outlook not so good', - 'Ask again soon', - 'Maybe in your reality'); - - $result = array_rand($answers); - return $answers[$result]; -} -?> - - - - peut Otre utilisTe dans le template de la faton suivante : - - -Question: Will we ever have time travel? -Answer: {eightball}. - - - fonction de plugin sans sortie - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : function.assign.php - * Type : fonction - * Nom : assign - * Purpose : assigne une valeur a une variable de template - * ------------------------------------------------------------- - */ -function smarty_function_assign($params, &$smarty) -{ - extract($params); - - if (empty($var)) { - $smarty->trigger_error("assign: missing 'var' parameter"); - return; - } - - if (!in_array('value', array_keys($params))) { - $smarty->trigger_error("assign: missing 'value' parameter"); - return; - } - - $smarty->assign($var, $value); -} -?> - - - - - Modificateurs - - Les modificateurs sont des petites fonctions appliquTes a une variable - de template avant qu'elle ne soit affichTe ou utilisTe dans un autre contexte. - Les modificateurs peuvent Otre chaenTs entre eux. - - - - mixed smarty_modifier_name - mixed $value - [mixed $param1, ...] - - - - Le premier paramFtre passT au modificateur est la valeur - sur laquelle le modificateur est supposT opTrer. Les autres paramFtres - peuvent Otre optionnels, dTpendant de quel genre d'opTration doit Otre - effectuT. - - - Le modificateur doit retourner le rTsultat de son exTcution. - - - Regardez aussi - register_modifier(), - unregister_modifier(). - - - plugin modificateur simple - - Ce plugin est un alias d'une fonction PHP. Il n'a aucun paramFtre - supplTmentaires. - - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : modifier.capitalize.php - * Type : modificateur - * Name : capitalize - * R(le : met une majuscule aux mots d'une phrase - * ------------------------------------------------------------- - */ -function smarty_modifier_capitalize($string) -{ - return ucwords($string); -} -?> - - - - un plugin modificateur un peu plus complexe - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : modifier.truncate.php - * Type : modificateur - * Name : truncate - * R(le : Tronque une chaene a une certaine longueur si - * nTcessaire, la coupe optionnellement au milieu - * d'un mot et ajoute la chaene $etc - * ------------------------------------------------------------- - */ -function smarty_modifier_truncate($string, $length = 80, $etc = '...', - $break_words = false) -{ - if ($length == 0) - return ''; - - if (strlen($string) > $length) { - $length -= strlen($etc); - $fragment = substr($string, 0, $length+1); - if ($break_words) - $fragment = substr($fragment, 0, -1); - else - $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment); - return $fragment.$etc; - } else - return $string; -} -?> - - - - Fonctions de blocs - - - void smarty_block_name - array $params - mixed $content - object &$smarty - - - - Les fonctions de blocs sont des fonctions de la forme {func} .. {/func}. - En d'autres mots, elles englobent des blocs de template et opFrent sur les - contenus de ces blocs. Les fonctions de blocs ont la prioritT sur les - fonctions utilisateurs de mOme nom, ce qui signifie que vous ne - pouvez avoir une fonction utilisateur {func} et une fonction de bloc - {func} .. {/func}. - - - L'implTmentation de votre fonction est appelTe deux fois par Smarty : - une fois pour la balise ouvrante et une autre fois pour la balise - fermante. - - - Seule la balise ouvrante d'une fonction de bloc peut avoir des attributs. - Tous les attributs passTs par le template aux fonctions de templates sont - contenues dans le tableau associatif $params. - Vous pouvez accTder a ces valeurs soit directement, par exemple - $params['start'], soit en utilisant - extract($params) pour les importer dans la table - des symboles. Votre fonction a aussi accFs aux attributs de la balise - ouvrante quand c'est la balise fermante qui est exTcutTe. - - - La valeur de la variable $content est diffTrente - selon si votre fonction est appelTe pour la balise ouvrante ou la - balise fermante. Si c'est pour la balise ouvrante, elle sera a - null et si c'est la balise fermante elle sera - Tgale au contenu du bloc de template. Notez que le bloc de template - aura dTja TtT exTcutT par Smarty, vous recevrez donc la sortie du - template et non sa source. - - - Si vous imbriquT des fonctions de bloc, il est possible de connaetre - la fonction de bloc parente grGce a la variable $smarty->_tag_stack. - Faites un var_dump() dessus et la structure devrait apparaetre. - - - Regardez aussi : - register_block(), - unregister_block(). - - - fonction de bloc - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : block.translate.php - * Type : bloc - * Nom : translate - * R(le : traduire un bloc de texte - * ------------------------------------------------------------- - */ -function smarty_block_translate($params, $content, &$smarty) -{ - if ($content) { - $lang = $params['lang']; - // fait une traduction de $content - echo $translation; - } -} - - - - Fonctions de compilation - - Les fonctions de compilation sont appelTes durant la compilation du template. - Elles sont utiles pour injecter du code PHP ou du contenu "statique variant - avec le temps" (bandeau de pub par ex.). Si une fonction de compilation et - une fonction personnalisTe ont le mOme - nom, la fonction de compilation a prioritT. - - - - mixed smarty_compiler_name - string $tag_arg - object &$smarty - - - - Les fonctions de compilation ont deux paramFtres : une chaene contenant - la balise - en gros, tout, depuis le nom de la fonction jusqu'au dTlimiteur de fin - et - l'objet Smarty. Elles sont censTes retourner le code PHP qui doit Otre - injectT dans le template compilT. - - - Regardez aussi - register_compiler_function(), - unregister_compiler_function(). - - - fonction de compilation simple - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : compiler.tplheader.php - * Type : compilation - * Nom : tplheader - * R(le : Renvoie l'en-tOte contenant le nom du fichier - * source et le temps de compilation. - * ------------------------------------------------------------- - */ -function smarty_compiler_tplheader($tag_arg, &$smarty) -{ - return "\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';"; -} -?> - - Cette fonction peut-Otre appelT depuis le template comme suivant : - - -{* cette fonction n'est executTe que lors de la compilation *} -{tplheader} - - Le code PHP rTsultant dans les templates compilTs ressemblerait a ta : - - -<php -echo 'index.tpl compiled at 2002-02-20 20:02'; -?> - - - - - filtres de prT-compilation/filtres de post-compilation - - Les filtres de prT-compilation et les filtres de post-compilation ont des concepts trFs - proches. Ils diffTrent dans leur exTcution, plus prTcisTment dans le - moment oú ils sont exTcutTs. - - - - string smarty_prefilter_name - string $source - object &$smarty - - - - Les filtres de prT-compilation sont utilisTs pour transformer la source d'un template - juste avant la compilation. Le premier paramFtre passT a la fonction - de filtre de prT-compilation est la source du template, Tventuellement modifiTe par - d'autres filtre de prT-compilations. Le plugin est supposT retourner la source modifiTe. - Notez que cette source n'est sauvegardTe nulle part, elle est seulement - utilisT pour la compilation. - - - - string smarty_postfilter_name - string $compiled - object &$smarty - - - - Les filtres de post-compilation sont utilisTs pour modifier la sortie du template - (le code PHP) juste aprFs que la compilation a TtT faite mais juste - avant que le template ne soit sauvegardT sur le systFme de fichiers. - Le premier paramFtre passT a la fonction de filtre de post-compilation est le code - du template compilT, Tventuellement dTja modifiT par d'autres filtre de post-compilations. - Le plugin est censT retourner la version modifiT du code. - - - plugin de filtre de post-compilation - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : prefilter.pre01.php - * Type : filtre de prT-compilation - * Nom : pre01 - * R(le : Passe les balises HTML en minuscules. - * ------------------------------------------------------------- - */ - function smarty_prefilter_pre01($source, &$smarty) - { - return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source); - } -?> - - - - plugin de filtre de post-compilation - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : postfilter.post01.php - * Type: filtre de post-compilation - * Nom : post01 - * R(le : Renvoie du code qui liste toutes les variables - * du template. - * ------------------------------------------------------------- - */ - function smarty_postfilter_post01($compiled, &$smarty) - { - $compiled = "<pre>\n<?php print_r(\$this->get_template_vars()); ?>\n</pre>" . $compiled; - return $compiled; - } -?> - - - - Filtres de sortie - - Les plugins de filtres de sortie opFrent sur la sortie du template, - aprFs que le template a TtT chargT et exTcutT, mais avant que - la sortie ne soit affichTe. - - - - string smarty_outputfilter_name - string $template_output - object &$smarty - - - - Le premier paramFtre passT a la fonction du filtre de sortie est la - sortie du template qui doit Otre modifiTe et le second paramFtre - est l'instance de Smarty appelant le plugin. Le plugin est supposT - faire un traitement et en retourner le rTsultat. - - - plugin de filtre de sortie - -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : outputfilter.protect_email.php - * Type : filtre de sortie - * Nom : protect_email - * R(le: Convertie les @ en %40 pour protTger des - * robots spammers. - * ------------------------------------------------------------- - */ - function smarty_outputfilter_protect_email($output, &$smarty) - { - return preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!', - '$1%40$2', $output); - } - - - - - Ressources - - Les plugins ressources sont un moyen gTnTrique de fournir des sources - de templates ou des composants de scripts PHP a Smarty. Quelques exemples - de ressources : bases de donnTes, LDAP, mTmoire partagTe, sockets, et ainsi - de suite. - - - Il y au total 4 fonctions qui ont besoin d'Otre enregistrTes pour - chaque type de ressource. Chaque fonction retoit le nom de la ressource demandTe - comme premier paramFtre et l'objet Smarty comme dernier paramFtre. - Les autres paramFtres dTpendent de la fonction. - - - - bool smarty_resource_name_source - string $rsrc_name - string &$source - object &$smarty - - - bool smarty_resource_name_timestamp - string $rsrc_name - int &$timestamp - object &$smarty - - - bool smarty_resource_name_secure - string $rsrc_name - object &$smarty - - - bool smarty_resource_name_trusted - string $rsrc_name - object &$smarty - - - - - La premiFre fonction est supposTe rTcupTrer la ressource. Son second - paramFtre est une variable passTe par rTfTrence oú le rTsultat doit Otre - stockT. La fonction est supposTe retourner true si - elle rTussi a rTcupTrer la ressource et false sinon. - - - - La seconde fonction est supposTe rTcupTrer la date de derniFre modification - de la ressource demandTe (comme un timestamp UNIX). Le second paramFtre - est une variable passTe par rTfTrence dans laquelle la date doit - Otre stockTe. La fonction est supposTe renvoyer true si elle - a rTussi a rTcupTrer la date et false sinon. - - - - La troisiFme fonction est supposTe retourner true - ou false selon si la ressource demandTe est svre - ou non. La fonction est utilisTe seulement pour les ressources templates - mais doit tout de mOme Otre dTfinie. - - - - La quatriFme fonction est supposTe retourner true - ou false selon si on peut faire confiance ou - non a la ressource demandTe. Cette fonction est utilisTe seulement - pour les composants de scripts PHP demandTs par les balises - include_php ou insert - ayant un attribut src. Quoiqu'il en soit, - elle doit Otre dTfinie pour les ressources templates. - - - - Regardez aussi - register_resource(), - unregister_resource(). - - - resource plugin - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : resource.db.php - * Type : ressource - * Nom : db - * R(le : RTcupFre des templates depuis une base de donnTes - * ------------------------------------------------------------- - */ -function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty) -{ - // fait des requOtes BD pour rTcupTrer votre template - // et remplir $tpl_source - $sql = new SQL; - $sql->query("select tpl_source - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_source = $sql->record['tpl_source']; - return true; - } else { - return false; - } -} - -function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty) -{ - // fait des requOtes BD pour remplir $tpl_timestamp - $sql = new SQL; - $sql->query("select tpl_timestamp - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_timestamp = $sql->record['tpl_timestamp']; - return true; - } else { - return false; - } -} - -function smarty_resource_db_secure($tpl_name, &$smarty) -{ - // suppose que tous les templates sont svrs - return true; -} - -function smarty_resource_db_trusted($tpl_name, &$smarty) -{ - // inutilisTe pour les templates -} -?> - - - - Insertions - - Les plugins d'insertion sont utilisTs pour implTmenter les fonctions - qui sont appelTes par les balises - insert - dans les templates. - - - - string smarty_insert_name - array $params - object &$smarty - - - - Le premier paramFtre passT a la fonction est une tableau associatif - d'attributs. Vous pouvez accTder a ces valeurs soit directement, par exemple - $params['start'], soit en utilisant - extract($params) pour les importer dans la table - des symboles. - - - La fonction d'insertion est supposTe retourner le rTsultat qui sera - substituT a la balise insert dans le template. - - - plugin d'insertion - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * Fichier : insert.time.php - * Type : temps - * Nom : time - * R(le : Insert la date/heure courante conformTment - * au format - * ------------------------------------------------------------- - */ -function smarty_insert_time($params, &$smarty) -{ - if (empty($params['format'])) { - $smarty->trigger_error("insert time: missing 'format' parameter"); - return; - } - - $datetime = strftime($params['format']); - return $datetime; -} -?> - - -
-
\ No newline at end of file