sync with EN & typo

This commit is contained in:
yannick
2004-12-26 20:05:31 +00:00
parent ee6a5a5cf2
commit 2504b1b6c4
17 changed files with 579 additions and 452 deletions

View File

@@ -1,4 +1,5 @@
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: yannick Status: ready -->
<!ENTITY SMARTYManual "Smarty - le moteur et compilateur de template PHP">
<!ENTITY SMARTYDesigners "Smarty pour les graphistes">

View File

@@ -0,0 +1,27 @@
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<!ENTITY note.parameter.merge '<note>
<title>Note technique</title>
<para>
Le param<61>tre <parameter>merge</parameter> respecte les cl<63>s du tableau,
donc, si vous fusionnez deux tableaux index<65>s num<75>riquement, ils peuvent
se recouvrir les uns les autres ou aboutir <20> des cl<63>s non s<>quentielles. Ceci
est dif<69>rent de la fonction PHP array_merge() qui <20>limine des cl<63>s num<75>riques
et les renum<75>rote.
</para>
</note>'>
<!ENTITY parameter.compileid '<para>
En tant que troisi<73>me param<61>tre optionnel, vous pouvez passer un
identifiant de compilation <parameter>compile_id</parameter>.
C&#39;est au cas o<> vous voudriez compiler plusieurs versions du
m<>me template, par exemple, pour avoir des templates compil<69>s
pour diff<66>rents langages. Une autre utilit<69> pour l&#39;identifiant de compilation
compile_id est lorsque vous utilisez plus d&#39;un $template_dir mais
seulement un $compile_dir. D<>finissez un <parameter>compile_id</parameter>
s<>par<61> pour chaque $template_dir, sinon, les templates du m<>me nom
s&#39;effaceront. Vous pouvez <20>galement d<>finir la variable
<link linkend="variable.compile.id">$compile_id</link> une seule fois
plut<75>t que de la passer <20> chaque appel <20> la fonction.
</para>'>

View File

@@ -1,5 +1,5 @@
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: didou status: ready -->
<!-- EN-Revision: 1.1 Maintainer: didou Status: ready -->
<!ENTITY livedocs.author 'Auteurs :<br />'>
<!ENTITY livedocs.editors 'Editeurs :<br />'>

View File

@@ -1,17 +1,43 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="caching.groups">
<title>groupes de fichiers de cache</title>
<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-groupes
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.
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, clear_cache(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 compile_id 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>
<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 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").
</para>
<example>
<title>groupes d'identifiants de cache</title>
<programlisting>
<title>Groupes d'identifiants de cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
@@ -25,20 +51,11 @@ $smarty->clear_cache(null,"sports|basketball");
// Inclue donc "sports|basketball" ou "sports|nimportequoi|nimportequoi|..."
$smarty->clear_cache(null,"sports");
$smarty->display('index.tpl',"sports|basketball");</programlisting>
$smarty->display('index.tpl',"sports|basketball");
?>
]]>
</programlisting>
</example>
<note>
<title>Note technique</title>
<para>
Le syst<73>me 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 r<>pertoire "theme/blue". Si vous voulez
faire cela, vous devez les grouper avec un m<>me 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').
</para>
</note>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -57,7 +57,7 @@ $smarty->display('index.tpl',$my_cache_id);
<link linkend="api.clear.cache">clear_cache()</link>.
</para>
<example>
<title>passer un cache_id a is_cached()</title>
<title>Passer un cache_id a is_cached()</title>
<programlisting>
<![CDATA[
require('Smarty.class.php');
@@ -68,9 +68,9 @@ $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);
// 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);
@@ -83,7 +83,7 @@ $smarty->display('index.tpl',$my_cache_id);
a clear_cache().
</para>
<example>
<title>effacement de tous les fichiers de cache pour un identifiant de cache particulier</title>
<title>Effacement de tous les fichiers de cache pour un identifiant de cache particulier</title>
<programlisting>
<![CDATA[
require('Smarty.class.php');

View File

@@ -1,53 +1,60 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="caching.setting.up">
<title>Param<EFBFBD>trer le cache</title>
<para>
La premi<6D>re chose a faire est d'activer le cache. Cela est fait en
La premi<6D>re chose <EFBFBD> faire est d'activer le cache. Cela est fait en
mettant <link linkend="variable.caching">$caching</link> = true
(ou 1).
</para>
<example>
<title>activation du cache</title>
<programlisting>
<title>Activation du cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->display('index.tpl');</programlisting>
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Avec le cache activ<69>, la fonction display('index.tpl') 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> a la r<>utilisation
du template.
</para>
<note>
<title>Note technique</title>
<para>
Les fichiers situ<74>s dans $cache_dir sont nomm<6D>s de la m<>me faton que les templates.
Bien qu'ils aient une extension ".php", ils ne sont pas vraiment ex<65>cutable.
N'<27>ditez surtout pas ces fichiers !
</para>
</note>
display('index.tpl'), le fichier de cache sera pr<70>f<EFBFBD>r<EFBFBD> <EFBFBD> la r<>utilisation
du template.
</para>
<note>
<title>Note technique</title>
<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
d<EFBFBD>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 a chaque fichier de cache en r<>glant
$caching = 2.
Se reporter a la documentation de <link
linkend="variable.cache.lifetime">$cache_lifetime</link> pour plus de
d<>tails.
Les fichiers situ<74>s dans $cache_dir 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 ex<65>cutable.
N'<27>ditez surtout pas ces fichiers !
</para>
<example>
<title>r<EFBFBD>glage individuel de cache_lifetime</title>
<programlisting>
</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
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
$caching = 2.
Se reporter <20> la documentation de <link
linkend="variable.cache.lifetime">$cache_lifetime</link> pour plus de
d<>tails.
</para>
<example>
<title>R<EFBFBD>glage individuel de cache_lifetime</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
@@ -66,45 +73,55 @@ $smarty->display('home.tpl');
// 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');</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
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 covteux, donc,
pour des raisons de performances, mettez ce param<61>tre a false pour une application
en production.
</para>
<example>
<title>activation de $compile_check</title>
<programlisting>
$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
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<EFBFBD>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
en production.
</para>
<example>
<title>Activation de $compile_check</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->compile_check = true;
$smarty->display('index.tpl');</programlisting>
</example>
<para>
Si <link linkend="variable.force.compile">$force_compile</link> est actif,
les fichiers de cache sont toujours reg<65>n<EFBFBD>r<EFBFBD>s. Ceci revient finalement a
d<>sactiver le cache. $force_compile est utilis<69> a des fins de d<>bogage,
un moyen plus efficace de d<>sactiver le cache est de r<>gler
<link linkend="variable.caching">$caching</link> = false (ou 0).
</para>
<para>
La fonction <link linkend="api.is.cached">is_cached()</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
a une base de donn<6E>es, vous pouvez utiliser cette m<>thode plut(t
que $compile_check.
</para>
<example>
<title>utilisation de is_cached()</title>
<programlisting>
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Si <link linkend="variable.force.compile">$force_compile</link> est actif,
les fichiers de cache sont toujours reg<65>n<EFBFBD>r<EFBFBD>s. Ceci revient finalement <20>
d<EFBFBD>sactiver le cache. $force_compile est utilis<69> <20> des fins de d<>bogage,
un moyen plus efficace de d<>sactiver le cache est de r<>gler
<link linkend="variable.caching">$caching</link> = false (ou 0).
</para>
<para>
La fonction <link linkend="api.is.cached">is_cached()</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
<EFBFBD> une base de donn<6E>es, vous pouvez utiliser cette m<>thode plut<75>t
que $compile_check.
</para>
<example>
<title>Exemple avec is_cached()</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
@@ -112,32 +129,37 @@ $smarty->caching = true;
if(!$smarty->is_cached('index.tpl')) {
// pas de cache disponible, on assigne
$contents = get_database_contents();
$smarty->assign($contents);
$contents = get_database_contents();
$smarty->assign($contents);
}
$smarty->display('index.tpl');</programlisting>
</example>
<para>
Vous pouvez rendre dynamiques seulement certaines parties d'une
page avec la fonction de templates <link
linkend="language.function.insert">insert</link>.
Imaginons que toute une page doit <20>tre mise en cache a part
une banni<6E>re en bas a droite. En utilisant une fonction insert pour la
banni<6E>re, vous pouvez garder cet <20>l<EFBFBD>ment dynamique dans le contenu qui
est en cache. Reportez-vous a la documentation
<link linkend="language.function.insert">insert</link> pour plus de d<>tails
et 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 faton
individuelle (ou par groupe) avec la fonction <link
linkend="api.clear.cache">clear_cache()</link>.
</para>
<example>
<title>nettoyage du cache</title>
<programlisting>
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Vous pouvez rendre dynamiques seulement certaines parties d'une
page avec la fonction de template <link
linkend="language.function.insert">insert</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 insert pour la
banni<EFBFBD>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
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
individuelle (ou par groupe) avec la fonction <link
linkend="api.clear.cache">clear_cache()</link>.
</para>
<example>
<title>Nettoyage du cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
@@ -149,9 +171,12 @@ $smarty->clear_all_cache();
// efface le fichier de cache du template 'index.tpl'
$smarty->clear_cache('index.tpl');
$smarty->display('index.tpl');</programlisting>
</example>
</sect1>
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,61 +1,79 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<sect1 id="plugins.block.functions"><title>Fonctions de blocs</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>smarty_block_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>mixed <parameter>$content</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Les fonctions de blocs sont des fonctions de la forme {func} .. {/func}.
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}.
</para>
<para>
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.
</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
contenues dans le tableau associatif <parameter>$params</parameter>.
Vous pouvez acc<63>der a ces valeurs soit directement, par exemple
<varname>$params['start']</varname>, soit en utilisant
<varname>extract($params)</varname> pour les importer dans la table
des symboles. 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 a
<literal>null</literal> 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>
<para>
Si vous imbriqu<71> des fonctions de bloc, il est possible de connaetre
la fonction de bloc parente grGce a la variable <varname>$smarty->_tag_stack</varname>.
Faites un var_dump() dessus et la structure devrait apparaetre.
</para>
<para>
Regardez aussi :
<link linkend="api.register.block">register_block()</link>,
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
<sect1 id="plugins.block.functions">
<title>Fonctions de blocs</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>smarty_block_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>mixed <parameter>$content</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Les fonctions de blocs sont des fonctions de la forme {func} .. {/func}.
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}.
</para>
<para>
Par d<>faut, l'impl<70>mentation de votre fonction est appel<EFBFBD>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>
<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>.
</para>
<example>
<title>fonction de bloc</title>
<programlisting>
&lt;?php
</para>
<example>
<title>Fonction de bloc</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -72,9 +90,12 @@ function smarty_block_translate($params, $content, &amp;$smarty)
// fait une traduction de $content
echo $translation;
}
}</programlisting>
</example>
</sect1>
}
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,36 +1,37 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<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>.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>smarty_compiler_<replaceable>name</replaceable></function></funcdef>
<paramdef>string <parameter>$tag_arg</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Les fonctions de compilation ont deux param<61>tres : une chaene contenant
la balise - en gros, tout, depuis le nom de la fonction jusqu'au d<>limiteur de fin - et
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>,
<!-- EN-Revision: 1.2 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>.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>smarty_compiler_<replaceable>name</replaceable></function></funcdef>
<paramdef>string <parameter>$tag_arg</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Les fonctions de compilation ont deux param<61>tres : une cha<EFBFBD>ne contenant
la balise - en gros, tout, depuis le nom de la fonction jusqu'au d<>limiteur de fin - et
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>
&lt;?php
</para>
<example>
<title>Fonction de compilation simple</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -45,22 +46,28 @@ function smarty_compiler_tplheader($tag_arg, &amp;$smarty)
{
return "\necho '" . $smarty-&gt;_current_file . " compiled at " . date('Y-m-d H:M'). "';";
}
?&gt;</programlisting>
<para>
Cette fonction peut-<2D>tre appel<65> depuis le template comme suivant :
</para>
<programlisting>
?>
]]>
</programlisting>
<para>
Cette fonction peut-<2D>tre appel<65>e depuis le template comme suivant :
</para>
<programlisting>
{* 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 a ta :
</para>
<programlisting>
&lt;php
{tplheader}
</programlisting>
<para>
Le code PHP r<>sultant dans les templates compil<69>s ressemblerait <20> <20>a :
</para>
<programlisting role="php">
<![CDATA[
<?php
echo 'index.tpl compiled at 2002-02-20 20:02';
?&gt;</programlisting>
</example>
</sect1>
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,43 +1,41 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<sect1 id="plugins.functions"><title>Les fonctions de templates</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>smarty_function_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tous les attributs pass<73>s aux fonctions de template a partir du template
sont contenus dans le tableau associatif <parameter>$params</parameter>.
Vous pouvez acc<63>der a ces valeurs soit directement, par exemple
<varname>$params['start']</varname>, soit en utilisant
<varname>extract($params)</varname> pour les importer dans la table
des symboles.
</para>
<para>
Le retour de la fonction sera substitu<74>e a la balise de fonction
du template (fonction <function>fetch</function> par exemple). Sinon,
la fonction peut simplement accomplir une autre tGche sans sortie
(la fonction <function>assign</function> 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 cela.
</para>
<para>
R<>f<EFBFBD>rez-vous aussi a :
<link linkend="api.register.function">register_function()</link>,
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="plugins.functions">
<title>Les fonctions de templates</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>smarty_function_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tous les attributs 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).
</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>
<programlisting>
&lt;?php
</para>
<para>
<example>
<title>Fonction de plugin avec sortie</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -47,7 +45,7 @@
* R<>le : renvoie une phrase magique au hasard
* -------------------------------------------------------------
*/
function smarty_function_eightball($params, &amp;$smarty)
function smarty_function_eightball($params, &$smarty)
{
$answers = array('Yes',
'No',
@@ -59,20 +57,24 @@ function smarty_function_eightball($params, &amp;$smarty)
$result = array_rand($answers);
return $answers[$result];
}
?&gt;</programlisting>
</example>
</para>
<para>
peut <20>tre utilis<69>e dans le template de la faton suivante :
</para>
<programlisting>
?>
]]>
</programlisting>
</example>
</para>
<para>
peut <20>tre utilis<69>e dans le template de la fa<66>on suivante :
</para>
<programlisting>
Question: Will we ever have time travel?
Answer: {eightball}.</programlisting>
<para>
<example>
<title>fonction de plugin sans sortie</title>
<programlisting>
&lt;?php
Answer: {eightball}.
</programlisting>
<para>
<example>
<title>Fonction de plugin sans sortie</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -82,7 +84,7 @@ Answer: {eightball}.</programlisting>
* Purpose : assigne une valeur a une variable de template
* -------------------------------------------------------------
*/
function smarty_function_assign($params, &amp;$smarty)
function smarty_function_assign($params, &$smarty)
{
extract($params);
@@ -98,10 +100,12 @@ function smarty_function_assign($params, &amp;$smarty)
$smarty->assign($var, $value);
}
?&gt;</programlisting>
</example>
</para>
</sect1>
?>
]]>
</programlisting>
</example>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="plugins.howto">
<title>Comment fonctionnent les plugins</title>
<para>
Les plugins sont toujours charg<72>s a la demande. Seuls les modificateurs
Les plugins sont toujours charg<72>s <EFBFBD> la demande. Seuls les modificateurs
de variables, les ressources, etc invoqu<71>s dans les scripts de templates
seront charg<72>s. De plus, chaque plugin n'est charg<72> qu'une fois, et ce
m<>me si vous avez plusieurs instances de Smarty qui tournent dans
@@ -19,9 +19,10 @@
sont ex<65>cut<75>s d<>pend de l'ordre dans lequel ils sont enregistr<74>s ou charg<72>s.
</para>
<para>
Il n'existe qu'un seul r<>pertoire de plugin (pour des raisons de performances).
Pour installer un plugin, copiez-le simplement dans le r<>pertoire et Smarty
l'utilisera automatiquement.
Le <link linkend="variable.plugins.dir">r<EFBFBD>pertoire de plugin</link> peut
<EFBFBD>tre une cha<68>ne de caract<63>res contenant un chemin ou un tableau contenant
de multiples chemins. Pour installer un plugin, placez-le simplement
dans un de ces dossiers et Smarty l'utilisera automatiquement.
</para>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -1,35 +1,34 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<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"><command>insert</command></link>
dans les templates.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>smarty_insert_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Le premier param<61>tre pass<73> a la fonction est une tableau associatif
d'attributs. Vous pouvez acc<63>der a ces valeurs soit directement, par exemple
<varname>$params['start']</varname>, soit en utilisant
<varname>extract($params)</varname> pour les importer dans la table
des symboles.
</para>
<para>
La fonction d'insertion est suppos<6F>e retourner le r<>sultat qui sera
substitu<EFBFBD> a la balise <command>insert</command> dans le template.
</para>
<example>
<title>plugin d'insertion</title>
<programlisting>
&lt;?php
<!-- EN-Revision: 1.2 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"><command>insert</command></link>
dans les templates.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>smarty_insert_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Le premier param<61>tre pass<73> <20> la fonction est une tableau associatif
d'attributs.
</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.
</para>
<example>
<title>Plugin d'insertion</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -40,7 +39,7 @@
* au format
* -------------------------------------------------------------
*/
function smarty_insert_time($params, &amp;$smarty)
function smarty_insert_time($params, &$smarty)
{
if (empty($params['format'])) {
$smarty->trigger_error("insert time: missing 'format' parameter");
@@ -50,8 +49,10 @@ function smarty_insert_time($params, &amp;$smarty)
$datetime = strftime($params['format']);
return $datetime;
}
?&gt;</programlisting>
</example>
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,41 +1,43 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<sect1 id="plugins.modifiers"><title>Modificateurs</title>
<para>
Les modificateurs sont des petites fonctions appliqu<71>es a 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 chaen<65>s entre eux.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>smarty_modifier_<replaceable>name</replaceable></function></funcdef>
<paramdef>mixed <parameter>$value</parameter></paramdef>
<paramdef>[mixed <parameter>$param1</parameter>, ...]</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Le premier param<61>tre pass<73> au modificateur est la valeur
sur laquelle le modificateur est suppos<6F> op<6F>rer. Les autres param<61>tres
peuvent <20>tre optionnels, d<>pendant de quel genre d'op<6F>ration doit <EFBFBD>tre
effectu<EFBFBD>.
</para>
<para>
Le modificateur doit retourner le r<>sultat de son ex<65>cution.
</para>
<para>
Regardez aussi
<link linkend="api.register.modifier">register_modifier()</link>,
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="plugins.modifiers">
<title>Modificateurs</title>
<para>
Les modificateurs sont des 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>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>smarty_modifier_<replaceable>name</replaceable></function></funcdef>
<paramdef>mixed <parameter>$value</parameter></paramdef>
<paramdef>[mixed <parameter>$param1</parameter>, ...]</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Le premier param<61>tre pass<73> au modificateur est la valeur
sur laquelle le modificateur est suppos<6F> op<6F>rer. Les autres param<EFBFBD>tres
peuvent <20>tre optionnels, d<>pendant de quel genre d'op<6F>ration doit <20>tre
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>.
</para>
<example>
<title>Plugin modificateur simple</title>
<para>
Ce plugin est un alias d'une fonction PHP. Il n'a aucun param<61>tre
suppl<70>mentaires.
</para>
<example>
<title>plugin modificateur simple</title>
<para>
Ce plugin est un alias d'une fonction PHP. Il n'a aucun param<61>tre
suppl<70>mentaires.
</para>
<programlisting>
&lt;?php
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -49,13 +51,16 @@ function smarty_modifier_capitalize($string)
{
return ucwords($string);
}
?&gt;</programlisting>
</example>
<para></para>
<example>
<title>un plugin modificateur un peu plus complexe</title>
<programlisting>
&lt;?php
?>
]]>
</programlisting>
</example>
<para></para>
<example>
<title>Un plugin modificateur un peu plus complexe</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -84,9 +89,11 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...',
} else
return $string;
}
?&gt;</programlisting>
</example>
</sect1>
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="plugins.naming.conventions">
<title>Conventions de nommage</title>
<para>
Les fichiers et les fonctions de plugins doivent suivre une convention
de nommage tr<74>s sp<73>cifique pour <20>tre localis<69>s par Smarty.
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 faton suivante :
Les fichiers de plugins doivent <20>tre nomm<6D>s de la fa<EFBFBD>on suivante :
<blockquote>
<para>
<filename>
@@ -18,7 +18,7 @@
</blockquote>
</para>
<para>
O<> <literal>type</literal> est l'une des valeurs suivantes :
O<> <literal>type</literal> est l'une des valeurs suivantes :
<itemizedlist spacing="compact">
<listitem><simpara>function</simpara></listitem>
<listitem><simpara>modifier</simpara></listitem>
@@ -42,7 +42,7 @@
</para>
<para>
Les fonctions de plugins dans les fichiers de plugins doivent <20>tre
nomm<6D>es de la faton suivante :
nomm<6D>es de la fa<EFBFBD>on suivante :
<blockquote>
<para>
<function>smarty_<replaceable>type</replaceable>_<replaceable>nom</replaceable></function>
@@ -54,8 +54,8 @@
que pr<70>c<EFBFBD>demment.
</para>
<para>
Smarty donnera des messages d'erreur appropri<72> si le fichier de plugin
n'est pas trouv<75>, ou si le fichier ou la fonction de plugin ne sont
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>

View File

@@ -1,28 +1,31 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<sect1 id="plugins.outputfilters"><title>Filtres de sortie</title>
<para>
Les plugins de filtres de sortie op<6F>rent sur la sortie du template,
apr<EFBFBD>s que le template a <20>t<EFBFBD> charg<72> et ex<65>cut<75>, mais avant que
la sortie ne soit affich<63>e.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>smarty_outputfilter_<replaceable>name</replaceable></function></funcdef>
<paramdef>string <parameter>$template_output</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Le premier param<61>tre pass<73> a la fonction du filtre de sortie est la
sortie du template qui doit <20>tre modifi<66>e et le second param<61>tre
est l'instance de Smarty appelant le plugin. Le plugin est suppos<EFBFBD>
faire un traitement et en retourner le r<>sultat.
</para>
<example>
<title>plugin de filtre de sortie</title>
<programlisting>
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="plugins.outputfilters">
<title>Filtres de sortie</title>
<para>
Les plugins de filtres de sortie op<6F>rent sur la sortie du template,
apr<70>s que le template a <20>t<EFBFBD> charg<72> et ex<65>cut<75>, mais avant que
la sortie ne soit affich<63>e.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>smarty_outputfilter_<replaceable>name</replaceable></function></funcdef>
<paramdef>string <parameter>$template_output</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Le premier param<61>tre pass<73> <20> la fonction du filtre de sortie est la
sortie du template qui doit <20>tre modifi<66>e et le second param<61>tre
est l'instance de Smarty appelant le plugin. Le plugin est suppos<6F>
faire un traitement et en retourner le r<>sultat.
</para>
<example>
<title>Plugin de filtre de sortie</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -33,13 +36,15 @@
* robots spammers.
* -------------------------------------------------------------
*/
function smarty_outputfilter_protect_email($output, &amp;$smarty)
{
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);
}
</programlisting>
</example>
}
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="plugins.prefilters.postfilters">
<title>filtres de pr<70>-compilation/filtres de post-compilation</title>
<para>
Les filtres de pr<70>-compilation et les filtres de post-compilation ont des concepts tr<74>s
Les filtres de pr<70>-compilation et les filtres de post-compilation ont des concepts tr<74>s
proches. Ils diff<66>rent dans leur ex<65>cution, plus pr<70>cis<69>ment dans le
moment o<> ils sont ex<65>cut<75>s.
moment o<> ils sont ex<65>cut<75>s.
</para>
<funcsynopsis>
<funcprototype>
@@ -17,9 +17,9 @@
</funcsynopsis>
<para>
Les filtres de pr<70>-compilation sont utilis<69>s pour transformer la source d'un template
juste avant la compilation. Le premier param<61>tre pass<73> a la fonction
juste avant la compilation. Le premier param<61>tre pass<73> <EFBFBD> la fonction
de filtre de pr<70>-compilation est la source du template, <20>ventuellement modifi<66>e par
d'autres filtre de pr<70>-compilations. Le plugin est suppos<6F> retourner la source modifi<66>e.
d'autres filtres de pr<70>-compilations. Le plugin est suppos<6F> retourner la source modifi<66>e.
Notez que cette source n'est sauvegard<72>e nulle part, elle est seulement
utilis<69> pour la compilation.
</para>
@@ -32,16 +32,17 @@
</funcsynopsis>
<para>
Les filtres de post-compilation sont utilis<69>s pour modifier la sortie du template
(le code PHP) juste apr<70>s que la compilation a <20>t<EFBFBD> faite mais juste
avant que le template ne soit sauvegard<72> sur le syst<73>me de fichiers.
Le premier param<61>tre pass<73> a la fonction de filtre de post-compilation est le code
du template compil<69>, <20>ventuellement d<>ja modifi<66> par d'autres filtre de post-compilations.
Le plugin est cens<6E> retourner la version modifi<66> du code.
(le code PHP) juste apr<70>s que la compilation a <20>t<EFBFBD> fa<EFBFBD>te mais juste
avant que le template ne soit sauvegard<72> sur le syst<73>me de fichiers.
Le premier param<61>tre pass<73> <EFBFBD> la fonction de filtre de post-compilation est le code
du template compil<69>, <20>ventuellement d<>ja modifi<66> par d'autres filtres de post-compilations.
Le plugin est cens<6E> retourner la version modifi<66>e du code.
</para>
<example>
<title>plugin de filtre de post-compilation</title>
<programlisting>
&lt;?php
<title>Plugin de filtre de post-compilation</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -51,17 +52,19 @@
* R<>le : Passe les balises HTML en minuscules.
* -------------------------------------------------------------
*/
function smarty_prefilter_pre01($source, &amp;$smarty)
function smarty_prefilter_pre01($source, &$smarty)
{
return preg_replace('!&lt;(\w+)[^&gt;]+&gt;!e', 'strtolower("$1")', $source);
return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source);
}
?&gt;</programlisting>
?>
]]>
</programlisting>
</example>
<para></para>
<example>
<title>plugin de filtre de post-compilation</title>
<programlisting>
&lt;?php
<title>Plugin de filtre de post-compilation</title>
<programlisting role="php">
<![CDATA[
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -72,12 +75,14 @@
* du template.
* -------------------------------------------------------------
*/
function smarty_postfilter_post01($compiled, &amp;$smarty)
function smarty_postfilter_post01($compiled, &$smarty)
{
$compiled = "&lt;pre&gt;\n&lt;?php print_r(\$this-&gt;get_template_vars()); ?&gt;\n&lt;/pre&gt;" . $compiled;
$compiled = "<pre>\n<?php print_r(\$this->get_template_vars()); ?>\n</pre>" . $compiled;
return $compiled;
}
?&gt;</programlisting>
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -1,18 +1,17 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.2 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 a Smarty. Quelques exemples
de ressources : bases de donn<6E>es, LDAP, m<>moire partag<61>e, sockets, et ainsi
de suite.
de templates ou des composants de scripts PHP <EFBFBD> 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 retoit 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.
chaque type de ressource. Chaque fonction re<EFBFBD>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>
@@ -40,31 +39,31 @@
</funcsynopsis>
<para>
La premi<6D>re fonction est suppos<6F>e r<>cup<75>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
La premi<6D>re fonction est suppos<6F>e r<>cup<75>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 <literal>true</literal> si
elle r<>ussi a r<>cup<75>rer la ressource et <literal>false</literal> sinon.
elle r<>ussit <20> r<>cup<75>rer la ressource et <literal>false</literal> sinon.
</para>
<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
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
a r<>ussi a r<>cup<75>rer la date et <literal>false</literal> sinon.
r<>ussit <20> r<>cup<75>rer la date et <literal>false</literal> sinon.
</para>
<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 svre
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<EFBFBD>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>
<para>
La quatri<72>me fonction est suppos<6F>e retourner <literal>true</literal>
ou <literal>false</literal> selon si on peut faire confiance ou
non a la ressource demand<6E>e. Cette fonction est utilis<69>e seulement
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 <EFBFBD> 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,
@@ -72,14 +71,15 @@
</para>
<para>
Regardez aussi
<link linkend="api.register.resource">register_resource()</link>,
<link linkend="api.unregister.resource">unregister_resource()</link>.
</para>
<example>
<title>resource plugin</title>
<programlisting>
&lt;?php
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">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
@@ -89,7 +89,7 @@
* R<>le : R<>cup<75>re des templates depuis une base de donn<6E>es
* -------------------------------------------------------------
*/
function smarty_resource_db_source($tpl_name, &amp;$tpl_source, &amp;$smarty)
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
@@ -105,7 +105,7 @@ function smarty_resource_db_source($tpl_name, &amp;$tpl_source, &amp;$smarty)
}
}
function smarty_resource_db_timestamp($tpl_name, &amp;$tpl_timestamp, &amp;$smarty)
function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty)
{
// fait des requ<71>tes BD pour remplir $tpl_timestamp
$sql = new SQL;
@@ -120,19 +120,21 @@ function smarty_resource_db_timestamp($tpl_name, &amp;$tpl_timestamp, &amp;$smar
}
}
function smarty_resource_db_secure($tpl_name, &amp;$smarty)
function smarty_resource_db_secure($tpl_name, &$smarty)
{
// suppose que tous les templates sont svrs
return true;
}
function smarty_resource_db_trusted($tpl_name, &amp;$smarty)
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
// inutilis<69>e pour les templates
}
?&gt;</programlisting>
</example>
</sect1>
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,30 +1,34 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
<sect1 id="plugins.writing">
<title>Ecrire des plugins</title>
<para>
Les plugins peuvent <20>tre soit charg<72>s automatiquement par Smarty
depuis le syst<73>me de fichier, soit <20>tre d<>clar<61>s
depuis le syst<73>me de fichier, soit <20>tre d<>clar<61>s
pendant l'ex<65>cution via une fonction register_* de l'API. Ils peuvent
aussi <20>tre d<>sallou<6F>s en utilisant une fonction unregister_* de
l'API.
</para>
<para>
Pour les plugins qui ne sont pas enregistr<74>s pendant l'ex<65>cution, le nom
des fonctions n'ont pas a suivre la convention de nommage.
des fonctions n'ont pas <EFBFBD> suivre la convention de nommage.
</para>
<para>
Si certaines fonctionnalit<69>s d'un plugin d<>pendent d'un autre plugin
(comme c'est le cas de certains plugins accompagnant Smarty), alors la mani<6E>re appropri<72>e
de charger le plugin est la suivante :
(comme c'est le cas de certains plugins accompagnant Smarty), alors
la mani<6E>re appropri<72>e de charger le plugin est la suivante :
</para>
<programlisting>
require_once SMARTY_DIR . 'plugins/function.html_options.php';</programlisting>
<programlisting role="php">
<![CDATA[
<?php
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 (a part pour les modificateurs).
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 (<EFBFBD> part pour les modificateurs).
</para>
</sect1>
<!-- Keep this comment at the end of the file