sync with EN

This commit is contained in:
yannick
2006-10-08 12:39:15 +00:00
parent a88922ae3a
commit bb46b87b66
17 changed files with 444 additions and 347 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.9 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.10 Maintainer: yannick Status: ready -->
<sect1 id="language.function.strip">
<title>{strip}</title>
@@ -12,16 +12,15 @@
code illisible et impossible <20> maintenir.
</para>
<para>
Tout contenu situ<74> entre les balises {strip}{/strip} se verra
Tout contenu situ<74> entre les balises <varname>{strip}{/strip}</varname> se verra
all<6C>g<EFBFBD> des espaces superflus et des retours chariots en d<>but ou en fin
de ligne, avant qu'il ne soit affich<63>. De la sorte, vous pouvez
conserver vos templates lisibles, sans vous soucier des effets
ind<6E>sirables que peuvent apporter les espaces superflus.
</para>
<note>
<title>Note technique</title>
<para>
{strip}{/strip} n'affecte en aucun cas le contenu des variables de
<varname>{strip}{/strip}</varname> n'affecte en aucun cas le contenu des variables de
template. Voir aussi le <link linkend="language.modifier.strip">modificateur
strip</link> pour un rendu identique pour les variables.
</para>
@@ -62,7 +61,7 @@
</para>
<para>
Voir aussi
le <link linkend="language.modifier.strip">modificateur strip</link>.
le <link linkend="language.modifier.strip">modificateur <varname>strip</varname></link>.
</para>
</sect1>

View File

@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.5 Maintainer: yannick Status: ready -->
<chapter id="caching">
<title>Cache</title>
<para>
Le cache est utilis<69>e pour acc<63>l<EFBFBD>rer l'appel de <link
linkend="api.display">display()</link> ou de <link
linkend="api.fetch">fetch()</link> en sauvegardant leur r<>sultat
linkend="api.display"><varname>display()</varname></link> ou de <link
linkend="api.fetch"><varname>fetch()</varname></link> en sauvegardant leur r<>sultat
dans un fichier. Si un fichier de cache est disponible lors d'un appel,
il sera affich<63> sans qu'il ne soit n<>cessaire de reg<65>n<EFBFBD>rer le r<>sultat.
Le syst<73>me de cache peut acc<63>l<EFBFBD>rer les traitements de fa<66>on impressionnante,
en particulier les templates dont la compilation est tr<74>s longue. Comme
le r<>sultat de <link linkend="api.display">display()</link> ou de
<link linkend="api.fetch">fetch()</link>est dans le cache, un fichier de cache
le r<>sultat de <link linkend="api.display"><varname>display()</varname></link> ou de
<link linkend="api.fetch"><varname>fetch()</varname></link>est dans le cache, un fichier de cache
peut <20>tre compos<6F> de plusieurs fichiers de templates, plusieurs fichiers
de configuration, etc.
</para>

View File

@@ -1,28 +1,29 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.9 Maintainer: didou Status: ready -->
<!-- EN-Revision: 1.10 Maintainer: didou Status: ready -->
<sect1 id="caching.cacheable">
<title>Contr<EFBFBD>ler la mise en cache des sorties des Plugins</title>
<para>
Depuis Smarty-2.6.0, la mise en cache des plugins peut <20>tre d<>clar<61>e lors
de leur inscription. Les troisi<73>mes param<61>tres de
<link linkend="api.register.block">register_block()</link>,
<link linkend="api.register.compiler.function">register_compiler_function()</link>
et <link linkend="api.register.block">register_function()</link> sont appel<65>s
<parameter>$cacheable</parameter> et valent true par d<>faut, ce qui est
<link linkend="api.register.block"><varname>register_block()</varname></link>,
<link linkend="api.register.compiler.function">
<varname>register_compiler_function()</varname></link>
et <link linkend="api.register.block"><varname>register_function()</varname></link> sont appel<65>s
<parameter>$cacheable</parameter> et valent &true; par d<>faut, ce qui est
aussi le comportement par d<>faut des versions de Smarty pr<70>c<EFBFBD>dent la 2.6.0
</para>
<para>
Lors de l'inscription d'un plugin avec $cacheable=false, le plugin est
Lors de l'inscription d'un plugin avec <literal>$cacheable=false</literal>, le plugin est
appel<65> <20> chaque fois que la page est affich<63>e, m<>me si la page vient du
cache. La fonction plugin se comporte presque comme la fonction
<link linkend="plugins.inserts">insert</link>.
<link linkend="plugins.inserts"><varname>{insert}</varname></link>.
</para>
<para>
Contrairement <20> <link linkend="plugins.inserts">insert</link>
Contrairement <20> <link linkend="plugins.inserts"><varname>{insert}</varname></link>
les attributs pour le plugin ne sont pas mis en cache par d<>faut. Cel<65> peut
<20>tre le cas en utilisant le quatri<72>me param<61>tre
<parameter>$cache_attrs</parameter>. <parameter>$cache_attrs</parameter>
@@ -36,10 +37,7 @@
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->caching = 1;
function remaining_seconds($params, &$smarty) {
$remain = $params['endtime'] - time();
@@ -62,7 +60,7 @@ $smarty->display('index.tpl');
]]>
</programlisting>
<para>
O<> index.tpl contient :
O<> <filename>index.tpl</filename> contient :
</para>
<programlisting>
<![CDATA[
@@ -70,7 +68,7 @@ Time Remaining: {remaining endtime=$obj->endtime}
]]>
</programlisting>
<para>
Le nombre de secondes avant que la date de fin de $obj ne soit atteinte
Le nombre de secondes avant que la date de fin de <literal>$obj</literal> ne soit atteinte
change <20> chaque affichage de la page, m<>me si la page est mise en cache.
Comme l'attribut endtime est mis en cache, il n'y a que l'objet qui ait
besoin d'<27>tre extrait de la base de donn<6E>es lors de la mise en cache de
@@ -97,17 +95,17 @@ $smarty->display('index.tpl');
]]>
</programlisting>
<para>
O<> index.tpl contient :
O<> <filename>index.tpl</filename> contient :
</para>
<programlisting>
<![CDATA[
Page created: {"0"|date_format:"%D %H:%M:%S"}
Cr<EFBFBD>ation de la page : {'0'|date_format:'%D %H:%M:%S'}
{dynamic}
Now is: {"0"|date_format:"%D %H:%M:%S"}
Heure actuelle : {'0'|date_format:'%D %H:%M:%S'}
... do other stuff ...
... fa<EFBFBD>tes quelque chose ici ...
{/dynamic}
]]>
@@ -116,9 +114,9 @@ Now is: {"0"|date_format:"%D %H:%M:%S"}
<para>
Lors du rechargement de la page, vous remarquerez que les deux dates sont
diff<66>rentes. L'une est "dynamique" et l'autre est "statique". Vous pouvez
faire ce que vous voulez entre {dynamic}...{/dynamic} et <20>tre s<>rs que
cel<EFBFBD> ne sera pas mis en cache comme le reste de la page.
diff<66>rentes. L'une est <quote>dynamic</quote> et l'autre est <quote>static</quote>.
Vous pouvez faire ce que vous voulez entre <literal>{dynamic}...{/dynamic}</literal>
et <20>tre s<>rs que cela ne sera pas mis en cache comme le reste de la page.
</para>
</sect1>

View File

@@ -1,40 +1,61 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.6 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.7 Maintainer: yannick Status: ready -->
<sect1 id="caching.groups">
<title>Groupes de fichiers de cache</title>
<para>
Vous pouvez faire des groupements plus <20>labor<6F>s en param<61>trant les
groupes d'identifiant de cache. Il suffit de s<>parer chaque sous-groupe
avec une barre verticale "|" dans la valeur de l'identifiant de cache.
groupes de <parameter>$cache_id</parameter>. Il suffit de s<>parer chaque sous-groupe
avec une barre verticale <literal>|</literal> dans la valeur de <parameter>$cache_id</parameter>.
Vous pouvez faire autant de sous-groupes que vous le d<>sirez.
</para>
<para>
Vous pouvez voir les groupes de cache comme une hi<68>rarchie de dossiers.
Par exemple, un groupe de cache "a|b|c" peut <20>tre consid<69>r<EFBFBD> comme
la hi<68>rarchie de dossiers "/a/b/c/". Ainsi,
<link linkend="api.clear.cache">clear_cache</link>(null,"a|b|c") supprimerait
les fichiers "/a/b/c/*". clear_cache(null,"a|b") supprimerait les fichiers
"/a/b/*". Si vous sp<73>cifiez un <link linkend="variable.compile.id">$compile_id</link>
de cette fa<66>on : clear_cache(null,"a|b","foo"), il sera trait<69> comme un groupe de
cache appos<6F> "/a/b/c/foo/". Si vous sp<73>cifiez un nom de template de cette fa<66>on :
clear_cache("foo.tpl","a|b|c"), alors Smarty tentera d'effacer "/a/b/c/foo.tpl".
Vous ne POUVEZ PAS effacer un nom de template sp<73>cifi<66> sous un groupe de
cache multiple comme "/a/b/*/foo.tpl", le groupement de cache fonctionne
UNIQUEMENT de gauche <20> droite. Vous pourriez vouloir grouper vos templates
sous un groupe de cache simple hi<68>rarchis<69> pour <20>tre capable de les effacer
comme un groupe.
</para>
<itemizedlist>
<listitem><para>
Vous pouvez voir les groupes de cache comme une hi<68>rarchie de dossiers.
Par exemple, un groupe de cache <literal>'a|b|c'</literal> peut <20>tre consid<69>r<EFBFBD> comme
la hi<68>rarchie de dossiers <literal>'/a/b/c/'</literal>.
</para></listitem>
<listitem><para>
<literal>clear_cache(null,'a|b|c')</literal>
supprimera les fichiers
<literal>'/a/b/c/*'</literal>. <literal>clear_cache(null,'a|b')</literal>
supprimera les fichiers <literal>'/a/b/*'</literal>.
</para></listitem>
<listitem><para>
Si vous sp<73>cifiez un
<link linkend="variable.compile.id"><parameter>$compile_id</parameter></link>
de cette fa<66>on <literal>clear_cache(null,'a|b','foo')</literal> il sera trait<69> comme un groupe de
cache appos<6F> <literal>'/a/b/c/foo/'</literal>.
</para></listitem>
<listitem><para>
Si vous sp<73>cifiez un nom de template de cette fa<66>on
<literal>clear_cache('foo.tpl','a|b|c')</literal> alors Smarty tentera d'effacer
<literal>'/a/b/c/foo.tpl'</literal>.
</para></listitem>
<listitem><para>
Vous ne POUVEZ PAS effacer un nom de template sp<73>cifi<66> sous un groupe de
cache multiple comme <literal>'/a/b/*/foo.tpl'</literal>, le groupement de cache fonctionne
UNIQUEMENT de gauche <20> droite. Vous pourriez vouloir grouper vos templates
sous un groupe de cache simple hi<68>rarchis<69> pour <20>tre capable de les effacer
comme un groupe.
</para></listitem>
</itemizedlist>
<para>
Le groupement de cache ne devrait pas <20>tre confondu avec votre hi<68>rarchie
de dossiers de templates, le groupement de cache n'a aucune connaissance
de la fa<66>on dont vos templates sont structur<75>s. Donc, par exemple, si
vous avez une structure de template comme "themes/blue/index.tpl" et
que vous voulez <20>tre capable d'effacer tous les fichiers de cache pour le th<74>me "blue",
vous avez une structure de template comme <filename>themes/blue/index.tpl</filename> et
que vous voulez <20>tre capable d'effacer tous les fichiers de cache pour le th<74>me <quote>blue</quote>,
vous devriez cr<63>er une structure de groupe de cache qui refl<66>te la structure
de fichiers de vos templates, comme display("themes/blue/index.tpl","themes|blue"),
et les effacer avec clear_cache(null,"themes|blue").
de fichiers de vos templates, comme <literal>display('themes/blue/index.tpl','themes|blue')</literal>,
et les effacer avec <literal>clear_cache(null,'themes|blue')</literal>.
</para>
<example>
<title>Groupes d'identifiants de cache</title>

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer: didou Status: ready -->
<!-- EN-Revision: 1.5 Maintainer: didou Status: ready -->
<sect1 id="caching.multiple.caches">
<title>Caches multiples pour une seule page</title>
<para>
Vous pouvez avoir plusieurs fichiers de caches pour un m<>me appel
aux fonctions <link linkend="api.display">display()</link> ou
<link linkend="api.fetch">fetch()</link>. Imaginons qu'un appel a
aux fonctions <link linkend="api.display"><varname>display()</varname></link> ou
<link linkend="api.fetch"><varname>fetch()</varname></link>. Imaginons qu'un appel a
display('index.tpl') puisse avoir plusieurs r<>sultats, en fonction de
certaines conditions, et que vous vouliez des fichiers de cache s<>par<61>s
pour chacun d'eux. Vous pouvez faire cel<65> en passant un identifiant de
cache ($cache_id) en deuxi<78>me param<61>tre a l'appel de fonction.
cache (<parameter>$cache_id</parameter>) en deuxi<78>me param<61>tre <EFBFBD> l'appel de fonction.
</para>
<example>
<title>Passage d'un $cache_id <20> display()</title>
@@ -31,11 +31,11 @@ $smarty->display('index.tpl',$my_cache_id);
</programlisting>
</example>
<para>
Nous passons ci-dessus la variable $my_cache_id a
<link linkend="api.display">display()</link> comme
identifiant de cache. Pour chaque valeur distincte de $my_cache_id,
Nous passons ci-dessus la variable <literal>$my_cache_id</literal> <20>
<link linkend="api.display"><varname>display()</varname></link> comme
identifiant de cache. Pour chaque valeur distincte de <literal>$my_cache_id</literal>,
un fichier de cache distinct va <20>tre cr<63><72>. Dans cet exemple,
"article_id" a <20>t<EFBFBD> pass<73> dans l'URL et est utilis<69> en tant qu'identifiant
<literal>article_id</literal> a <20>t<EFBFBD> pass<73> dans l'URL et est utilis<69> en tant qu'identifiant
de cache.
</para>
<note>
@@ -43,10 +43,10 @@ $smarty->display('index.tpl',$my_cache_id);
<para>
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
ci-dessus consistant <EFBFBD> utiliser article_id depuis l'URL puisse paraetre
commode, le r<>sultat peut s'av<61>rer mauvais. L'identifiant
de cache est utilis<69> pour cr<63>er un r<>pertoire sur le syst<73>me de fichiers,
donc si l'utilisateur d<>cide de donner une tr<74>s grande valeur a article_id
donc si l'utilisateur d<>cide de donner une tr<74>s grande valeur <EFBFBD> article_id
ou d'<27>crire un script qui envoie des article_id de fa<66>on al<61>atoire,
cel<65> pourra causer des probl<62>mes cot<6F> serveur. Assurez-vous de bien
tester toute donn<6E>e pass<73>e en param<61>tre avant de l'utiliser. Dans cet
@@ -57,12 +57,12 @@ $smarty->display('index.tpl',$my_cache_id);
</note>
<para>
Assurez-vous de bien passer le m<>me identifiant aux fonctions
<link linkend="api.is.cached">is_cached()</link> et
<link linkend="api.clear.cache">clear_cache()</link>.
<link linkend="api.is.cached"><varname>is_cached()</varname></link> et
<link linkend="api.clear.cache"><varname>clear_cache()</varname></link>.
</para>
<example>
<title>Passer un cache_id a is_cached()</title>
<programlisting>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
@@ -85,12 +85,12 @@ $smarty->display('index.tpl',$my_cache_id);
</example>
<para>
Vous pouvez effacer tous les fichiers de cache pour un identifiant
de cache particulier en passant null en tant que premier param<61>tre
<20> <link linkend="api.clear.cache">clear_cache()</link>.
de cache particulier en passant &null; en tant que premier param<61>tre
<20> <link linkend="api.clear.cache"><varname>clear_cache()</varname></link>.
</para>
<example>
<title>Effacement de tous les fichiers de cache pour un identifiant de cache particulier</title>
<programlisting>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
@@ -99,9 +99,9 @@ $smarty = new Smarty;
$smarty->caching = true;
// efface tous les fichiers de cache avec "sports" comme identifiant
$smarty->clear_cache(null,"sports");
$smarty->clear_cache(null,'sports');
$smarty->display('index.tpl',"sports");
$smarty->display('index.tpl','sports');
?>
]]>
</programlisting>

View File

@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.7 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.8 Maintainer: yannick Status: ready -->
<sect1 id="caching.setting.up">
<title>Param<EFBFBD>trer le cache</title>
<para>
La premi<6D>re chose <20> faire est d'activer le cache en
mettant <link linkend="variable.caching">$caching</link> = 1
(ou 2).
mettant
<link linkend="variable.caching"><parameter>$caching</parameter></link>
<literal> = 1 (ou 2)</literal>.
</para>
<example>
<title>Activation du cache</title>
@@ -25,31 +26,32 @@ $smarty->display('index.tpl');
</programlisting>
</example>
<para>
Avec le cache activ<69>, la fonction display('index.tpl') va afficher
Avec le cache activ<69>, la fonction <literal>display('index.tpl')</literal> va afficher
le template mais sauvegardera par la m<>me occasion une copie du r<>sultat
dans un fichier (de cache) du r<>pertoire
<link linkend="variable.cache.dir">$cache_dir</link>. Au prochain appel de
display('index.tpl'), le fichier de cache sera pr<70>f<EFBFBD>r<EFBFBD> <20> la r<>utilisation
du template.
<link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>.
Au prochain appel de <literal>display('index.tpl')</literal>, le fichier de cache sera pr<70>f<EFBFBD>r<EFBFBD>
<EFBFBD> la r<>utilisation du template.
</para>
<note>
<title>Note technique</title>
<para>
Les fichiers situ<74>s dans <link linkend="variable.cache.dir">$cache_dir</link>
Les fichiers situ<74>s dans
<link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>
sont nomm<6D>s de la m<>me fa<66>on que les templates.
Bien qu'ils aient une extension ".php", ils ne sont pas vraiment directement ex<65>cutable.
N'<27>ditez surtout pas ces fichiers !
Bien qu'ils aient une extension <filename>.php</filename>, ils ne sont pas vraiment
directement ex<65>cutable. N'<27>ditez surtout pas ces fichiers !
</para>
</note>
<para>
Tout fichier de cache a une dur<75>e de vie limit<69>e d<>termin<69>e par <link
linkend="variable.cache.lifetime">$cache_lifetime</link>. La valeur par
linkend="variable.cache.lifetime"><parameter>$cache_lifetime</parameter></link>. La valeur par
d<>faut est 3600 secondes, i.e. 1 heure. Une fois que cette dur<75>e est
d<>pass<73>e, le cache est reg<65>n<EFBFBD>r<EFBFBD>. Il est possible de donner
une dur<75>e d'expiration propre <20> chaque fichier de cache en r<>glant
<link linkend="variable.caching">$caching</link> = 2.
<link linkend="variable.caching"><parameter>$caching</parameter></link><literal>=2</literal>.
Se reporter <20> la documentation de <link
linkend="variable.cache.lifetime">$cache_lifetime</link> pour plus de
linkend="variable.cache.lifetime"><parameter>$cache_lifetime</parameter></link> pour plus de
d<>tails.
</para>
<example>
@@ -81,12 +83,13 @@ $smarty->display('home.tpl');
</programlisting>
</example>
<para>
Si <link linkend="variable.compile.check">$compile_check</link> est actif,
chaque fichier de template et de configuration qui a un rapport
Si
<link linkend="variable.compile.check"><parameter>$compile_check</parameter></link>
est actif, chaque fichier de template et de configuration qui a un rapport
avec le fichier de cache sera v<>rifi<66> pour d<>tecter une <20>ventuelle
modification. Si l'un de ces fichiers a <20>t<EFBFBD> modifi<66> depuis que le fichier de cache a <20>t<EFBFBD>
g<>n<EFBFBD>r<EFBFBD>, le cache est imm<6D>diatement reg<65>n<EFBFBD>r<EFBFBD>. Ce processus est couteux, donc,
pour des raisons de performances, mettez ce param<61>tre <20> false pour une application
pour des raisons de performances, mettez ce param<61>tre <20> &false; pour une application
en production.
</para>
<example>
@@ -106,15 +109,15 @@ $smarty->display('index.tpl');
</programlisting>
</example>
<para>
Si <link linkend="variable.force.compile">$force_compile</link> est actif,
Si <link linkend="variable.force.compile"><parameter>$force_compile</parameter></link> est actif,
les fichiers de cache sont toujours reg<65>n<EFBFBD>r<EFBFBD>s. Ceci revient finalement <20>
d<>sactiver le cache. <link linkend="variable.force.compile">$force_compile</link>
d<>sactiver le cache. <link linkend="variable.force.compile"><parameter>$force_compile</parameter></link>
est utilis<69> <20> des fins de <link linkend="chapter.debugging.console">d<EFBFBD>bogage</link>,
un moyen plus efficace de d<>sactiver le cache est de r<>gler
<link linkend="variable.caching">$caching</link> = 0.
<link linkend="variable.caching"><parameter>$caching</parameter></link><literal> = 0</literal>.
</para>
<para>
La fonction <link linkend="api.is.cached">is_cached()</link> permet
La fonction <link linkend="api.is.cached"><varname>is_cached()</varname></link> 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 requ<71>te
<20> une base de donn<6E>es, vous pouvez utiliser cette m<>thode plut<75>t
@@ -144,20 +147,20 @@ $smarty->display('index.tpl');
<para>
Vous pouvez rendre dynamiques seulement certaines parties d'une
page avec la fonction de template <link
linkend="language.function.insert">{insert}</link>.
linkend="language.function.insert"><varname>{insert}</varname></link>.
Imaginons que toute une page doit <20>tre mise en cache <20> part
une banni<6E>re en bas <20> droite. En utilisant une fonction
<link linkend="language.function.insert">{insert}</link> pour la
<link linkend="language.function.insert"><varname>{insert}</varname></link> pour la
banni<6E>re, vous pouvez garder cet <20>l<EFBFBD>ment dynamique dans le contenu qui
est en cache. Reportez-vous <20> la documentation
<link linkend="language.function.insert">{insert}</link> pour plus de d<>tails
<link linkend="language.function.insert"><varname>{insert}</varname></link> pour plus de d<>tails
ainsi que des exemples.
</para>
<para>
Vous pouvez effacer tous les fichiers du cache avec la fonction <link
linkend="api.clear.all.cache">clear_all_cache()</link>, ou de fa<66>on
linkend="api.clear.all.cache"><varname>clear_all_cache()</varname></link>, ou de fa<66>on
individuelle <link linkend="caching.groups">(ou par groupe)</link>
avec la fonction <link linkend="api.clear.cache">clear_cache()</link>.
avec la fonction <link linkend="api.clear.cache"><varname>clear_cache()</varname></link>.
</para>
<example>
<title>Nettoyage du cache</title>
@@ -169,12 +172,12 @@ $smarty = new Smarty;
$smarty->caching = 1;
// efface tous les fichiers du cache
$smarty->clear_all_cache();
// efface le fichier de cache du template 'index.tpl'
$smarty->clear_cache('index.tpl');
// efface tous les fichiers du cache
$smarty->clear_all_cache();
$smarty->display('index.tpl');
?>
]]>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.4 Maintainer: yannick Status: ready -->
<sect1 id="plugins.block.functions">
<title>Fonctions de blocs</title>
<funcsynopsis>
@@ -12,89 +13,95 @@
</funcprototype>
</funcsynopsis>
<para>
Les fonctions de blocs sont des fonctions de la forme {func} .. {/func}.
Les fonctions de blocs sont des fonctions de la forme <literal>{func} .. {/func}</literal>.
En d'autres mots, elles englobent des blocs de template et op<6F>rent sur les
contenus de ces blocs. Les fonctions de blocs ont la priorit<69> sur les
fonctions utilisateurs de m<>me nom, ce qui signifie que vous ne
pouvez avoir une fonction utilisateur {func} et une fonction de bloc
{func} .. {/func}.
<link linkend="language.custom.functions">fonctions utilisateurs</link>
de m<>me nom, ce qui signifie que vous ne
pouvez avoir une fonction utilisateur <literal>{func}</literal> et une fonction de bloc
<literal>{func}..{/func}</literal>.
</para>
<para>
Par d<>faut, l'impl<70>mentation de votre fonction est appel<65>e deux fois par Smarty :
une fois pour la balise ouvrante et une autre fois pour la balise
fermante (voir <literal>&amp;$repeat</literal> ci-dessous
sur la fa<66>on de modifier ce comportement).
</para>
<para>
Seule la balise ouvrante d'une fonction de bloc peut avoir des attributs.
Tous les attributs pass<73>s par le template aux fonctions de templates sont
contenus dans le tableau associatif <parameter>$params</parameter>.
Vous pouvez acc<63>der <20> ces valeurs directement par
<varname>$params['start']</varname>.
Votre fonction a aussi acc<63>s aux attributs de la balise
ouvrante quand c'est la balise fermante qui est ex<65>cut<75>e.
</para>
<para>
La valeur de la variable <parameter>$content</parameter> est diff<66>rente
selon si votre fonction est appel<65>e pour la balise ouvrante ou la
balise fermante. Si c'est pour la balise ouvrante, elle sera <20>
<literal>null</literal> et si c'est la balise fermante, elle sera
<20>gale au contenu du bloc de template. Notez que le bloc de template
aura d<>j<EFBFBD> <20>t<EFBFBD> ex<65>cut<75> par Smarty, vous recevrez donc la sortie du
template et non sa source.
</para>
<para>
Le param<61>tre <parameter>&amp;$repeat</parameter> est pass<73>
par r<>f<EFBFBD>rence <20> la fonction d'impl<70>mentation et fournit la possibilit<69>
de contr<74>ler le nombre d'affichage du bloc. Par d<>faut,
<parameter>$repeat</parameter> vaut <literal>true</literal>
lors du premier appel <20> la fonction de bloc (le bloc d'ouverture du tag) et
<literal>false</literal> lors de tous les autres appels <20> la fonction
de bloc (le bloc de fermeture du tag). Chaque fois que la fonction
d'impl<70>mentation retourne avec le param<61>tre
<parameter>&amp;$repeat</parameter> vallant true, le contenu situ<74>
entre {func} .. {/func} est <20>valu<6C> et la fonction d'impl<70>mentation est appel<65>
une nouvelle fois avec le nouveau bloc de contenu en tant que param<61>tre
<parameter>$content</parameter>.
</para>
<itemizedlist>
<listitem><para>
Par d<>faut, l'impl<70>mentation de votre fonction est appel<65>e deux fois par Smarty :
une fois pour la balise ouvrante et une autre fois pour la balise
fermante (voir <literal>$repeat</literal> ci-dessous
sur la fa<66>on de modifier ce comportement).
</para></listitem>
<listitem><para>
Seule la balise ouvrante d'une fonction de bloc peut avoir des
<link linkend="language.syntax.attributes">attributs</link>.
Tous les attributs pass<73>s par le template aux fonctions de templates sont
contenus dans le tableau associatif <parameter>$params</parameter>.
Votre fonction a aussi acc<63>s aux attributs de la balise
ouvrante quand c'est la balise fermante qui est ex<65>cut<75>e.
</para></listitem>
<listitem><para>
La valeur de la variable <parameter>$content</parameter> est diff<66>rente
selon si votre fonction est appel<65>e pour la balise ouvrante ou la
balise fermante. Si c'est pour la balise ouvrante, elle sera <20> &null; et si c'est la balise fermante,
elle sera <EFBFBD>gale au contenu du bloc de template. Notez que le bloc de template
aura d<>j<EFBFBD> <20>t<EFBFBD> ex<65>cut<75> par Smarty, vous recevrez donc la sortie du
template et non sa source.
</para></listitem>
<listitem><para>
Le param<61>tre <parameter>$repeat</parameter> est pass<73>
par r<>f<EFBFBD>rence <20> la fonction d'impl<70>mentation et fournit la possibilit<69>
de contr<74>ler le nombre d'affichage du bloc. Par d<>faut,
<parameter>$repeat</parameter> vaut
&true; lors du premier appel <20> la fonction de bloc (le bloc d'ouverture du tag) et
&false; lors de tous les autres appels <20> la fonction
de bloc (le bloc de fermeture du tag). Chaque fois que la fonction
d'impl<70>mentation retourne avec le param<61>tre
<parameter>$repeat</parameter> vallant &true;, le contenu situ<74>
<literal>{func}...{/func}</literal> est <20>valu<6C> et la fonction d'impl<70>mentation est appel<65>
une nouvelle fois avec le nouveau bloc de contenu en tant que param<61>tre
<parameter>$content</parameter>.
</para></listitem>
</itemizedlist>
<para>
Si vous imbriqu<71> des fonctions de bloc, il est possible de conna<6E>tre
la fonction de bloc parente gr<67>ce <20> la variable <varname>$smarty->_tag_stack</varname>.
Fa<46>tes un var_dump() dessus et la structure devrait appara<72>tre.
</para>
<para>
Regardez aussi :
<link linkend="api.register.block">register_block()</link>,
<link linkend="api.unregister.block">unregister_block()</link>.
la fonction de bloc parente gr<67>ce <20> la variable <literal>$smarty->_tag_stack</literal>.
Fa<46>tes un <ulink url="&url.php-manual;var_dump"><varname>var_dump()</varname></ulink>
dessus et la structure devrait appara<72>tre.
</para>
<example>
<title>Fonction de bloc</title>
<programlisting role="php">
<![CDATA[
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Fichier : block.translate.php
* Type : bloc
* Nom : translate
* R<>le : traduire un bloc de texte
* -------------------------------------------------------------
*/
function smarty_block_translate($params, $content, &amp;$smarty)
* Smarty plugin
* -------------------------------------------------------------
* Fichier : block.translate.php
* Type : bloc
* Nom : translate
* R<>le : traduire un bloc de texte
* -------------------------------------------------------------
*/
function smarty_block_translate($params, $content, &$smarty, &$repeat)
{
if ($content) {
$lang = $params['lang'];
// fait une traduction de $content
echo $translation;
}
// n'affiche que lors de la balise fermante
if(!$repeat){
if (isset($content)) {
$lang = $params['lang'];
// effectuer une bonne traduction ici avec $content
return $translation;
}
}
}
?>
]]>
</programlisting>
</example>
<para>
Voir aussi :
<link linkend="api.register.block"><varname>register_block()</varname></link> et
<link linkend="api.unregister.block"><varname>unregister_block()</varname></link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,13 +1,15 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.compiler.functions">
<title>Fonctions de compilation</title>
<para>
Les fonctions de compilation sont appel<65>es 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 personnalis<69>e ont le m<>me nom, la fonction de compilation a priorit<69>.
une <link linkend="language.custom.functions">fonction personnalis<69>e</link>
ont le m<>me nom, la fonction de compilation a priorit<69>.
</para>
<funcsynopsis>
<funcprototype>
@@ -22,11 +24,6 @@
l'objet Smarty. Elles sont cens<6E>es retourner le code PHP qui doit <20>tre
inject<63> dans le template compil<69>.
</para>
<para>
Regardez aussi
<link linkend="api.register.compiler.function">register_compiler_function()</link>,
<link linkend="api.unregister.compiler.function">unregister_compiler_function()</link>.
</para>
<example>
<title>Fonction de compilation simple</title>
<programlisting role="php">
@@ -53,8 +50,10 @@ function smarty_compiler_tplheader($tag_arg, &amp;$smarty)
Cette fonction peut-<2D>tre appel<65>e depuis le template comme suivant :
</para>
<programlisting>
<![CDATA[
{* cette fonction n'est execut<75>e que lors de la compilation *}
{tplheader}
]]>
</programlisting>
<para>
Le code PHP r<>sultant dans les templates compil<69>s ressemblerait <20> <20>a :
@@ -67,6 +66,11 @@ echo 'index.tpl compiled at 2002-02-20 20:02';
]]>
</programlisting>
</example>
<para>
Voir aussi :
<link linkend="api.register.compiler.function"><varname>register_compiler_function()</varname></link> et
<link linkend="api.unregister.compiler.function"><varname>unregister_compiler_function()</varname></link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.functions">
<title>Les fonctions de templates</title>
<funcsynopsis>
@@ -11,25 +12,23 @@
</funcprototype>
</funcsynopsis>
<para>
Tous les attributs pass<73>s aux fonctions de template <20> partir du template
Tous les <link linkend="language.syntax.attributes">attributs</link>
pass<73>s aux fonctions de template <20> partir du template
sont contenus dans le tableau associatif <parameter>$params</parameter>.
</para>
<para>
Le retour de la fonction sera substitu<74>e <20> la balise de fonction
du template (fonction <function>fetch</function> par exemple). Sinon,
la fonction peut simplement accomplir une autre t<>che sans sortie
(la fonction <function>assign</function> par exemple).
du template (fonction
<link linkend="language.function.fetch"><varname>{fetch}</varname></link>
par exemple). Sinon, la fonction peut simplement accomplir une autre t<>che sans sortie
(la fonction <link linkend="language.function.assign">
<varname>{assign}</varname></link> par exemple).
</para>
<para>
Si la fonction a besoin d'assigner des variables aux templates ou d'utiliser
d'autres fonctionnalit<69>s fournies par Smarty, elle peut recevoir un
objet <parameter>$smarty</parameter> pour cel<65>.
</para>
<para>
R<>f<EFBFBD>rez-vous aussi <20> :
<link linkend="api.register.function">register_function()</link>,
<link linkend="api.unregister.function">unregister_function()</link>.
</para>
<para>
<example>
<title>Fonction de plugin avec sortie</title>
@@ -105,6 +104,11 @@ function smarty_function_assign($params, &$smarty)
</programlisting>
</example>
</para>
<para>
Voir aussi :
<link linkend="api.register.function"><varname>register_function()</varname></link> et
<link linkend="api.unregister.function"><varname>unregister_function()</varname></link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.4 Maintainer: yannick Status: ready -->
<sect1 id="plugins.inserts">
<title>Insertions</title>
<para>
Les plugins d'insertion sont utilis<69>s pour impl<70>menter les fonctions
qui sont appel<65>es par les balises
<link linkend="language.function.insert">{insert}</link>
<link linkend="language.function.insert"><varname>{insert}</varname></link>
dans les templates.
</para>
<funcsynopsis>
@@ -23,7 +23,7 @@
</para>
<para>
La fonction d'insertion est suppos<6F>e retourner le r<>sultat qui sera
substitu<74> <20> la balise <command>{insert}</command> dans le template.
substitu<74> <20> la balise <varname>{insert}</varname> dans le template.
</para>
<example>
<title>Plugin d'insertion</title>

View File

@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.modifiers">
<title>Modificateurs</title>
<para>
Les modificateurs sont des petites fonctions appliqu<71>es <20> une variable
Les <link linkend="language.modifiers">modificateurs</link>
sont de petites fonctions appliqu<71>es <20> une variable
de template avant qu'elle ne soit affich<63>e ou utilis<69>e dans un autre contexte.
Les modificateurs peuvent <20>tre cha<68>n<EFBFBD>s entre eux.
</para>
@@ -22,12 +24,8 @@
effectu<74>.
</para>
<para>
Le modificateur doit retourner le r<>sultat de son ex<65>cution.
</para>
<para>
Lisez <20>galement
<link linkend="api.register.modifier">register_modifier()</link> et
<link linkend="api.unregister.modifier">unregister_modifier()</link>.
Le modificateur doit <ulink url="&url.php-manual;return">retourner</ulink>
le r<>sultat de son ex<65>cution.
</para>
<example>
<title>Plugin modificateur simple</title>
@@ -93,6 +91,11 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...',
]]>
</programlisting>
</example>
<para>
Voir aussi :
<link linkend="api.register.modifier"><varname>register_modifier()</varname></link> et
<link linkend="api.unregister.modifier"><varname>unregister_modifier()</varname></link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.naming.conventions">
<title>Conventions de nommage</title>
<para>
@@ -8,7 +9,7 @@
de nommage tr<74>s sp<73>cifique pour <20>tre localis<69>s par Smarty.
</para>
<para>
Les fichiers de plugins doivent <20>tre nomm<6D>s de la fa<66>on suivante :
Les fichiers de <emphasis role="bold">plugins</emphasis> doivent <20>tre nomm<6D>s de la fa<66>on suivante :
<blockquote>
<para>
<filename>
@@ -17,31 +18,39 @@
</para>
</blockquote>
</para>
<itemizedlist>
<listitem><para>
O<> <literal>type</literal> est l'une des valeurs suivantes :
<itemizedlist spacing="compact">
<listitem><simpara>function</simpara></listitem>
<listitem><simpara>modifier</simpara></listitem>
<listitem><simpara>block</simpara></listitem>
<listitem><simpara>compiler</simpara></listitem>
<listitem><simpara>prefilter</simpara></listitem>
<listitem><simpara>postfilter</simpara></listitem>
<listitem><simpara>outputfilter</simpara></listitem>
<listitem><simpara>resource</simpara></listitem>
<listitem><simpara>insert</simpara></listitem>
</itemizedlist>
</para>
</listitem>
<listitem><para>
Et <literal>nom</literal> doit <20>tre un identifiant valide : lettres, nombres
et underscore seulement, voir les
<ulink url="&url.php-manual;language.variables">variables php</ulink>.
</para></listitem>
<listitem><para>
Quelques exemples : <filename>function.html_select_date.php</filename>,
<filename>resource.db.php</filename>,
<filename>modifier.spacify.php</filename>.
</para>
</listitem>
</itemizedlist>
<para>
O<EFBFBD> <literal>type</literal> est l'une des valeurs suivantes :
<itemizedlist spacing="compact">
<listitem><simpara>function</simpara></listitem>
<listitem><simpara>modifier</simpara></listitem>
<listitem><simpara>block</simpara></listitem>
<listitem><simpara>compiler</simpara></listitem>
<listitem><simpara>prefilter</simpara></listitem>
<listitem><simpara>postfilter</simpara></listitem>
<listitem><simpara>outputfilter</simpara></listitem>
<listitem><simpara>resource</simpara></listitem>
<listitem><simpara>insert</simpara></listitem>
</itemizedlist>
</para>
<para>
Et <literal>nom</literal> doit <20>tre un identifiant valide (lettres, nombres
et underscore seulement).
</para>
<para>
Quelques exemples : <literal>function.html_select_date.php</literal>,
<literal>resource.db.php</literal>,
<literal>modifier.spacify.php</literal>.
</para>
<para>
Les fonctions de plugins dans les fichiers de plugins doivent <20>tre
Les fonctions de <emphasis role="bold">plugins</emphasis> dans les fichiers de plugins doivent <20>tre
nomm<6D>es de la fa<66>on suivante :
<blockquote>
<para>
@@ -49,16 +58,24 @@
</para>
</blockquote>
</para>
<para>
Les significations de <literal>type</literal> et de <literal>nom</literal> sont les m<>mes
que pr<70>c<EFBFBD>demment.
</para>
<itemizedlist>
<listitem><para>
Les significations de <literal>type</literal> et de <literal>nom</literal> sont les m<>mes
que pr<70>c<EFBFBD>demment.
</para></listitem>
<listitem><para>
Un exemple de nom de modificateur <varname>foo</varname> serait
<literal>function smarty_modifier_foo()</literal>.
</para></listitem>
</itemizedlist>
<para>
Smarty donnera des messages d'erreurs appropri<72>s si le fichier de plugin
n'est pas trouv<75> ou si le fichier ou la fonction de plugin ne sont
pas nomm<6D>s correctement.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
@@ -78,4 +95,4 @@ End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
-->

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.outputfilters">
<title>Filtres de sortie</title>
<para>
@@ -45,7 +46,15 @@ function smarty_outputfilter_protect_email($output, &$smarty)
]]>
</programlisting>
</example>
<para>
Voir aussi
<link linkend="api.register.outputfilter">
<varname>register_outputfilter()</varname></link> et
<link linkend="api.unregister.outputfilter">
<varname>unregister_outputfilter()</varname></link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.prefilters.postfilters">
<title>filtres de pr<70>-compilation/filtres de post-compilation</title>
<para>
@@ -84,6 +85,17 @@
]]>
</programlisting>
</example>
<para>
Voir aussi
<link linkend="api.register.prefilter">
<varname>register_prefilter()</varname></link>,
<link linkend="api.unregister.prefilter">
<varname>unregister_prefilter()</varname></link>
<link linkend="api.register.postfilter">
<varname>register_postfilter()</varname></link> et
<link linkend="api.unregister.postfilter">
<varname>unregister_postfilter()</varname></link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,140 +1,147 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.resources"><title>Ressources</title>
<para>
Les plugins ressources sont un moyen g<>n<EFBFBD>rique de fournir des sources
de templates ou des composants de scripts PHP <20> Smarty. Quelques exemples
de ressources : bases de donn<6E>es, LDAP, m<>moire partag<61>e, sockets, etc.
</para>
<para>
Il y au total 4 fonctions qui ont besoin d'<27>tre enregistr<74>es pour
chaque type de ressource. Chaque fonction re<72>oit le nom de la ressource demand<6E>e
comme premier param<61>tre et l'objet Smarty comme dernier param<61>tre.
Les autres param<61>tres d<>pendent de la fonction.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_source</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>string <parameter>&amp;$source</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_timestamp</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>int <parameter>&amp;$timestamp</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_secure</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_trusted</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Les plugins ressources sont un moyen g<>n<EFBFBD>rique de fournir des sources
de templates ou des composants de scripts PHP <20> Smarty. Quelques exemples
de ressources : bases de donn<6E>es, LDAP, m<>moire partag<61>e, sockets, etc.
</para>
<para>
Il y au total quatre fonctions qui ont besoin d'<27>tre enregistr<74>es pour
chaque type de ressource. Chaque fonction re<72>oit le nom de la ressource demand<6E>e
comme premier param<61>tre et l'objet Smarty comme dernier param<61>tre.
Les autres param<61>tres d<>pendent de la fonction.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_source</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>string <parameter>&amp;$source</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_timestamp</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>int <parameter>&amp;$timestamp</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_secure</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_trusted</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
La premi<6D>re fonction est suppos<6F>e r<>cup<75>rer la ressource. Son second
param<EFBFBD>tre est une variable pass<73>e par r<>f<EFBFBD>rence o<> le r<>sultat doit <20>tre
stock<EFBFBD>. La fonction est suppos<6F>e retourner <literal>true</literal> si
elle r<>ussit <20> r<>cup<75>rer la ressource et <literal>false</literal> sinon.
</para>
<itemizedlist>
<listitem>
<para>
La premi<6D>re fonction est suppos<6F>e r<EFBFBD>cup<EFBFBD>rer la ressource. Son second
param<61>tre est une variable pass<73>e par r<>f<EFBFBD>rence o<> le r<>sultat doit <20>tre
stock<63>. La fonction est suppos<6F>e retourner &true; si
elle r<>ussit <20> r<>cup<75>rer la ressource et &false; sinon.
</para></listitem>
<para>
La seconde fonction est suppos<6F>e r<>cup<75>rer la date de derni<6E>re modification
de la ressource demand<6E>e (comme un timestamp UNIX). Le second param<61>tre
est une variable pass<73>e par r<>f<EFBFBD>rence dans laquelle la date doit
<20>tre stock<63>e. La fonction est suppos<6F>e renvoyer <literal>true</literal> si elle
r<>ussit <20> r<>cup<75>rer la date et <literal>false</literal> sinon.
</para>
<listitem><para>
La seconde fonction est suppos<6F>e r<>cup<75>rer la date de derni<6E>re modification
de la ressource demand<6E>e (comme un timestamp UNIX). Le second param<61>tre
est une variable pass<73>e par r<>f<EFBFBD>rence dans laquelle la date doit
<20>tre stock<63>e. La fonction est suppos<6F>e renvoyer &true; si elle
r<>ussit <20> r<>cup<75>rer la date et &false; sinon.
</para></listitem>
<para>
La troisi<73>me fonction est suppos<6F>e retourner <literal>true</literal>
ou <literal>false</literal> selon si la ressource demand<6E>e est s<>re
ou non. La fonction est utilis<69>e seulement pour les ressources templates
mais doit tout de m<>me <20>tre d<>finie.
</para>
<listitem><para>
La troisi<73>me fonction est suppos<6F>e retourner &true;
ou &false; selon si la ressource demand<6E>e est s<>re
ou non. La fonction est utilis<69>e seulement pour les ressources templates
mais doit tout de m<>me <20>tre d<>finie.
</para></listitem>
<para>
La quatri<72>me fonction est suppos<6F>e retourner <literal>true</literal>
ou <literal>false</literal> selon si l'on peut faire confiance ou
non <20> la ressource demand<6E>e. Cette fonction est utilis<69>e seulement
pour les composants de scripts PHP demand<6E>s par les balises
<command>include_php</command> ou <command>insert</command>
ayant un attribut <structfield>src</structfield>. Quoiqu'il en soit,
elle doit <20>tre d<>finie pour les ressources templates.
</para>
<listitem><para>
La quatri<72>me fonction est suppos<6F>e retourner &true;
ou &false; selon si l'on peut faire confiance ou
non <20> la ressource demand<6E>e. Cette fonction est utilis<69>e seulement
pour les composants de scripts PHP demand<6E>s par les balises
<link linkend="language.function.include.php">
<varname>{include_php}</varname></link> ou
<link linkend="language.function.insert"><varname>{insert}</varname></link>
ayant un attribut <parameter>src</parameter>. Quoiqu'il en soit,
elle doit <20>tre d<>finie pour les ressources templates.
</para></listitem>
</itemizedlist>
<para>
Lisez <20>galement
<link linkend="api.register.resource">register_resource()</link> et
<link linkend="api.unregister.resource">unregister_resource()</link>.
</para>
<example>
<title>resource plugin</title>
<programlisting role="php">
<example>
<title>resource plugin</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Fichier : resource.db.php
* Type : ressource
* Nom : db
* R<>le : R<>cup<75>re des templates depuis une base de donn<6E>es
* -------------------------------------------------------------
*/
* Smarty plugin
* -------------------------------------------------------------
* Fichier : resource.db.php
* Type : ressource
* Nom : db
* R<>le : R<>cup<75>re des templates depuis une base de donn<6E>es
* -------------------------------------------------------------
*/
function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty)
{
// fait des requ<71>tes BD pour r<>cup<75>rer 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;
}
// fait des requ<71>tes BD pour r<>cup<75>rer 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 requ<71>tes 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;
}
// fait des requ<71>tes 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;
// suppose que tous les templates sont svrs
return true;
}
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
// inutilis<69>e pour les templates
// inutilis<69>e pour les templates
}
?>
]]>
</programlisting>
</example>
<para>
Voir aussi :
<link linkend="api.register.resource">register_resource()</link> et
<link linkend="api.unregister.resource">unregister_resource()</link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
@@ -154,4 +161,4 @@ function smarty_resource_db_trusted($tpl_name, &$smarty)
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
-->

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.writing">
<title>Ecrire des plugins</title>
<para>
@@ -28,9 +29,20 @@ require_once $smarty->_get_plugin_filepath('function', 'html_options');
</programlisting>
<para>
Une r<>gle g<>n<EFBFBD>rale est que chaque objet Smarty est toujours pass<73> au plugin
en tant que dernier param<61>tre (<28> part pour les modificateurs).
en tant que dernier param<61>tre, sauf pour deux exceptions :
</para>
<itemizedlist>
<listitem><para>
les modificateurs ne sont pas pass<73>s du tout <20> l'objet Smarty
</para></listitem>
<listitem><para>
les blocs r<>cup<75>rent le param<61>tre
<parameter>$repeat</parameter> pass<73> apr<70>s l'objet Smarty afin de
conserver une compatibilit<69> avec les anciennes versions de Smarty.
</para></listitem>
</itemizedlist>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
@@ -50,4 +62,4 @@ End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
-->

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.8 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.9 Maintainer: yannick Status: ready -->
<chapter id="smarty.constants">
<title>Constantes</title>
@@ -10,7 +10,7 @@
<para>
Il doit s'agir du <emphasis role="bold">chemin complet</emphasis>
du r<>pertoire o<> se trouvent les fichiers classes de Smarty.
S'il n'est pas d<>fini, Smarty essaiera alors d'en
S'il n'est pas d<>fini dans votre script, Smarty essaiera alors d'en
d<>terminer automatiquement la valeur.
S'il est d<>fini, le chemin <emphasis role="bold">doit se terminer par un slash</emphasis>.
</para>
@@ -20,10 +20,10 @@
<![CDATA[
<?php
// d<>finit le chemin du r<>pertoire de Smarty sur un syst<73>me *nix
define('SMARTY_DIR', '/usr/local/lib/php/Smarty/libs/');
define('SMARTY_DIR', '/usr/local/lib/php/Smarty-v.e.r/libs/');
// d<>finit le chemin du r<>pertoire de Smarty sur un syst<73>me Windows
define('SMARTY_DIR', 'c:/webroot/libs/Smarty/libs/');
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');
// inclut la classe Smarty. Notez le 'S' en majuscule
require_once(SMARTY_DIR . 'Smarty.class.php');
@@ -33,18 +33,18 @@ require_once(SMARTY_DIR . 'Smarty.class.php');
</example>
<para>
Voir aussi
<link linkend="language.variables.smarty.const">$smarty.const</link> et
<link linkend="variable.php.handling">$php_handling constants</link>.
<link linkend="language.variables.smarty.const"><parameter>$smarty.const</parameter></link> et
<link linkend="variable.php.handling"><parameter>$php_handling constants</parameter></link>.
</para>
</sect1>
<sect1 id="constant.smarty.core.dir">
<title>SMARTY_CORE_DIR</title>
<para>
Il doit s'agir du chemin complet du r<>pertoire o<>
Il doit s'agir du <emphasis>chemin complet</emphasis> du r<>pertoire o<>
se trouvent les fichiers internes de Smarty. S'il n'est
pas d<>fini, Smarty placera comme valeur par d<>faut la
valeur de la constante pr<70>c<EFBFBD>dente
<link linkend="constant.smarty.dir">SMARTY_DIR</link>. S'il est
<link linkend="constant.smarty.dir"><constant>SMARTY_DIR</constant></link>. S'il est
d<>fini, le chemin doit se terminer par un slash. Utilisez cette
constante lorsque vous incluez manuellement n'importe
quel fichier core.*.
@@ -65,7 +65,7 @@ require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
<para>
Voir aussi
<link linkend="language.variables.smarty.const">$smarty.const</link>.
<link linkend="language.variables.smarty.const"><parameter>$smarty.const</parameter></link>.
</para>
</sect1>
</chapter>