diff --git a/docs/fr/appendixes/bugs.xml b/docs/fr/appendixes/bugs.xml
new file mode 100644
index 00000000..7d5adc49
--- /dev/null
+++ b/docs/fr/appendixes/bugs.xml
@@ -0,0 +1,29 @@
+
+
+
+ BUGS
+
+ Vérifiez le fichier de BUGS fourni avec la dernière version de Smarty ou
+ consultez le site Web.
+
+
+
\ No newline at end of file
diff --git a/docs/fr/appendixes/resources.xml b/docs/fr/appendixes/resources.xml
new file mode 100644
index 00000000..83338923
--- /dev/null
+++ b/docs/fr/appendixes/resources.xml
@@ -0,0 +1,32 @@
+
+
+
+ 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
+
+
+
\ No newline at end of file
diff --git a/docs/fr/appendixes/tips.xml b/docs/fr/appendixes/tips.xml
new file mode 100644
index 00000000..a8cb3b2a
--- /dev/null
+++ b/docs/fr/appendixes/tips.xml
@@ -0,0 +1,361 @@
+
+
+
+ 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 " "
+ 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 quand une variable est vide
+
+
+{* la méthode pas adaptée *}
+
+{if $title eq ""}
+
+{else}
+ {$title}
+{/if}
+
+
+{* la bonne méthode *}
+
+{$title|default:" "}
+
+
+
+
+ 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.
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/appendixes/troubleshooting.xml b/docs/fr/appendixes/troubleshooting.xml
new file mode 100644
index 00000000..45ce479f
--- /dev/null
+++ b/docs/fr/appendixes/troubleshooting.xml
@@ -0,0 +1,71 @@
+
+
+
+ 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.
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/designers/chapter-debugging-console.xml b/docs/fr/designers/chapter-debugging-console.xml
new file mode 100644
index 00000000..01542eb6
--- /dev/null
+++ b/docs/fr/designers/chapter-debugging-console.xml
@@ -0,0 +1,61 @@
+
+
+
+ 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/designers/config-files.xml b/docs/fr/designers/config-files.xml
new file mode 100644
index 00000000..5d0ac9c8
--- /dev/null
+++ b/docs/fr/designers/config-files.xml
@@ -0,0 +1,96 @@
+
+
+
+ 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.
+
+
+
\ No newline at end of file
diff --git a/docs/fr/designers/language-basic-syntax.xml b/docs/fr/designers/language-basic-syntax.xml
new file mode 100644
index 00000000..c91bfb5a
--- /dev/null
+++ b/docs/fr/designers/language-basic-syntax.xml
@@ -0,0 +1,163 @@
+
+
+
+ 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
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/designers/language-builtin-functions.xml b/docs/fr/designers/language-builtin-functions.xml
new file mode 100644
index 00000000..cf56d440
--- /dev/null
+++ b/docs/fr/designers/language-builtin-functions.xml
@@ -0,0 +1,1397 @@
+
+
+
+ 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é.
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/designers/language-combining-modifiers.xml b/docs/fr/designers/language-combining-modifiers.xml
new file mode 100644
index 00000000..7c4a7188
--- /dev/null
+++ b/docs/fr/designers/language-combining-modifiers.xml
@@ -0,0 +1,58 @@
+
+
+
+ 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. . .
+
+
+
\ No newline at end of file
diff --git a/docs/fr/designers/language-custom-functions.xml b/docs/fr/designers/language-custom-functions.xml
new file mode 100644
index 00000000..24c2ff38
--- /dev/null
+++ b/docs/fr/designers/language-custom-functions.xml
@@ -0,0 +1,2669 @@
+
+
+
+ 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
+
+ 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> </td><td> </td><td> </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> </td><td> </td><td> </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" >me@d&
+#x6f;main.com</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.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/designers/language-modifiers.xml b/docs/fr/designers/language-modifiers.xml
new file mode 100644
index 00000000..1be6dae6
--- /dev/null
+++ b/docs/fr/designers/language-modifiers.xml
@@ -0,0 +1,1167 @@
+
+
+
+ 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'
+'Stiff Opposition Expected to Casketless Funeral Plan'
+'Stiff Opposition Expected to Casketless Funeral Plan'
+'Stiff Opposition Expected to Casketless Funeral Plan'
+%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">bob@me.net</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:" "}
+
+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 réunion autour d'un feu de cheminée est toujours
+ 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.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/designers/language-variables.xml b/docs/fr/designers/language-variables.xml
new file mode 100644
index 00000000..cca6ca12
--- /dev/null
+++ b/docs/fr/designers/language-variables.xml
@@ -0,0 +1,341 @@
+
+
+
+ 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.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/language-defs.ent b/docs/fr/language-defs.ent
new file mode 100644
index 00000000..7ffb0d71
--- /dev/null
+++ b/docs/fr/language-defs.ent
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/fr/programmers/advanced-features.xml b/docs/fr/programmers/advanced-features.xml
new file mode 100644
index 00000000..af5e66e8
--- /dev/null
+++ b/docs/fr/programmers/advanced-features.xml
@@ -0,0 +1,527 @@
+
+
+
+ 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';
+?>
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/programmers/api-functions.xml b/docs/fr/programmers/api-functions.xml
new file mode 100644
index 00000000..24525952
--- /dev/null
+++ b/docs/fr/programmers/api-functions.xml
@@ -0,0 +1,1010 @@
+
+
+
+ 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");
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/programmers/api-variables.xml b/docs/fr/programmers/api-variables.xml
new file mode 100644
index 00000000..af343b85
--- /dev/null
+++ b/docs/fr/programmers/api-variables.xml
@@ -0,0 +1,511 @@
+
+
+
+ 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}.
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/programmers/caching.xml b/docs/fr/programmers/caching.xml
new file mode 100644
index 00000000..b57dac18
--- /dev/null
+++ b/docs/fr/programmers/caching.xml
@@ -0,0 +1,329 @@
+
+
+
+ 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').
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fr/programmers/plugins.xml b/docs/fr/programmers/plugins.xml
new file mode 100644
index 00000000..457f31f5
--- /dev/null
+++ b/docs/fr/programmers/plugins.xml
@@ -0,0 +1,790 @@
+
+
+
+ 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
diff --git a/docs/fr/programmers/smarty-constants.xml b/docs/fr/programmers/smarty-constants.xml
new file mode 100644
index 00000000..b6096b01
--- /dev/null
+++ b/docs/fr/programmers/smarty-constants.xml
@@ -0,0 +1,46 @@
+
+
+
+ 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");
+
+
+
+
\ No newline at end of file