sync with EN & typo

This commit is contained in:
yannick
2004-12-26 15:03:10 +00:00
parent 0d8f2cbd36
commit 42fd57727b
12 changed files with 377 additions and 264 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.4 Maintainer: yannick Status: ready -->
<chapter id="advanced.features">
<title>Fonctionnalit<EFBFBD>s avanc<6E>es</title>
&programmers.advanced-features.advanced-features-objects;

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.3 Maintainer: yannick Status: ready -->
<sect1 id="advanced.features.objects">
<title>Objets</title>
<para>
Smarty donne l'acc<63>s aux objets PHP a travers les templates. Il y
Smarty donne l'acc<63>s aux objets PHP <EFBFBD> travers les templates. Il y
a 2 moyens d'y avoir acc<63>s. Le premier consiste a allouer les objets
au template puis de les utiliser avec une syntaxe similaire a celles
des fonctions personnalis<69>es. Le deuxi<78>me moyen consiste a allouer
@@ -28,23 +28,38 @@
d'allocation.
</para>
<para>
Par d<>faut, les param<61>tres pass<73>s aux objets depuis le templates le sont de la
m<>me faton que les fonctions utilisateurs les r<>cup<75>rent.
Le premier param<61>tre correspond a un tableau associatif, le second a l'objet
Smarty. Si vous souhaitez que les param<61>tres soient pass<73>es un a un, comme
Par d<>faut, les param<61>tres pass<73>s aux objets depuis le template le sont de la
m<>me fa<EFBFBD>on que les fonctions utilisateurs les r<>cup<75>rent.
Le premier param<61>tre correspond <EFBFBD> un tableau associatif, le second <EFBFBD> l'objet
Smarty. Si vous souhaitez que les param<61>tres soient pass<73>s un <EFBFBD> un, comme
dans un appel traditionnel, d<>finissez registration, quatri<72>me param<61>tre optionnel,
a false.
<EFBFBD> false.
</para>
<para>
Le cinqui<75>me param<61>tre optionnel n'a d'effet que si le param<61>tre
<parameter>format</parameter> vaut <literal>true</literal> et il contient
une liste de m<>thodes qui doivent <20>tre trait<69>es comme des blocks. Cel<65> signifie
que ces m<>thodes ont un tag fermant dans le template
(<literal>{foobar->meth2}...{/foobar->meth2}</literal>) et que les param<61>tres
de ces m<>thodes fonctionnent de la m<>me fa<66>on que les param<61>tres des blocks
de fonctions des plugins : Ils contiennent 4 param<61>tres
<parameter>$params</parameter>,
<parameter>$content</parameter>,
<parameter>&amp;$smarty</parameter> et
<parameter>&amp;$repeat</parameter> et ils fonctionnent de la m<>me
fa<66>on que les blocks de fonctions des plugins.
</para>
<example>
<title>utilisation d'un objet allou<6F> ou assign<67></title>
<programlisting>
&lt;?php
<title>Utilisation d'un objet allou<6F> ou assign<67></title>
<programlisting role="php">
<![CDATA[
<?php
// la classe
class My_Object() {
function meth1($params, &amp;$smarty_obj) {
return "this is my meth1";
}
function meth1($params, &$smarty_obj) {
return "this is my meth1";
}
}
$myobj = new My_Object;
@@ -59,10 +74,16 @@ $smarty->register_object("foobar",$myobj,null,false);
$smarty->assign_by_ref("myobj", $myobj);
$smarty->display("index.tpl");
?&gt;
TEMPLATE:
?>
?>
]]>
</programlisting>
<para>
Et voici comment acc<63>der <20> vos objets dans index.tpl:
</para>
<programlisting>
<![CDATA[
{* acc<63>s a notre objet enregistr<74> *}
{foobar->meth1 p1="foo" p2=$bar}
@@ -71,7 +92,9 @@ TEMPLATE:
the output was {$output)
{* access our assigned object *}
{$myobj->meth1("foo",$bar)}</programlisting>
{$myobj->meth1("foo",$bar)}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -1,31 +1,33 @@
<?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="advanced.features.outputfilters">
<title>Filtres de sortie</title>
<para>
Quand le template est appel<65> via les fonctions display() ou fetch(),
sa sortie est envoy<6F>e a travers un ou plusieurs filtres de sorties.
Ils diff<66>rent des filtres de post-compilation dans le sens ou ils agissent
sa sortie est envoy<6F>e <EFBFBD> travers un ou plusieurs filtres de sorties.
Ils diff<66>rent des filtres de post-compilation dans le sens o<EFBFBD> ils agissent
sur la sortie des templates, une fois ex<65>cut<75>s, et non sur les sources
des templates.
</para>
<para>
Les filtres de sortie peuvent <20>tre soit
<link linkend="api.register.outputfilter">d<EFBFBD>clar<EFBFBD>s</link> soit
charg<EFBFBD>s depuis les r<>pertoires des plugins en utilisant la fonction
<link linkend="api.load.filter">load_filter()</link>
ou en r<>glant la variable
<link linkend="variable.autoload.filters">$autoload_filters</link>.
Smarty passera la sortie du template en premier argument et attendra
de la fonction qu'elle retourne le r<>sultat de l'ex<65>cution.
</para>
<example>
<title>utilisation d'un filtre de sortie</title>
<programlisting>
&lt;?php
charg<72>s depuis les r<>pertoires des plugins en utilisant la fonction
<link linkend="api.load.filter">load_filter()</link>
ou en r<>glant la variable
<link linkend="variable.autoload.filters">$autoload_filters</link>.
Smarty passera la sortie du template en premier argument et attendra
de la fonction qu'elle retourne le r<>sultat de l'ex<65>cution.
</para>
<example>
<title>Utilisation d'un filtre de sortie</title>
<programlisting>
<![CDATA[
<?php
// mettez ceci dans votre application
function protect_email($tpl_output, &amp;$smarty)
function protect_email($tpl_output, &$smarty)
{
$tpl_output =
preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
@@ -39,9 +41,11 @@ $smarty->display("index.tpl");
// dor<6F>navant toute occurence d'un adresse email dans le r<>sultat du template
// aura un protection simple contre les robots spammers
?&gt;</programlisting>
</example>
</sect1>
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,38 +1,46 @@
<?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="advanced.features.postfilters">
<title>Filtres de post-compilation</title>
<para>
Les filtres de post-compilation sont des fonctions PHP que vos templates
ex<65>cutent apr<70>s avoir <20>t<EFBFBD> compil<69>s. Les filtres de post-compilation peuvent
<20>tre soit <link linkend="api.register.postfilter">d<EFBFBD>clar<EFBFBD>s</link> soit charg<72>s
<20>tre soit <link linkend="api.register.postfilter">d<EFBFBD>clar<EFBFBD>s</link>, soit charg<72>s
depuis les r<>pertoires des plugins en utilisant la fonction
<link linkend="api.load.filter">load_filter()</link> ou en r<>glant
la variable <link linkend="variable.autoload.filters">$autoload_filters</link>.
Smarty passera le template compil<69> en tant que premier param<61>tre et attendra
de la fonction qu'elle retourne le r<>sultat de l'ex<65>cution.
</para>
<example>
<title>utilisation d'un filtre de post-compilation de templates</title>
<programlisting>
&lt;?php
la variable <link linkend="variable.autoload.filters">$autoload_filters</link>.
Smarty passera le template compil<69> en tant que premier param<61>tre et attendra
de la fonction qu'elle retourne le r<>sultat de l'ex<65>cution.
</para>
<example>
<title>Utilisation d'un filtre de post-compilation de templates</title>
<programlisting role="php">
<![CDATA[
<?php
// mettez cela dans votre application
function add_header_comment($tpl_source, &amp;$smarty)
function add_header_comment($tpl_source, &$smarty)
{
return "&lt;?php echo \"&lt;!-- Created by Smarty! --&gt;\n\" ?&gt;\n".$tpl_source;
return "<?php echo \"<!-- Cr<43><72> par Smarty ! -->\n\"; ?>\n".$tpl_source;
}
// enregistre le filtre de post-compilation
$smarty->register_postfilter("add_header_comment");
$smarty->display("index.tpl");
?&gt;
{* template Smarty compil<69> index.tpl *}
&lt;!-- Created by Smarty! --&gt;
{* reste du contenu du template... *}</programlisting>
</example>
</sect1>
?>
]]>
</programlisting>
<para>
Votre template Smarty index.tpl ressemblera, apr<70>s compilation <20> :
</para>
<screen>
<![CDATA[
<!-- Cr<43><72> par Smarty ! -->
{* reste du contenu du template... *}
]]>
</screen>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,6 +1,6 @@
<?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="advanced.features.prefilters">
<title>Filtres de pr<70>-compilation</title>
<para>
@@ -8,51 +8,58 @@
ex<65>cutent avant qu'ils ne soient compil<69>s. Cela peut <20>tre utile
pour pr<70>-traiter vos templates afin d'enlever les commentaires
inutiles, garder un oeil sur ce que les gens mettent dans leurs templates, etc.
</para>
<para>
Les filtre de pr<70>-compilations peuvent <20>tre soit
<link linkend="api.register.prefilter">d<EFBFBD>clar<EFBFBD>s</link> soit charg<72>s
a partir des r<>pertoires de plugins en utilisant la fonction
<link linkend="api.load.filter">load_filter()</link> ou en r<>glant
la variable
<link linkend="variable.autoload.filters">$autoload_filters</link>.
Smarty passera a la fonction le code source en tant que premier argument,
et attendra en retour le code modifi<66>.
</para>
<example>
<title>Utilisation un filtre de pr<70>-compilation de template</title>
<programlisting>
&lt;?php
<link linkend="api.register.prefilter">d<EFBFBD>clar<EFBFBD>s</link>, soit charg<72>s
<EFBFBD> partir des r<>pertoires de plugins en utilisant la fonction
<link linkend="api.load.filter">load_filter()</link> ou en r<>glant
la variable
<link linkend="variable.autoload.filters">$autoload_filters</link>.
</para>
<para>
Smarty passera <20> la fonction le code source en tant que premier argument,
et attendra en retour le code modifi<66>.
</para>
<example>
<title>Utilisation un filtre de pr<70>-compilation de template</title>
<programlisting>
<![CDATA[
<?php
// mettre ceci dans votre application
function remove_dw_comments($tpl_source, &amp;$smarty)
function remove_dw_comments($tpl_source, &$smarty)
{
return preg_replace("/&lt;!--#.*--&gt;/U","",$tpl_source);
return preg_replace("/<!--#.*-->/U","",$tpl_source);
}
// enregistrer le filtre de pr<70>-compilation
$smarty->register_prefilter("remove_dw_comments");
$smarty->display("index.tpl");
?&gt;
{* template Smarty index.tpl *}
&lt;!--# cette ligne va <20>tre supprim<69>e par le filtre de pr<70>-compilation --&gt;</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
?>
]]>
</programlisting>
<para>
Ceci effacera tous les commentaires de la source du template.
</para>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -5,33 +5,33 @@
<title>Fonction de gestion du cache</title>
<para>
Une alternative au m<>canisme de cache par d<>faut (bas<61> sur des fichiers
de cache) consiste a sp<73>cifier une fonction de gestion de cache utilisateur
de cache) consiste <EFBFBD> sp<73>cifier une fonction de gestion de cache utilisateur
qui sera utilis<69>e pour lire, <20>crire et effacer les fichiers de cache.
</para>
<para>
Il suffit de cr<63>er dans votre application une fonction que Smarty
utilisera pour la gestion du cache et d'assigner le nom de cette
fonction a la variable de classe
fonction <EFBFBD> la variable de classe
<link linkend="variable.cache.handler.func">$cache_handler_func</link>.
Smarty utilisera alors cette fonction pour g<>rer les donn<6E>es du cache.
Le premier argument est l'action, qui sera 'read', 'write' ou 'clear'.
Le second param<61>tre est l'objet Smarty. Le troisi<73>me est le contenu
du cache. Pour <20>crire, Smarty passe le contenu du cache dans ces param<61>tres.
Pour lire, Smarty s'attend a ce que votre fonction accepte ce param<61>tre
par r<>f<EFBFBD>rence et que vous le remplissiez avec les donn<6E>es du cache. Pour effacer,
il suffit de passer une variable fictive car cette derni<6E>re n'est pas utilis<69>e.
Le quatri<72>me param<61>tre est le nom du fichier de template (utile pour
lire/<2F>crire), le cinqui<75>me param<61>tre est l'identifiant de cache (optionnel)
et le sixi<78>me est l'identifiant de compilation.
</para>
<para>
Note: Le dernier param<61>tre ($exp_time) a <20>t<EFBFBD> ajout<75> dans Smarty-2.6.0.
</para>
<example>
<title>exemple d'utilisation de MySQL pour la source du cache</title>
<programlisting>
<![CDATA[
<?php
Smarty utilisera alors cette fonction pour g<>rer les donn<6E>es du cache.
Le premier argument est l'action, qui sera 'read', 'write' ou 'clear'.
Le second param<61>tre est l'objet Smarty. Le troisi<73>me est le contenu
du cache. Pour <20>crire, Smarty passe le contenu du cache dans ces param<61>tres.
Pour lire, Smarty s'attend <EFBFBD> ce que votre fonction accepte ce param<61>tre
par r<>f<EFBFBD>rence et que vous le remplissiez avec les donn<6E>es du cache. Pour effacer,
il suffit de passer une variable fictive car cette derni<6E>re n'est pas utilis<69>e.
Le quatri<72>me param<61>tre est le nom du fichier de template (utile pour
lire/<2F>crire), le cinqui<75>me param<61>tre est l'identifiant de cache (optionnel)
et le sixi<78>me est l'identifiant de compilation (optionnel).
</para>
<para>
Note: Le dernier param<61>tre ($exp_time) a <20>t<EFBFBD> ajout<75> dans Smarty-2.6.0.
</para>
<example>
<title>Exemple d'utilisation de MySQL pour la source du cache</title>
<programlisting role="php">
<![CDATA[
<?php
/*
exemple d'usage :
@@ -46,7 +46,7 @@ $smarty->display('index.tpl');
la base mysql est attendu dans ce format :
create database SMARTY_CACHE;
create table CACHE_PAGES(
@@ -58,78 +58,78 @@ CacheContents MEDIUMTEXT NOT NULL
function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null)
{
// l'h(te de la bd, l'utilisateur, et le mot de passe
$db_host = 'localhost';
$db_user = 'myuser';
$db_pass = 'mypass';
$db_name = 'SMARTY_CACHE';
$use_gzip = false;
// cr<63>e un identifiant de cache unique
$CacheID = md5($tpl_file.$cache_id.$compile_id);
if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) {
$smarty_obj->_trigger_error_msg("cache_handler: could not connect to database");
return false;
}
mysql_select_db($db_name);
// l'h<EFBFBD>te de la bd, l'utilisateur, et le mot de passe
$db_host = 'localhost';
$db_user = 'myuser';
$db_pass = 'mypass';
$db_name = 'SMARTY_CACHE';
$use_gzip = false;
// cr<63>e un identifiant de cache unique
$CacheID = md5($tpl_file.$cache_id.$compile_id);
if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) {
$smarty_obj->_trigger_error_msg("cache_handler: could not connect to database");
return false;
}
mysql_select_db($db_name);
switch ($action) {
case 'read':
// r<>cup<75>re le cache dans la base de donn<6E>es
$results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'");
if(!$results) {
$smarty_obj->_trigger_error_msg("cache_handler: query failed.");
}
$row = mysql_fetch_array($results,MYSQL_ASSOC);
if($use_gzip && function_exists("gzuncompress")) {
$cache_content = gzuncompress($row["CacheContents"]);
} else {
$cache_content = $row["CacheContents"];
}
$return = $results;
break;
case 'write':
// sauvegarde le cache dans la base de donn<6E>es
if($use_gzip && function_exists("gzcompress")) {
// compresse le contenu pour gagner de la place
$contents = gzcompress($cache_content);
} else {
$contents = $cache_content;
}
$results = mysql_query("replace into CACHE_PAGES values(
'$CacheID',
'".addslashes($contents)."')
");
if(!$results) {
$smarty_obj->_trigger_error_msg("cache_handler: query failed.");
}
$return = $results;
break;
case 'clear':
// efface les donn<6E>es du cache
if(empty($cache_id) && empty($compile_id) && empty($tpl_file)) {
// les efface toutes
$results = mysql_query("delete from CACHE_PAGES");
} else {
$results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'");
}
if(!$results) {
$smarty_obj->_trigger_error_msg("cache_handler: query failed.");
}
$return = $results;
break;
default:
// erreur, action inconnue
$smarty_obj->_trigger_error_msg("cache_handler: unknown action \"$action\"");
$return = false;
break;
}
mysql_close($link);
return $return;
switch ($action) {
case 'read':
// r<>cup<75>re le cache dans la base de donn<6E>es
$results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'");
if(!$results) {
$smarty_obj->_trigger_error_msg("cache_handler: query failed.");
}
$row = mysql_fetch_array($results,MYSQL_ASSOC);
if($use_gzip && function_exists("gzuncompress")) {
$cache_content = gzuncompress($row["CacheContents"]);
} else {
$cache_content = $row["CacheContents"];
}
$return = $results;
break;
case 'write':
// sauvegarde le cache dans la base de donn<6E>es
if($use_gzip && function_exists("gzcompress")) {
// compresse le contenu pour gagner de la place
$contents = gzcompress($cache_content);
} else {
$contents = $cache_content;
}
$results = mysql_query("replace into CACHE_PAGES values(
'$CacheID',
'".addslashes($contents)."')
");
if(!$results) {
$smarty_obj->_trigger_error_msg("cache_handler: query failed.");
}
$return = $results;
break;
case 'clear':
// efface les donn<6E>es du cache
if(empty($cache_id) && empty($compile_id) && empty($tpl_file)) {
// les efface toutes
$results = mysql_query("delete from CACHE_PAGES");
} else {
$results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'");
}
if(!$results) {
$smarty_obj->_trigger_error_msg("cache_handler: query failed.");
}
$return = $results;
break;
default:
// erreur, action inconnue
$smarty_obj->_trigger_error_msg("cache_handler: unknown action \"$action\"");
$return = false;
break;
}
mysql_close($link);
return $return;
}
?>

View File

@@ -1,52 +1,68 @@
<?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="template.resources">
<title>Ressources</title>
<para>
Les templates peuvent provenir d'une grande vari<72>t<EFBFBD> de ressources. Quand vous
affichez ou r<>cup<75>rez un template, ou quand vous incluez un template
dans un autre template, vous fournissez un type de ressource, suivi
par le chemin appropri<72> et le nom du template.
par le chemin appropri<72> et le nom du template. Si une ressource n'est pas
explicitement donn<6E>e, la valeur de la variable <link
linkend="variable.default.resource.type">$default_resource_type</link>
sera utilis<69>e.
</para>
<sect2 id="templates.from.template.dir">
<title>Templates depuis $template_dir</title>
<para>
Les templates du r<>pertoire $template_dir n'ont pas
besoin d'une ressource template, bien que vous puissiez utiliser
la ressource "file" pour <20>tre coh<6F>rent. Vous n'avez qu'a fournir
la ressource "file" pour <20>tre coh<6F>rent. Vous n'avez qu'<EFBFBD> fournir
le chemin vers le template que vous voulez utiliser, relatif
au r<>pertoire racine $template_dir.
</para>
<example>
<title>Utilisation de templates depuis $template_dir</title>
<programlisting>
// le script PHP
<programlisting role="php">
<![CDATA[
<?php
$smarty->display("index.tpl");
$smarty->display("admin/menu.tpl");
$smarty->display("file:admin/menu.tpl"); // le m<>me que celui ci-dessus
$smarty->display("file:admin/menu.tpl"); // le m<>me que ci-dessus
?>
{* le template Smarty *}
{include file="index.tpl"}
{include file="file:index.tpl"} {* le m<>me que celui ci-dessus *}</programlisting>
{include file="file:index.tpl"} {* le m<>me que ci-dessus *}
]]>
</programlisting>
</example>
</sect2>
<sect2 id="templates.from.any.dir">
<title>Templates a partir de n'importe quel r<>pertoire</title>
<title>Templates <EFBFBD> partir de n'importe quel r<>pertoire</title>
<para>
Les templates en-dehors du r<>pertoire $template_dir n<>cessitent
le type de ressource template, suivi du chemin absolu et du nom du
template.
</para>
<example>
<title>utilisation d'un template depuis n'importe quel r<>pertoire</title>
<programlisting>
// le script PHP
<title>Utilisation d'un template depuis n'importe quel r<>pertoire</title>
<programlisting role="php">
<![CDATA[
<?php
$smarty->display("file:/export/templates/index.tpl");
$smarty->display("file:/path/to/my/templates/menu.tpl");
{* le template Smarty *}
{include file="file:/usr/local/share/templates/navigation.tpl"}</programlisting>
?>
]]>
</programlisting>
<para>
Le template Smarty :
</para>
<programlisting>
<![CDATA[
{include file="file:/usr/local/share/templates/navigation.tpl"}
]]>
</programlisting>
</example>
<sect3 id="templates.windows.filepath">
@@ -55,17 +71,26 @@ $smarty->display("file:/path/to/my/templates/menu.tpl");
Si vous utilisez Windows, les chemins de fichiers sont la plupart
du temps sur un disque identifi<66> par une lettre (c:) au d<>but du chemin.
Assurez-vous de bien mettre "file:" dans le chemin pour <20>viter des
conflits d'espace de nommage et obtenir les r<>sultats escompt<70>s.
conflits d'espace de noms et obtenir les r<>sultats escompt<70>s.
</para>
<example>
<title>utilisation de templates avec des chemins de fichiers Windows</title>
<programlisting>
// le script PHP
<title>Utilisation de templates avec des chemins de fichiers Windows</title>
<programlisting role="php">
<![CDATA[
<?php
$smarty->display("file:C:/export/templates/index.tpl");
$smarty->display("file:F:/path/to/my/templates/menu.tpl");
{* le template Smarty *}
{include file="file:D:/usr/local/share/templates/navigation.tpl"}</programlisting>
?>
]]>
</programlisting>
<para>
Le template Smarty :
</para>
<programlisting>
<![CDATA[
{include file="file:D:/usr/local/share/templates/navigation.tpl"}
]]>
</programlisting>
</example>
</sect3>
</sect2>
@@ -73,15 +98,17 @@ $smarty->display("file:F:/path/to/my/templates/menu.tpl");
<sect2 id="templates.from.elsewhere">
<title>Templates depuis d'autres sources</title>
<para>
Vous pouvez r<>cup<75>rer les templates a partir n'importe quelle
source a laquelle vous avez acc<63>s avec PHP : base de donn<6E>es,
Vous pouvez r<>cup<75>rer les templates <EFBFBD> partir de n'importe quelle
source <EFBFBD> laquelle vous avez acc<63>s avec PHP : base de donn<6E>es,
sockets, LDAP et ainsi de suite. Il suffit d'<27>crire les fonctions
de ressource plugins et de les enregistrer aupr<70>s de Smarty.
</para>
<para>
Reportez-vous a la section <link linkend="plugins.resources">ressource plugins</link>
pour plus d'informations sur les fonctions que vous Otes cens<6E> fournir.
Reportez-vous <EFBFBD> la section <link linkend="plugins.resources">ressource plugins</link>
pour plus d'informations sur les fonctions que vous <EFBFBD>tes cens<6E> fournir.
</para>
<note>
<para>
Notez que vous ne pouvez pas <20>craser la ressource <literal>file</literal> native,
@@ -91,12 +118,12 @@ $smarty->display("file:F:/path/to/my/templates/menu.tpl");
</para>
</note>
<example>
<title>utilisation de ressources utilisateurs</title>
<programlisting>
// le script PHP
<title>Utilisation de ressources utilisateurs</title>
<programlisting role="php">
<![CDATA[
<?php
// mettez ces fonctions quelque part dans votre application
function db_get_template ($tpl_name, &amp;$tpl_source, &amp;$smarty_obj)
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
{
// requ<71>te BD pour r<>cup<75>rer le template
// et remplir $tpl_source
@@ -112,7 +139,7 @@ function db_get_template ($tpl_name, &amp;$tpl_source, &amp;$smarty_obj)
}
}
function db_get_timestamp($tpl_name, &amp;$tpl_timestamp, &amp;$smarty_obj)
function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
{
// requ<71>te BD pour remplir $tpl_timestamp
$sql = new SQL;
@@ -127,13 +154,13 @@ function db_get_timestamp($tpl_name, &amp;$tpl_timestamp, &amp;$smarty_obj)
}
}
function db_get_secure($tpl_name, &amp;$smarty_obj)
function db_get_secure($tpl_name, &$smarty_obj)
{
// on suppose que tous les templates sont svrs
return true;
}
function db_get_trusted($tpl_name, &amp;$smarty_obj)
function db_get_trusted($tpl_name, &$smarty_obj)
{
// pas utilis<69>e pour les templates dans notre cas
}
@@ -146,9 +173,17 @@ $smarty->register_resource("db", array("db_get_template",
// utilise la ressource depuis le script PHP
$smarty->display("db:index.tpl");
{* utilise la ressource depuis le template Smarty *}
{include file="db:/extras/navigation.tpl"}</programlisting>
?>
]]>
</programlisting>
<para>
Le template Smarty :
</para>
<programlisting>
<![CDATA[
{include file="db:/extras/navigation.tpl"}
]]>
</programlisting>
</example>
</sect2>
@@ -156,35 +191,38 @@ $smarty->display("db:index.tpl");
<title>Fonction de gestion de template par d<>faut</title>
<para>
Vous pouvez sp<73>cifier une fonction qui sera utilis<69>e pour
r<>cup<75>rer le contenu d'un template dans le cas o<> le template
r<>cup<75>rer le contenu d'un template dans le cas o<> le template
ne peut pas <20>tre r<>cup<75>r<EFBFBD> depuis sa ressource. Une utilisation possible est
la cr<63>ation de templates a la vol<6F>e.
la cr<63>ation de templates <EFBFBD> la vol<6F>e.
</para>
<example>
<title>utilisation de la fonction de gestion de template par d<>faut</title>
<programlisting>
&lt;?php
<programlisting role="php">
<![CDATA[
<?php
// mettez cette fonction quelque part dans votre application
function make_template ($resource_type, $resource_name, &amp;$template_source, &amp;$template_timestamp, &amp;$smarty_obj)
function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj)
{
if( $resource_type == 'file' ) {
if ( ! is_readable ( $resource_name )) {
// cr<63>e le fichier de template et renvoie le contenu
$template_source = "This is a new template.";
$template_timestamp = time();
$smarty_obj->_write_file($resource_name,$template_source);
return true;
}
} else {
// pas un fichier
return false;
if( $resource_type == 'file' ) {
if ( ! is_readable ( $resource_name )) {
// cr<63>e le fichier de template et renvoie le contenu
$template_source = "Ceci est un nouveau template.";
$template_timestamp = time();
$smarty_obj->_write_file($resource_name,$template_source);
return true;
}
} else {
// pas un fichier
return false;
}
}
// r<>gle la fonction par d<>faut
$smarty->default_template_handler_func = 'make_template';
?&gt;</programlisting>
?>
]]>
</programlisting>
</example>
</sect2>
</sect1>

View File

@@ -1,8 +1,15 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<chapter id="api.functions">
<!-- EN-Revision: 1.8 Maintainer: yannick Status: ready -->
<reference id="api.functions">
<title>M<EFBFBD>thodes</title>
<titleabbrev></titleabbrev>
<partintro>
<section>
<title />
<para></para>
</section>
</partintro>
&programmers.api-functions.api-append;
&programmers.api-functions.api-append-by-ref;
&programmers.api-functions.api-assign;
@@ -42,7 +49,9 @@
&programmers.api-functions.api-unregister-postfilter;
&programmers.api-functions.api-unregister-prefilter;
&programmers.api-functions.api-unregister-resource;
</chapter>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,6 +1,6 @@
<?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 -->
<chapter id="api.variables">
<title>Variables</title>
@@ -11,8 +11,6 @@
&programmers.api-variables.variable-debugging;
&programmers.api-variables.variable-debug-tpl;
&programmers.api-variables.variable-debugging-ctrl;
&programmers.api-variables.variable-global-assign;
&programmers.api-variables.variable-undefined;
&programmers.api-variables.variable-autoload-filters;
&programmers.api-variables.variable-compile-check;
&programmers.api-variables.variable-force-compile;
@@ -35,9 +33,12 @@
&programmers.api-variables.variable-right-delimiter;
&programmers.api-variables.variable-compiler-class;
&programmers.api-variables.variable-request-vars-order;
&programmers.api-variables.variable-request-use-auto-globals;
&programmers.api-variables.variable-error-reporting;
&programmers.api-variables.variable-compile-id;
&programmers.api-variables.variable-use-sub-dirs;
&programmers.api-variables.variable-default-modifiers;
&programmers.api-variables.variable-default-resource-type;
</chapter>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,6 +1,6 @@
<?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 -->
<chapter id="caching">
<title>Cache</title>
<para>
@@ -9,25 +9,26 @@
linkend="api.fetch">fetch()</link> en sauvegardant leur r<>sultat
dans un fichier. Si un fichier de cache est disponible lors d'un appel,
il sera affich<63> sans qu'il ne soit n<>cessaire de reg<65>n<EFBFBD>rer le r<>sultat.
Le syst<73>me de cache
peut acc<63>l<EFBFBD>rer les traitements de faton impressionnante, en particulier les
templates dont la compilation est tr<74>s longue. Comme le r<>sultat de
display() ou de fetch() est dans le cache, un fichier de cache peut
<20>tre compos<6F> de plusieurs fichiers de templates, plusieurs fichiers
Le syst<73>me de cache peut acc<63>l<EFBFBD>rer les traitements de fa<66>on impressionnante,
en particulier les templates dont la compilation est tr<74>s longue. Comme
le r<>sultat de display() ou de fetch() est dans le cache, un fichier de cache
peut <20>tre compos<6F> de plusieurs fichiers de templates, plusieurs fichiers
de configuration, etc.
</para>
<para>
Comme les templates sont dynamiques, il est important de faire attention
a la faton dont les fichiers de cache sont g<>n<EFBFBD>r<EFBFBD>s, et pour combien de temps.
<EFBFBD> la fa<EFBFBD>on dont les fichiers de cache sont g<>n<EFBFBD>r<EFBFBD>s, et pour combien de temps.
Si par exemple vous affichez la page d'accueil de votre site Web dont le
contenu ne change pas souvent, il peut <20>tre int<6E>ressant de mettre cette page
dans le cache pour une heure ou plus. A l'inverse, si vous affichez une page
de m<>t<EFBFBD>o mises a jour toutes les minutes, mettre cette page en cache
de m<>t<EFBFBD>o mise a jour toutes les minutes, mettre cette page en cache
n'a aucun sens.
</para>
&programmers.caching.caching-setting-up;
&programmers.caching.caching-multiple-caches;
&programmers.caching.caching-groups;
&programmers.caching.caching-cacheable;
</chapter>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
<!-- EN-Revision: 1.5 Maintainer: yannick Status: ready -->
<chapter id="plugins">
<title>Etendre Smarty avec des plugins</title>
<para>
La version 2.0 a introduit l'architecture de plugin qui est
utilis<69>e pour pratiquement toute les fonctionnalit<69>s
utilis<69>e pour pratiquement toutes les fonctionnalit<69>s
personnalisables de Smarty. Ceci comprend :
<itemizedlist spacing="compact">
<listitem><simpara>les fonctions</simpara></listitem>
@@ -19,9 +19,9 @@
<listitem><simpara>les insertions</simpara></listitem>
</itemizedlist>
A part pour les ressources, la compatibilit<69> avec les anciennes
fatons d'enregistrer les fonctions de gestion avec l'API register_
fa<EFBFBD>ons d'enregistrer les fonctions de gestion avec l'API register_
est conserv<72>e. Si vous n'avez pas utilis<69> cette API et que vous avez
a la place directement modifi<66> les variables de classes
<EFBFBD> la place directement modifi<66> les variables de classes
<literal>$custom_funcs</literal>, <literal>$custom_mods</literal> et
d'autres, vous devez alors modifier vos scripts pour utiliser
l'API ou convertir vos fonctionnalit<69>s personnalis<69>es en plugins.

View File

@@ -1,20 +1,18 @@
<?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 -->
<chapter id="smarty.constants">
<title>Constantes</title>
<para></para>
<sect1 id="constant.smarty.dir">
<title>SMARTY_DIR</title>
<para>
Il doit s'agir du chemin complet du r<>pertoire o<>
Il doit s'agir du chemin complet du r<>pertoire o<>
se trouvent les fichiers classes de Smarty.
S'il n'est pas d<>fini, Smarty essaiera alors d'en
d<>terminer automatiquement la valeur.
S'il est d<>fini, le chemin doit se terminer par un slash.
</para>
<example>
<title>SMARTY_DIR</title>
<programlisting role="php">
@@ -26,6 +24,30 @@ define("SMARTY_DIR","/usr/local/lib/php/Smarty/");
require_once(SMARTY_DIR."Smarty.class.php");
?>
]]>
</programlisting>
</example>
</sect1>
<sect1 id="constant.smarty.core.dir">
<title>SMARTY_CORE_DIR</title>
<para>
Il doit s'agir du chemin complet du r<>pertoire o<>
se trouvent les fichiers internes de Smarty. S'il n'est
pas d<>fini, Smarty placera comme valeur par d<>faut la
valeur de la constante pr<70>c<EFBFBD>dente SMARTY_DIR. S'il est
d<>fini, le chemin doit se terminer par un slash. Utilisez cette
constante lorsque vous incluez manuellement n'importe
quel fichier core.*.
</para>
<example>
<title>SMARTY_CORE_DIR</title>
<programlisting role="php">
<![CDATA[
<?php
// chargement de core.get_microtime.php
require_once(SMARTY_CORE_DIR."core.get_microtime.php");
?>
]]>
</programlisting>
</example>