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
+1
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">
+27
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ètre <parameter>merge</parameter> respecte les clés du tableau,
donc, si vous fusionnez deux tableaux indexés numériquement, ils peuvent
se recouvrir les uns les autres ou aboutir à des clés non séquentielles. Ceci
est diférent de la fonction PHP array_merge() qui élimine des clés numériques
et les renumérote.
</para>
</note>'>
<!ENTITY parameter.compileid '<para>
En tant que troisième paramè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és
pour différents langages. Une autre utilité 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é pour chaque $template_dir, sinon, les templates du même nom
s&#39;effaceront. Vous pouvez également définir la variable
<link linkend="variable.compile.id">$compile_id</link> une seule fois
plutôt que de la passer à chaque appel à la fonction.
</para>'>
+1 -1
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 />'>
+35 -18
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 élaborés en paramé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érarchie de dossiers.
Par exemple, un groupe de cache "a|b|c" peut être considéré comme
la hié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écifiez un compile_id de cette façon : clear_cache(null,"a|b","foo"),
il sera traité comme un groupe de cache apposé "/a/b/c/foo/". Si vous
spécifiez un nom de template de cette faç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écifié sous un groupe de cache multiple comme
"/a/b/*/foo.tpl", le groupement de cache fonctionne UNIQUEMENT de gauche à droite.
Vous pourriez vouloir grouper vos templates sous un groupe de cache simple
hiérarchisé pour être capable de les effacer comme un groupe.
</para>
<para>
Le groupement de cache ne devrait pas être confondu avec votre hiérarchie
de dossiers de templates, le groupement de cache n'a aucune connaissance
de la façon dont vos templates sont structurés. Donc, par exemple, si
vous avez une structure de template comme "themes/blue/index.tpl" et
que vous voulez être capable d'effacer tous les fichiers de cache pour le thème "blue",
vous devriez créer une structure de groupe de cache qui reflè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é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:
@@ -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');
@@ -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étrer le cache</title>
<para>
La premiére chose a faire est d'activer le cache. Cela est fait en
La première chose à 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é, 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éféré a la réutilisation
du template.
</para>
<note>
<title>Note technique</title>
<para>
Les fichiers situés dans $cache_dir sont nommés de la même faton que les templates.
Bien qu'ils aient une extension ".php", ils ne sont pas vraiment exécutable.
N'éditez surtout pas ces fichiers !
</para>
</note>
display('index.tpl'), le fichier de cache sera préféré à la réutilisation
du template.
</para>
<note>
<title>Note technique</title>
<para>
Tout fichier de cache a une durée de vie limitée déterminé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ée est
dépassée, le cache est regénéré. Il est possible de donner
une duré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és dans $cache_dir sont nommés de la même façon que les templates.
Bien qu'ils aient une extension ".php", ils ne sont pas vraiment exécutable.
N'éditez surtout pas ces fichiers !
</para>
<example>
<title>réglage individuel de cache_lifetime</title>
<programlisting>
</note>
<para>
Tout fichier de cache a une durée de vie limitée déterminé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ée est
dépassée, le cache est regénéré. Il est possible de donner
une durée d'expiration propre à chaque fichier de cache en réglant
$caching = 2.
Se reporter à la documentation de <link
linkend="variable.cache.lifetime">$cache_lifetime</link> pour plus de
détails.
</para>
<example>
<title>Ré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é pour détecter une éventuelle
modification. Si l'un de ces fichiers a été modifié depuis que le fichier de cache a été
généré, le cache est immédiatement regénéré. Ce processus est covteux, donc,
pour des raisons de performances, mettez ce paramé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é pour détecter une éventuelle
modification. Si l'un de ces fichiers a été modifié depuis que le fichier de cache a été
généré, le cache est immédiatement regénéré. Ce processus est couteux, donc,
pour des raisons de performances, mettez ce paramètre à 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énérés. Ceci revient finalement a
désactiver le cache. $force_compile est utilisé 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ête
a une base de donné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énérés. Ceci revient finalement à
désactiver le cache. $force_compile est utilisé à 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ête
à une base de données, vous pouvez utiliser cette méthode plutô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 être mise en cache a part
une banniére en bas a droite. En utilisant une fonction insert pour la
banniére, vous pouvez garder cet élé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 être mise en cache à part
une bannière en bas à droite. En utilisant une fonction insert pour la
bannière, vous pouvez garder cet élément dynamique dans le contenu qui
est en cache. Reportez-vous à 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ç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
@@ -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érent sur les
contenus de ces blocs. Les fonctions de blocs ont la priorité 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émentation de votre fonction est appelé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és par le template aux fonctions de templates sont
contenues dans le tableau associatif <parameter>$params</parameter>.
Vous pouvez accé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és aux attributs de la balise
ouvrante quand c'est la balise fermante qui est exécutée.
</para>
<para>
La valeur de la variable <parameter>$content</parameter> est différente
selon si votre fonction est appelé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
égale au contenu du bloc de template. Notez que le bloc de template
aura déjà été exécuté par Smarty, vous recevrez donc la sortie du
template et non sa source.
</para>
<para>
Si vous imbriqué 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èrent sur les
contenus de ces blocs. Les fonctions de blocs ont la priorité 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émentation de votre fonction est appelé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çon de modifier ce comportement).
</para>
<para>
Seule la balise ouvrante d'une fonction de bloc peut avoir des attributs.
Tous les attributs passés par le template aux fonctions de templates sont
contenus dans le tableau associatif <parameter>$params</parameter>.
Vous pouvez accéder à ces valeurs directement par
<varname>$params['start']</varname>.
Votre fonction a aussi accès aux attributs de la balise
ouvrante quand c'est la balise fermante qui est exécutée.
</para>
<para>
La valeur de la variable <parameter>$content</parameter> est différente
selon si votre fonction est appelée pour la balise ouvrante ou la
balise fermante. Si c'est pour la balise ouvrante, elle sera à
<literal>null</literal> et si c'est la balise fermante, elle sera
égale au contenu du bloc de template. Notez que le bloc de template
aura déjà été exécuté par Smarty, vous recevrez donc la sortie du
template et non sa source.
</para>
<para>
Le paramètre <parameter>&amp;$repeat</parameter> est passé
par référence à la fonction d'implémentation et fournit la possibilité
de contrôler le nombre d'affichage du bloc. Par défaut,
<parameter>$repeat</parameter> vaut <literal>true</literal>
lors du premier appel à la fonction de bloc (le bloc d'ouverture du tag) et
<literal>false</literal> lors de tous les autres appels à la fonction
de bloc (le bloc de fermeture du tag). Chaque fois que la fonction
d'implémentation retourne avec le paramètre
<parameter>&amp;$repeat</parameter> vallant true, le contenu situé
entre {func} .. {/func} est évalué et la fonction d'implémentation est appelé
une nouvelle fois avec le nouveau bloc de contenu en tant que paramètre
<parameter>$content</parameter>.
</para>
<para>
Si vous imbriqué des fonctions de bloc, il est possible de connaître
la fonction de bloc parente grâce à la variable <varname>$smarty->_tag_stack</varname>.
Faîtes un var_dump() dessus et la structure devrait apparaî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
@@ -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é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ée ont le même
nom, la fonction de compilation a priorité.
</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é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ées retourner le code PHP qui doit être
injecté dans le template compilé.
</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é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ée ont le même nom, la fonction de compilation a priorité.
</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ètres : une chaî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ées retourner le code PHP qui doit être
injecté dans le template compilé.
</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-être appelé depuis le template comme suivant :
</para>
<programlisting>
?>
]]>
</programlisting>
<para>
Cette fonction peut-être appelée depuis le template comme suivant :
</para>
<programlisting>
{* cette fonction n'est executée que lors de la compilation *}
{tplheader}</programlisting>
<para>
Le code PHP résultant dans les templates compilés ressemblerait a ta :
</para>
<programlisting>
&lt;php
{tplheader}
</programlisting>
<para>
Le code PHP résultant dans les templates compilés ressemblerait à ç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
@@ -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és aux fonctions de template a partir du template
sont contenus dans le tableau associatif <parameter>$params</parameter>.
Vous pouvez accé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é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és fournies par Smarty, elle peut recevoir un
objet <parameter>$smarty</parameter> pour cela.
</para>
<para>
Réfé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és aux fonctions de template à partir du template
sont contenus dans le tableau associatif <parameter>$params</parameter>.
</para>
<para>
Le retour de la fonction sera substituée à 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és fournies par Smarty, elle peut recevoir un
objet <parameter>$smarty</parameter> pour celà.
</para>
<para>
Référez-vous aussi à :
<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 être utilisée dans le template de la faton suivante :
</para>
<programlisting>
?>
]]>
</programlisting>
</example>
</para>
<para>
peut être utilisée dans le template de la faç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
@@ -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és a la demande. Seuls les modificateurs
Les plugins sont toujours chargés à la demande. Seuls les modificateurs
de variables, les ressources, etc invoqués dans les scripts de templates
seront chargés. De plus, chaque plugin n'est chargé qu'une fois, et ce
même si vous avez plusieurs instances de Smarty qui tournent dans
@@ -19,9 +19,10 @@
sont exécutés dépend de l'ordre dans lequel ils sont enregistrés ou chargé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épertoire de plugin</link> peut
être une chaîne de caractè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
+34 -33
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és pour implémenter les fonctions
qui sont appelé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étre passé a la fonction est une tableau associatif
d'attributs. Vous pouvez accé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ée retourner le résultat qui sera
substitué 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és pour implémenter les fonctions
qui sont appelé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étre passé à la fonction est une tableau associatif
d'attributs.
</para>
<para>
La fonction d'insertion est supposée retourner le résultat qui sera
substitué à 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:
@@ -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ées a une variable
de template avant qu'elle ne soit affichée ou utilisée dans un autre contexte.
Les modificateurs peuvent être chaené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étre passé au modificateur est la valeur
sur laquelle le modificateur est supposé opérer. Les autres paramétres
peuvent être optionnels, dépendant de quel genre d'opération doit être
effectué.
</para>
<para>
Le modificateur doit retourner le résultat de son exé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ées à une variable
de template avant qu'elle ne soit affichée ou utilisée dans un autre contexte.
Les modificateurs peuvent être chaîné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ètre passé au modificateur est la valeur
sur laquelle le modificateur est supposé opérer. Les autres paramétres
peuvent être optionnels, dépendant de quel genre d'opération doit être
effectué.
</para>
<para>
Le modificateur doit retourner le résultat de son exécution.
</para>
<para>
Lisez é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ètre
supplémentaires.
</para>
<example>
<title>plugin modificateur simple</title>
<para>
Ce plugin est un alias d'une fonction PHP. Il n'a aucun paramétre
supplé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
@@ -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és spécifique pour être localisés par Smarty.
de nommage très spécifique pour être localisés par Smarty.
</para>
<para>
Les fichiers de plugins doivent être nommés de la faton suivante :
Les fichiers de plugins doivent être nommés de la faç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 être
nommées de la faton suivante :
nommées de la façon suivante :
<blockquote>
<para>
<function>smarty_<replaceable>type</replaceable>_<replaceable>nom</replaceable></function>
@@ -54,8 +54,8 @@
que précédemment.
</para>
<para>
Smarty donnera des messages d'erreur approprié si le fichier de plugin
n'est pas trouvé, ou si le fichier ou la fonction de plugin ne sont
Smarty donnera des messages d'erreurs appropriés si le fichier de plugin
n'est pas trouvé ou si le fichier ou la fonction de plugin ne sont
pas nommés correctement.
</para>
</sect1>
@@ -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érent sur la sortie du template,
aprés que le template a été chargé et exécuté, mais avant que
la sortie ne soit affiché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étre passé a la fonction du filtre de sortie est la
sortie du template qui doit être modifiée et le second paramétre
est l'instance de Smarty appelant le plugin. Le plugin est supposé
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èrent sur la sortie du template,
après que le template a été chargé et exécuté, mais avant que
la sortie ne soit affiché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ètre passé à la fonction du filtre de sortie est la
sortie du template qui doit être modifiée et le second paramètre
est l'instance de Smarty appelant le plugin. Le plugin est supposé
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:
@@ -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é-compilation/filtres de post-compilation</title>
<para>
Les filtres de pré-compilation et les filtres de post-compilation ont des concepts trés
Les filtres de pré-compilation et les filtres de post-compilation ont des concepts très
proches. Ils différent dans leur exécution, plus précisément dans le
moment oú ils sont exécutés.
moment où ils sont exécutés.
</para>
<funcsynopsis>
<funcprototype>
@@ -17,9 +17,9 @@
</funcsynopsis>
<para>
Les filtres de pré-compilation sont utilisés pour transformer la source d'un template
juste avant la compilation. Le premier paramétre passé a la fonction
juste avant la compilation. Le premier paramètre passé à la fonction
de filtre de pré-compilation est la source du template, éventuellement modifiée par
d'autres filtre de pré-compilations. Le plugin est supposé retourner la source modifiée.
d'autres filtres de pré-compilations. Le plugin est supposé retourner la source modifiée.
Notez que cette source n'est sauvegardée nulle part, elle est seulement
utilisé pour la compilation.
</para>
@@ -32,16 +32,17 @@
</funcsynopsis>
<para>
Les filtres de post-compilation sont utilisés pour modifier la sortie du template
(le code PHP) juste aprés que la compilation a été faite mais juste
avant que le template ne soit sauvegardé sur le systéme de fichiers.
Le premier paramétre passé a la fonction de filtre de post-compilation est le code
du template compilé, éventuellement déja modifié par d'autres filtre de post-compilations.
Le plugin est censé retourner la version modifié du code.
(le code PHP) juste après que la compilation a été faîte mais juste
avant que le template ne soit sauvegardé sur le système de fichiers.
Le premier paramètre passé à la fonction de filtre de post-compilation est le code
du template compilé, éventuellement déja modifié par d'autres filtres de post-compilations.
Le plugin est censé retourner la version modifié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
@@ -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érique de fournir des sources
de templates ou des composants de scripts PHP a Smarty. Quelques exemples
de ressources : bases de données, LDAP, mémoire partagée, sockets, et ainsi
de suite.
de templates ou des composants de scripts PHP à Smarty. Quelques exemples
de ressources : bases de données, LDAP, mémoire partagée, sockets, etc.
</para>
<para>
Il y au total 4 fonctions qui ont besoin d'être enregistrées pour
chaque type de ressource. Chaque fonction retoit le nom de la ressource demandée
comme premier paramétre et l'objet Smarty comme dernier paramétre.
Les autres paramétres dépendent de la fonction.
chaque type de ressource. Chaque fonction reçoit le nom de la ressource demandée
comme premier paramètre et l'objet Smarty comme dernier paramètre.
Les autres paramètres dépendent de la fonction.
</para>
<funcsynopsis>
<funcprototype>
@@ -40,31 +39,31 @@
</funcsynopsis>
<para>
La premiére fonction est supposée récupérer la ressource. Son second
paramétre est une variable passée par référence oú le résultat doit être
La première fonction est supposée récupérer la ressource. Son second
paramètre est une variable passée par référence où le résultat doit être
stocké. La fonction est supposée retourner <literal>true</literal> si
elle réussi a récupérer la ressource et <literal>false</literal> sinon.
elle réussit à récupérer la ressource et <literal>false</literal> sinon.
</para>
<para>
La seconde fonction est supposée récupérer la date de derniére modification
de la ressource demandée (comme un timestamp UNIX). Le second paramétre
La seconde fonction est supposée récupérer la date de dernière modification
de la ressource demandée (comme un timestamp UNIX). Le second paramètre
est une variable passée par référence dans laquelle la date doit
être stockée. La fonction est supposée renvoyer <literal>true</literal> si elle
a réussi a récupérer la date et <literal>false</literal> sinon.
réussit à récupérer la date et <literal>false</literal> sinon.
</para>
<para>
La troisiéme fonction est supposée retourner <literal>true</literal>
ou <literal>false</literal> selon si la ressource demandée est svre
La troisième fonction est supposée retourner <literal>true</literal>
ou <literal>false</literal> selon si la ressource demandée est sûre
ou non. La fonction est utilisée seulement pour les ressources templates
mais doit tout de même être définie.
</para>
<para>
La quatriéme fonction est supposée retourner <literal>true</literal>
ou <literal>false</literal> selon si on peut faire confiance ou
non a la ressource demandée. Cette fonction est utilisée seulement
La quatrième fonction est supposée retourner <literal>true</literal>
ou <literal>false</literal> selon si l'on peut faire confiance ou
non à la ressource demandée. Cette fonction est utilisée seulement
pour les composants de scripts PHP demandé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 é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ére des templates depuis une base de donné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êtes BD pour récupé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ê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ée pour les templates
}
?&gt;</programlisting>
</example>
</sect1>
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
+14 -10
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 être soit chargés automatiquement par Smarty
depuis le systéme de fichier, soit être déclarés
depuis le système de fichier, soit être déclarés
pendant l'exécution via une fonction register_* de l'API. Ils peuvent
aussi être désalloués en utilisant une fonction unregister_* de
l'API.
</para>
<para>
Pour les plugins qui ne sont pas enregistrés pendant l'exécution, le nom
des fonctions n'ont pas a suivre la convention de nommage.
des fonctions n'ont pas à suivre la convention de nommage.
</para>
<para>
Si certaines fonctionnalités d'un plugin dépendent d'un autre plugin
(comme c'est le cas de certains plugins accompagnant Smarty), alors la maniére appropriée
de charger le plugin est la suivante :
(comme c'est le cas de certains plugins accompagnant Smarty), alors
la maniére approprié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érale est que chaque objet Smarty est toujours passé au plugin
en tant que dernier paramétre (a part pour les modificateurs).
Une règle générale est que chaque objet Smarty est toujours passé au plugin
en tant que dernier paramètre (à part pour les modificateurs).
</para>
</sect1>
<!-- Keep this comment at the end of the file