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,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
-->
-->