mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-06 11:24:27 +02:00
sync with EN & typo
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.4 Maintainer: yannick Status: ready -->
|
||||||
<chapter id="advanced.features">
|
<chapter id="advanced.features">
|
||||||
<title>Fonctionnalit<EFBFBD>s avanc<6E>es</title>
|
<title>Fonctionnalit<EFBFBD>s avanc<6E>es</title>
|
||||||
&programmers.advanced-features.advanced-features-objects;
|
&programmers.advanced-features.advanced-features-objects;
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
|
||||||
<sect1 id="advanced.features.objects">
|
<sect1 id="advanced.features.objects">
|
||||||
<title>Objets</title>
|
<title>Objets</title>
|
||||||
<para>
|
<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
|
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
|
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
|
des fonctions personnalis<69>es. Le deuxi<78>me moyen consiste a allouer
|
||||||
@@ -28,23 +28,38 @@
|
|||||||
d'allocation.
|
d'allocation.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Par d<>faut, les param<61>tres pass<73>s aux objets depuis le templates le sont de la
|
Par d<>faut, les param<61>tres pass<73>s aux objets depuis le template le sont de la
|
||||||
m<>me faton que les fonctions utilisateurs les r<>cup<75>rent.
|
m<>me fa<EFBFBD>on que les fonctions utilisateurs les r<>cup<75>rent.
|
||||||
Le premier param<61>tre correspond a un tableau associatif, le second a l'objet
|
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>es un a un, comme
|
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,
|
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>&$smarty</parameter> et
|
||||||
|
<parameter>&$repeat</parameter> et ils fonctionnent de la m<>me
|
||||||
|
fa<66>on que les blocks de fonctions des plugins.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>utilisation d'un objet allou<6F> ou assign<67></title>
|
<title>Utilisation d'un objet allou<6F> ou assign<67></title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
<?php
|
<![CDATA[
|
||||||
|
<?php
|
||||||
// la classe
|
// la classe
|
||||||
|
|
||||||
class My_Object() {
|
class My_Object() {
|
||||||
function meth1($params, &$smarty_obj) {
|
function meth1($params, &$smarty_obj) {
|
||||||
return "this is my meth1";
|
return "this is my meth1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$myobj = new My_Object;
|
$myobj = new My_Object;
|
||||||
@@ -59,10 +74,16 @@ $smarty->register_object("foobar",$myobj,null,false);
|
|||||||
$smarty->assign_by_ref("myobj", $myobj);
|
$smarty->assign_by_ref("myobj", $myobj);
|
||||||
|
|
||||||
$smarty->display("index.tpl");
|
$smarty->display("index.tpl");
|
||||||
?>
|
?>
|
||||||
|
|
||||||
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> *}
|
{* acc<63>s a notre objet enregistr<74> *}
|
||||||
{foobar->meth1 p1="foo" p2=$bar}
|
{foobar->meth1 p1="foo" p2=$bar}
|
||||||
|
|
||||||
@@ -71,7 +92,9 @@ TEMPLATE:
|
|||||||
the output was {$output)
|
the output was {$output)
|
||||||
|
|
||||||
{* access our assigned object *}
|
{* access our assigned object *}
|
||||||
{$myobj->meth1("foo",$bar)}</programlisting>
|
{$myobj->meth1("foo",$bar)}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
|
@@ -1,31 +1,33 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
|
||||||
<sect1 id="advanced.features.outputfilters">
|
<sect1 id="advanced.features.outputfilters">
|
||||||
<title>Filtres de sortie</title>
|
<title>Filtres de sortie</title>
|
||||||
<para>
|
<para>
|
||||||
Quand le template est appel<65> via les fonctions display() ou fetch(),
|
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.
|
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 ou ils agissent
|
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
|
sur la sortie des templates, une fois ex<65>cut<75>s, et non sur les sources
|
||||||
des templates.
|
des templates.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Les filtres de sortie peuvent <20>tre soit
|
Les filtres de sortie peuvent <20>tre soit
|
||||||
<link linkend="api.register.outputfilter">d<EFBFBD>clar<EFBFBD>s</link> 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
|
charg<72>s depuis les r<>pertoires des plugins en utilisant la fonction
|
||||||
<link linkend="api.load.filter">load_filter()</link>
|
<link linkend="api.load.filter">load_filter()</link>
|
||||||
ou en r<>glant la variable
|
ou en r<>glant la variable
|
||||||
<link linkend="variable.autoload.filters">$autoload_filters</link>.
|
<link linkend="variable.autoload.filters">$autoload_filters</link>.
|
||||||
Smarty passera la sortie du template en premier argument et attendra
|
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.
|
de la fonction qu'elle retourne le r<>sultat de l'ex<65>cution.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>utilisation d'un filtre de sortie</title>
|
<title>Utilisation d'un filtre de sortie</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
<?php
|
<![CDATA[
|
||||||
|
<?php
|
||||||
// mettez ceci dans votre application
|
// mettez ceci dans votre application
|
||||||
function protect_email($tpl_output, &$smarty)
|
function protect_email($tpl_output, &$smarty)
|
||||||
{
|
{
|
||||||
$tpl_output =
|
$tpl_output =
|
||||||
preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
|
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
|
// dor<6F>navant toute occurence d'un adresse email dans le r<>sultat du template
|
||||||
// aura un protection simple contre les robots spammers
|
// aura un protection simple contre les robots spammers
|
||||||
?></programlisting>
|
?>
|
||||||
</example>
|
]]>
|
||||||
</sect1>
|
</programlisting>
|
||||||
|
</example>
|
||||||
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
Local variables:
|
Local variables:
|
||||||
mode: sgml
|
mode: sgml
|
||||||
|
@@ -1,38 +1,46 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
|
||||||
<sect1 id="advanced.features.postfilters">
|
<sect1 id="advanced.features.postfilters">
|
||||||
<title>Filtres de post-compilation</title>
|
<title>Filtres de post-compilation</title>
|
||||||
<para>
|
<para>
|
||||||
Les filtres de post-compilation sont des fonctions PHP que vos templates
|
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
|
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
|
depuis les r<>pertoires des plugins en utilisant la fonction
|
||||||
<link linkend="api.load.filter">load_filter()</link> ou en r<>glant
|
<link linkend="api.load.filter">load_filter()</link> ou en r<>glant
|
||||||
la variable <link linkend="variable.autoload.filters">$autoload_filters</link>.
|
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
|
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.
|
de la fonction qu'elle retourne le r<>sultat de l'ex<65>cution.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>utilisation d'un filtre de post-compilation de templates</title>
|
<title>Utilisation d'un filtre de post-compilation de templates</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
<?php
|
<![CDATA[
|
||||||
|
<?php
|
||||||
// mettez cela dans votre application
|
// mettez cela dans votre application
|
||||||
function add_header_comment($tpl_source, &$smarty)
|
function add_header_comment($tpl_source, &$smarty)
|
||||||
{
|
{
|
||||||
return "<?php echo \"<!-- Created by Smarty! -->\n\" ?>\n".$tpl_source;
|
return "<?php echo \"<!-- Cr<43><72> par Smarty ! -->\n\"; ?>\n".$tpl_source;
|
||||||
}
|
}
|
||||||
|
|
||||||
// enregistre le filtre de post-compilation
|
// enregistre le filtre de post-compilation
|
||||||
$smarty->register_postfilter("add_header_comment");
|
$smarty->register_postfilter("add_header_comment");
|
||||||
$smarty->display("index.tpl");
|
$smarty->display("index.tpl");
|
||||||
?>
|
?>
|
||||||
|
]]>
|
||||||
{* template Smarty compil<69> index.tpl *}
|
</programlisting>
|
||||||
<!-- Created by Smarty! -->
|
<para>
|
||||||
{* reste du contenu du template... *}</programlisting>
|
Votre template Smarty index.tpl ressemblera, apr<70>s compilation <20> :
|
||||||
</example>
|
</para>
|
||||||
</sect1>
|
<screen>
|
||||||
|
<![CDATA[
|
||||||
|
<!-- Cr<43><72> par Smarty ! -->
|
||||||
|
{* reste du contenu du template... *}
|
||||||
|
]]>
|
||||||
|
</screen>
|
||||||
|
</example>
|
||||||
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
Local variables:
|
Local variables:
|
||||||
mode: sgml
|
mode: sgml
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.2 Maintainer: yannick Status: ready -->
|
||||||
<sect1 id="advanced.features.prefilters">
|
<sect1 id="advanced.features.prefilters">
|
||||||
<title>Filtres de pr<70>-compilation</title>
|
<title>Filtres de pr<70>-compilation</title>
|
||||||
<para>
|
<para>
|
||||||
@@ -8,51 +8,58 @@
|
|||||||
ex<65>cutent avant qu'ils ne soient compil<69>s. Cela peut <20>tre utile
|
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
|
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.
|
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
|
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
|
<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
|
<EFBFBD> partir des r<>pertoires de plugins en utilisant la fonction
|
||||||
<link linkend="api.load.filter">load_filter()</link> ou en r<>glant
|
<link linkend="api.load.filter">load_filter()</link> ou en r<>glant
|
||||||
la variable
|
la variable
|
||||||
<link linkend="variable.autoload.filters">$autoload_filters</link>.
|
<link linkend="variable.autoload.filters">$autoload_filters</link>.
|
||||||
Smarty passera a la fonction le code source en tant que premier argument,
|
</para>
|
||||||
et attendra en retour le code modifi<66>.
|
<para>
|
||||||
</para>
|
Smarty passera <20> la fonction le code source en tant que premier argument,
|
||||||
<example>
|
et attendra en retour le code modifi<66>.
|
||||||
<title>Utilisation un filtre de pr<70>-compilation de template</title>
|
</para>
|
||||||
<programlisting>
|
<example>
|
||||||
<?php
|
<title>Utilisation un filtre de pr<70>-compilation de template</title>
|
||||||
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
|
<?php
|
||||||
// mettre ceci dans votre application
|
// mettre ceci dans votre application
|
||||||
function remove_dw_comments($tpl_source, &$smarty)
|
function remove_dw_comments($tpl_source, &$smarty)
|
||||||
{
|
{
|
||||||
return preg_replace("/<!--#.*-->/U","",$tpl_source);
|
return preg_replace("/<!--#.*-->/U","",$tpl_source);
|
||||||
}
|
}
|
||||||
|
|
||||||
// enregistrer le filtre de pr<70>-compilation
|
// enregistrer le filtre de pr<70>-compilation
|
||||||
$smarty->register_prefilter("remove_dw_comments");
|
$smarty->register_prefilter("remove_dw_comments");
|
||||||
$smarty->display("index.tpl");
|
$smarty->display("index.tpl");
|
||||||
?>
|
?>
|
||||||
|
]]>
|
||||||
{* template Smarty index.tpl *}
|
</programlisting>
|
||||||
<!--# cette ligne va <20>tre supprim<69>e par le filtre de pr<70>-compilation --></programlisting>
|
<para>
|
||||||
</example>
|
Ceci effacera tous les commentaires de la source du template.
|
||||||
</sect1>
|
</para>
|
||||||
<!-- Keep this comment at the end of the file
|
</example>
|
||||||
Local variables:
|
</sect1>
|
||||||
mode: sgml
|
<!-- Keep this comment at the end of the file
|
||||||
sgml-omittag:t
|
Local variables:
|
||||||
sgml-shorttag:t
|
mode: sgml
|
||||||
sgml-minimize-attributes:nil
|
sgml-omittag:t
|
||||||
sgml-always-quote-attributes:t
|
sgml-shorttag:t
|
||||||
sgml-indent-step:1
|
sgml-minimize-attributes:nil
|
||||||
sgml-indent-data:t
|
sgml-always-quote-attributes:t
|
||||||
indent-tabs-mode:nil
|
sgml-indent-step:1
|
||||||
sgml-parent-document:nil
|
sgml-indent-data:t
|
||||||
sgml-default-dtd-file:"../../../../manual.ced"
|
indent-tabs-mode:nil
|
||||||
sgml-exposed-tags:nil
|
sgml-parent-document:nil
|
||||||
sgml-local-catalogs:nil
|
sgml-default-dtd-file:"../../../../manual.ced"
|
||||||
sgml-local-ecat-files:nil
|
sgml-exposed-tags:nil
|
||||||
End:
|
sgml-local-catalogs:nil
|
||||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
sgml-local-ecat-files:nil
|
||||||
vim: et tw=78 syn=sgml
|
End:
|
||||||
vi: ts=1 sw=1
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||||
-->
|
vim: et tw=78 syn=sgml
|
||||||
|
vi: ts=1 sw=1
|
||||||
|
-->
|
||||||
|
@@ -5,33 +5,33 @@
|
|||||||
<title>Fonction de gestion du cache</title>
|
<title>Fonction de gestion du cache</title>
|
||||||
<para>
|
<para>
|
||||||
Une alternative au m<>canisme de cache par d<>faut (bas<61> sur des fichiers
|
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.
|
qui sera utilis<69>e pour lire, <20>crire et effacer les fichiers de cache.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Il suffit de cr<63>er dans votre application une fonction que Smarty
|
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
|
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>.
|
<link linkend="variable.cache.handler.func">$cache_handler_func</link>.
|
||||||
Smarty utilisera alors cette fonction pour g<>rer les donn<6E>es du cache.
|
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 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
|
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.
|
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
|
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,
|
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.
|
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
|
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)
|
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.
|
et le sixi<78>me est l'identifiant de compilation (optionnel).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Note: Le dernier param<61>tre ($exp_time) a <20>t<EFBFBD> ajout<75> dans Smarty-2.6.0.
|
Note: Le dernier param<61>tre ($exp_time) a <20>t<EFBFBD> ajout<75> dans Smarty-2.6.0.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>exemple d'utilisation de MySQL pour la source du cache</title>
|
<title>Exemple d'utilisation de MySQL pour la source du cache</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
|
|
||||||
exemple d'usage :
|
exemple d'usage :
|
||||||
@@ -46,7 +46,7 @@ $smarty->display('index.tpl');
|
|||||||
|
|
||||||
|
|
||||||
la base mysql est attendu dans ce format :
|
la base mysql est attendu dans ce format :
|
||||||
|
|
||||||
create database SMARTY_CACHE;
|
create database SMARTY_CACHE;
|
||||||
|
|
||||||
create table CACHE_PAGES(
|
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)
|
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
|
// l'h<EFBFBD>te de la bd, l'utilisateur, et le mot de passe
|
||||||
$db_host = 'localhost';
|
$db_host = 'localhost';
|
||||||
$db_user = 'myuser';
|
$db_user = 'myuser';
|
||||||
$db_pass = 'mypass';
|
$db_pass = 'mypass';
|
||||||
$db_name = 'SMARTY_CACHE';
|
$db_name = 'SMARTY_CACHE';
|
||||||
$use_gzip = false;
|
$use_gzip = false;
|
||||||
|
|
||||||
// cr<63>e un identifiant de cache unique
|
// cr<63>e un identifiant de cache unique
|
||||||
$CacheID = md5($tpl_file.$cache_id.$compile_id);
|
$CacheID = md5($tpl_file.$cache_id.$compile_id);
|
||||||
|
|
||||||
if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) {
|
if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) {
|
||||||
$smarty_obj->_trigger_error_msg("cache_handler: could not connect to database");
|
$smarty_obj->_trigger_error_msg("cache_handler: could not connect to database");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
mysql_select_db($db_name);
|
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;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@@ -1,52 +1,68 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
|
||||||
<sect1 id="template.resources">
|
<sect1 id="template.resources">
|
||||||
<title>Ressources</title>
|
<title>Ressources</title>
|
||||||
<para>
|
<para>
|
||||||
Les templates peuvent provenir d'une grande vari<72>t<EFBFBD> de ressources. Quand vous
|
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
|
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
|
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>
|
</para>
|
||||||
<sect2 id="templates.from.template.dir">
|
<sect2 id="templates.from.template.dir">
|
||||||
<title>Templates depuis $template_dir</title>
|
<title>Templates depuis $template_dir</title>
|
||||||
<para>
|
<para>
|
||||||
Les templates du r<>pertoire $template_dir n'ont pas
|
Les templates du r<>pertoire $template_dir n'ont pas
|
||||||
besoin d'une ressource template, bien que vous puissiez utiliser
|
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
|
le chemin vers le template que vous voulez utiliser, relatif
|
||||||
au r<>pertoire racine $template_dir.
|
au r<>pertoire racine $template_dir.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Utilisation de templates depuis $template_dir</title>
|
<title>Utilisation de templates depuis $template_dir</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
// le script PHP
|
<![CDATA[
|
||||||
|
<?php
|
||||||
$smarty->display("index.tpl");
|
$smarty->display("index.tpl");
|
||||||
$smarty->display("admin/menu.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 *}
|
{* le template Smarty *}
|
||||||
{include file="index.tpl"}
|
{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>
|
</example>
|
||||||
</sect2>
|
</sect2>
|
||||||
<sect2 id="templates.from.any.dir">
|
<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>
|
<para>
|
||||||
Les templates en-dehors du r<>pertoire $template_dir n<>cessitent
|
Les templates en-dehors du r<>pertoire $template_dir n<>cessitent
|
||||||
le type de ressource template, suivi du chemin absolu et du nom du
|
le type de ressource template, suivi du chemin absolu et du nom du
|
||||||
template.
|
template.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>utilisation d'un template depuis n'importe quel r<>pertoire</title>
|
<title>Utilisation d'un template depuis n'importe quel r<>pertoire</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
// le script PHP
|
<![CDATA[
|
||||||
|
<?php
|
||||||
$smarty->display("file:/export/templates/index.tpl");
|
$smarty->display("file:/export/templates/index.tpl");
|
||||||
$smarty->display("file:/path/to/my/templates/menu.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>
|
</example>
|
||||||
|
|
||||||
<sect3 id="templates.windows.filepath">
|
<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
|
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.
|
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
|
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>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>utilisation de templates avec des chemins de fichiers Windows</title>
|
<title>Utilisation de templates avec des chemins de fichiers Windows</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
// le script PHP
|
<![CDATA[
|
||||||
|
<?php
|
||||||
$smarty->display("file:C:/export/templates/index.tpl");
|
$smarty->display("file:C:/export/templates/index.tpl");
|
||||||
$smarty->display("file:F:/path/to/my/templates/menu.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>
|
</example>
|
||||||
</sect3>
|
</sect3>
|
||||||
</sect2>
|
</sect2>
|
||||||
@@ -73,15 +98,17 @@ $smarty->display("file:F:/path/to/my/templates/menu.tpl");
|
|||||||
<sect2 id="templates.from.elsewhere">
|
<sect2 id="templates.from.elsewhere">
|
||||||
<title>Templates depuis d'autres sources</title>
|
<title>Templates depuis d'autres sources</title>
|
||||||
<para>
|
<para>
|
||||||
Vous pouvez r<>cup<75>rer les templates a partir n'importe quelle
|
Vous pouvez r<>cup<75>rer les templates <EFBFBD> partir de n'importe quelle
|
||||||
source a laquelle vous avez acc<63>s avec PHP : base de donn<6E>es,
|
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
|
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.
|
de ressource plugins et de les enregistrer aupr<70>s de Smarty.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Reportez-vous a la section <link linkend="plugins.resources">ressource plugins</link>
|
Reportez-vous <EFBFBD> la section <link linkend="plugins.resources">ressource plugins</link>
|
||||||
pour plus d'informations sur les fonctions que vous Otes cens<6E> fournir.
|
pour plus d'informations sur les fonctions que vous <EFBFBD>tes cens<6E> fournir.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
Notez que vous ne pouvez pas <20>craser la ressource <literal>file</literal> native,
|
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>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
<example>
|
<example>
|
||||||
<title>utilisation de ressources utilisateurs</title>
|
<title>Utilisation de ressources utilisateurs</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
// le script PHP
|
<![CDATA[
|
||||||
|
<?php
|
||||||
// mettez ces fonctions quelque part dans votre application
|
// mettez ces fonctions quelque part dans votre application
|
||||||
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
|
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
|
||||||
{
|
{
|
||||||
// requ<71>te BD pour r<>cup<75>rer le template
|
// requ<71>te BD pour r<>cup<75>rer le template
|
||||||
// et remplir $tpl_source
|
// et remplir $tpl_source
|
||||||
@@ -112,7 +139,7 @@ function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
|
function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
|
||||||
{
|
{
|
||||||
// requ<71>te BD pour remplir $tpl_timestamp
|
// requ<71>te BD pour remplir $tpl_timestamp
|
||||||
$sql = new SQL;
|
$sql = new SQL;
|
||||||
@@ -127,13 +154,13 @@ function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_get_secure($tpl_name, &$smarty_obj)
|
function db_get_secure($tpl_name, &$smarty_obj)
|
||||||
{
|
{
|
||||||
// on suppose que tous les templates sont svrs
|
// on suppose que tous les templates sont svrs
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_get_trusted($tpl_name, &$smarty_obj)
|
function db_get_trusted($tpl_name, &$smarty_obj)
|
||||||
{
|
{
|
||||||
// pas utilis<69>e pour les templates dans notre cas
|
// 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
|
// utilise la ressource depuis le script PHP
|
||||||
$smarty->display("db:index.tpl");
|
$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>
|
</example>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
@@ -156,35 +191,38 @@ $smarty->display("db:index.tpl");
|
|||||||
<title>Fonction de gestion de template par d<>faut</title>
|
<title>Fonction de gestion de template par d<>faut</title>
|
||||||
<para>
|
<para>
|
||||||
Vous pouvez sp<73>cifier une fonction qui sera utilis<69>e pour
|
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
|
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>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>utilisation de la fonction de gestion de template par d<>faut</title>
|
<title>utilisation de la fonction de gestion de template par d<>faut</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
<?php
|
<![CDATA[
|
||||||
|
<?php
|
||||||
// mettez cette fonction quelque part dans votre application
|
// mettez cette fonction quelque part dans votre application
|
||||||
|
|
||||||
function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj)
|
function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj)
|
||||||
{
|
{
|
||||||
if( $resource_type == 'file' ) {
|
if( $resource_type == 'file' ) {
|
||||||
if ( ! is_readable ( $resource_name )) {
|
if ( ! is_readable ( $resource_name )) {
|
||||||
// cr<63>e le fichier de template et renvoie le contenu
|
// cr<63>e le fichier de template et renvoie le contenu
|
||||||
$template_source = "This is a new template.";
|
$template_source = "Ceci est un nouveau template.";
|
||||||
$template_timestamp = time();
|
$template_timestamp = time();
|
||||||
$smarty_obj->_write_file($resource_name,$template_source);
|
$smarty_obj->_write_file($resource_name,$template_source);
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// pas un fichier
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// pas un fichier
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// r<>gle la fonction par d<>faut
|
// r<>gle la fonction par d<>faut
|
||||||
$smarty->default_template_handler_func = 'make_template';
|
$smarty->default_template_handler_func = 'make_template';
|
||||||
?></programlisting>
|
?>
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect2>
|
</sect2>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
@@ -1,8 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.8 Maintainer: yannick Status: ready -->
|
||||||
<chapter id="api.functions">
|
<reference id="api.functions">
|
||||||
<title>M<EFBFBD>thodes</title>
|
<title>M<EFBFBD>thodes</title>
|
||||||
|
<titleabbrev></titleabbrev>
|
||||||
|
<partintro>
|
||||||
|
<section>
|
||||||
|
<title />
|
||||||
|
<para></para>
|
||||||
|
</section>
|
||||||
|
</partintro>
|
||||||
&programmers.api-functions.api-append;
|
&programmers.api-functions.api-append;
|
||||||
&programmers.api-functions.api-append-by-ref;
|
&programmers.api-functions.api-append-by-ref;
|
||||||
&programmers.api-functions.api-assign;
|
&programmers.api-functions.api-assign;
|
||||||
@@ -42,7 +49,9 @@
|
|||||||
&programmers.api-functions.api-unregister-postfilter;
|
&programmers.api-functions.api-unregister-postfilter;
|
||||||
&programmers.api-functions.api-unregister-prefilter;
|
&programmers.api-functions.api-unregister-prefilter;
|
||||||
&programmers.api-functions.api-unregister-resource;
|
&programmers.api-functions.api-unregister-resource;
|
||||||
</chapter>
|
|
||||||
|
</reference>
|
||||||
|
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
Local variables:
|
Local variables:
|
||||||
mode: sgml
|
mode: sgml
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
|
||||||
<chapter id="api.variables">
|
<chapter id="api.variables">
|
||||||
<title>Variables</title>
|
<title>Variables</title>
|
||||||
|
|
||||||
@@ -11,8 +11,6 @@
|
|||||||
&programmers.api-variables.variable-debugging;
|
&programmers.api-variables.variable-debugging;
|
||||||
&programmers.api-variables.variable-debug-tpl;
|
&programmers.api-variables.variable-debug-tpl;
|
||||||
&programmers.api-variables.variable-debugging-ctrl;
|
&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-autoload-filters;
|
||||||
&programmers.api-variables.variable-compile-check;
|
&programmers.api-variables.variable-compile-check;
|
||||||
&programmers.api-variables.variable-force-compile;
|
&programmers.api-variables.variable-force-compile;
|
||||||
@@ -35,9 +33,12 @@
|
|||||||
&programmers.api-variables.variable-right-delimiter;
|
&programmers.api-variables.variable-right-delimiter;
|
||||||
&programmers.api-variables.variable-compiler-class;
|
&programmers.api-variables.variable-compiler-class;
|
||||||
&programmers.api-variables.variable-request-vars-order;
|
&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-compile-id;
|
||||||
&programmers.api-variables.variable-use-sub-dirs;
|
&programmers.api-variables.variable-use-sub-dirs;
|
||||||
&programmers.api-variables.variable-default-modifiers;
|
&programmers.api-variables.variable-default-modifiers;
|
||||||
|
&programmers.api-variables.variable-default-resource-type;
|
||||||
</chapter>
|
</chapter>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
Local variables:
|
Local variables:
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
|
||||||
<chapter id="caching">
|
<chapter id="caching">
|
||||||
<title>Cache</title>
|
<title>Cache</title>
|
||||||
<para>
|
<para>
|
||||||
@@ -9,25 +9,26 @@
|
|||||||
linkend="api.fetch">fetch()</link> en sauvegardant leur r<>sultat
|
linkend="api.fetch">fetch()</link> en sauvegardant leur r<>sultat
|
||||||
dans un fichier. Si un fichier de cache est disponible lors d'un appel,
|
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.
|
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
|
Le syst<73>me de cache peut acc<63>l<EFBFBD>rer les traitements de fa<66>on impressionnante,
|
||||||
peut acc<63>l<EFBFBD>rer les traitements de faton impressionnante, en particulier les
|
en particulier les templates dont la compilation est tr<74>s longue. Comme
|
||||||
templates dont la compilation est tr<74>s longue. Comme le r<>sultat de
|
le r<>sultat de display() ou de fetch() est dans le cache, un fichier de cache
|
||||||
display() ou de fetch() est dans le cache, un fichier de cache peut
|
peut <20>tre compos<6F> de plusieurs fichiers de templates, plusieurs fichiers
|
||||||
<20>tre compos<6F> de plusieurs fichiers de templates, plusieurs fichiers
|
|
||||||
de configuration, etc.
|
de configuration, etc.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Comme les templates sont dynamiques, il est important de faire attention
|
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
|
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
|
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
|
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.
|
n'a aucun sens.
|
||||||
</para>
|
</para>
|
||||||
&programmers.caching.caching-setting-up;
|
&programmers.caching.caching-setting-up;
|
||||||
&programmers.caching.caching-multiple-caches;
|
&programmers.caching.caching-multiple-caches;
|
||||||
&programmers.caching.caching-groups;
|
&programmers.caching.caching-groups;
|
||||||
|
|
||||||
|
&programmers.caching.caching-cacheable;
|
||||||
</chapter>
|
</chapter>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
Local variables:
|
Local variables:
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.5 Maintainer: yannick Status: ready -->
|
||||||
<chapter id="plugins">
|
<chapter id="plugins">
|
||||||
<title>Etendre Smarty avec des plugins</title>
|
<title>Etendre Smarty avec des plugins</title>
|
||||||
<para>
|
<para>
|
||||||
La version 2.0 a introduit l'architecture de plugin qui est
|
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 :
|
personnalisables de Smarty. Ceci comprend :
|
||||||
<itemizedlist spacing="compact">
|
<itemizedlist spacing="compact">
|
||||||
<listitem><simpara>les fonctions</simpara></listitem>
|
<listitem><simpara>les fonctions</simpara></listitem>
|
||||||
@@ -19,9 +19,9 @@
|
|||||||
<listitem><simpara>les insertions</simpara></listitem>
|
<listitem><simpara>les insertions</simpara></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
A part pour les ressources, la compatibilit<69> avec les anciennes
|
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
|
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
|
<literal>$custom_funcs</literal>, <literal>$custom_mods</literal> et
|
||||||
d'autres, vous devez alors modifier vos scripts pour utiliser
|
d'autres, vous devez alors modifier vos scripts pour utiliser
|
||||||
l'API ou convertir vos fonctionnalit<69>s personnalis<69>es en plugins.
|
l'API ou convertir vos fonctionnalit<69>s personnalis<69>es en plugins.
|
||||||
|
@@ -1,20 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.1 Maintainer: nobody Status: partial -->
|
<!-- EN-Revision: 1.3 Maintainer: yannick Status: ready -->
|
||||||
<chapter id="smarty.constants">
|
<chapter id="smarty.constants">
|
||||||
<title>Constantes</title>
|
<title>Constantes</title>
|
||||||
<para></para>
|
|
||||||
|
|
||||||
<sect1 id="constant.smarty.dir">
|
<sect1 id="constant.smarty.dir">
|
||||||
<title>SMARTY_DIR</title>
|
<title>SMARTY_DIR</title>
|
||||||
<para>
|
<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.
|
se trouvent les fichiers classes de Smarty.
|
||||||
S'il n'est pas d<>fini, Smarty essaiera alors d'en
|
S'il n'est pas d<>fini, Smarty essaiera alors d'en
|
||||||
d<>terminer automatiquement la valeur.
|
d<>terminer automatiquement la valeur.
|
||||||
S'il est d<>fini, le chemin doit se terminer par un slash.
|
S'il est d<>fini, le chemin doit se terminer par un slash.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<example>
|
<example>
|
||||||
<title>SMARTY_DIR</title>
|
<title>SMARTY_DIR</title>
|
||||||
<programlisting role="php">
|
<programlisting role="php">
|
||||||
@@ -26,6 +24,30 @@ define("SMARTY_DIR","/usr/local/lib/php/Smarty/");
|
|||||||
|
|
||||||
require_once(SMARTY_DIR."Smarty.class.php");
|
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>
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
|
Reference in New Issue
Block a user