sync with EN

#Un biberon, un commit ! Merci Ewan ;)
This commit is contained in:
yannick
2006-09-30 03:20:52 +00:00
parent b9ae51f37f
commit e6183de5ea
5 changed files with 272 additions and 210 deletions

View File

@@ -1,16 +1,35 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer: didou Status: ready -->
<!-- EN-Revision: 1.5 Maintainer: didou Status: ready -->
<chapter id="resources">
<title>Ressources</title>
<para>
La page Web de Smarty se trouve <20> l'adresse suivante : &url.smarty;
Vous pouvez souscrire <20> la mailing liste en envoyant un email <20>
&ml.general.sub;.
Les archives de la mailing list se trouvent <20> l'adresse suivante :
&url.ml.archive;
La page Web de Smarty se trouve <20> l'adresse suivante :
<ulink url="&url.smarty;">&url.smarty;</ulink>
</para>
<itemizedlist>
<listitem><para>
Vous pouvez souscrire <20> la mailing liste en envoyant un email <20>
<literal>&ml.general.sub;</literal>.
Les archives de la mailing list se trouvent <20> l'adresse suivante :
<ulink url="&url.ml.archive;">ici</ulink>
</para></listitem>
<listitem><para>
Les forums sur <ulink url="&url.forums;">&url.forums;</ulink>
</para></listitem>
<listitem><para>
Le wiki sur <ulink url="&url.wiki;">&url.wiki;</ulink>
</para></listitem>
<listitem><para>
Le chat sur <ulink url="&url.wiki;">irc.freenode.net#smarty</ulink>
</para></listitem>
<listitem><para>
La FAQ <ulink url="&url.faq_1;">ici</ulink> et <ulink url="&url.faq_2;">ici</ulink>
</para></listitem>
</itemizedlist>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
@@ -30,4 +49,4 @@ End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
-->

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.11 Maintainer: didou Status: ready -->
<!-- EN-Revision: 1.12 Maintainer: didou Status: ready -->
<chapter id="tips">
<title>Trucs et astuces</title>
@@ -10,13 +10,21 @@
<para>
Peut-<2D>tre voudrez-vous des fois afficher une valeur par
d<>faut pour une variable qui n'a pas <20>t<EFBFBD> assign<67>e, comme
pour afficher "&amp;nbsp;" afin que les couleurs de fond
des tableaux fonctionnent. Beaucoup utiliseraient une
instruction <link linkend="language.function.if">{if}</link>
pour afficher <literal>&amp;nbsp;</literal> afin que les couleurs
de fond des tableaux fonctionnent. Beaucoup utiliseraient une
instruction <link linkend="language.function.if"><varname>{if}</varname></link>
pour g<>rer cel<65>, mais il existe un moyen
plus facile dans Smarty : l'utilisation du modificateur
de variable <link
linkend="language.modifier.default"><emphasis>d<EFBFBD>faut</emphasis></link>.
de variable
<link linkend="language.modifier.default"><varname>default</varname></link>.
<note>
<para>Les erreurs <quote>de variable ind<6E>finie</quote> seront affich<63>s si
la fonction PHP
<ulink url="&url.php-manual;error_reporting">
<varname>error_reporting()</varname></ulink> vaut <constant>E_ALL</constant>
et qu'une variable n'a pas <20>t<EFBFBD> assign<67>e <20> Smarty.
</para>
</note>
</para>
<example>
<title>Afficher &amp;nbsp; quand une variable est vide</title>
@@ -36,8 +44,8 @@
</programlisting>
</example>
<para>
Voir aussi
<link linkend="language.modifier.default">default</link> et
Voir aussi
<link linkend="language.modifier.default"><varname>default</varname></link> et
<link linkend="tips.default.var.handling">la gestion des variables par d<>faut</link>.
</para>
</sect1>
@@ -46,12 +54,14 @@
<title>Gestion des variables par d<>faut</title>
<para>
Si une variable est utilis<69>e fr<66>quemment dans vos templates,
lui appliquer le modificateur par d<>faut peut <20>tre un peu fastidieux.
lui appliquer le modificateur
<link linkend="language.modifier.default"><varname>default</varname></link>
peut <20>tre un peu fastidieux.
Vous pouvez rem<65>dier <20> cel<65> en lui assignant une valeur par d<>faut
avec la fonction <link linkend="language.function.assign">{assign}</link>.
avec la fonction <link linkend="language.function.assign"><varname>{assign}</varname></link>.
</para>
<example>
<title>assigner une valeur par d<>faut <20> une variable de template</title>
<title>Assigner une valeur par d<>faut <20> une variable de template</title>
<programlisting>
<![CDATA[
{* faites cela quelque part en haut de votre template *}
@@ -64,7 +74,7 @@
</example>
<para>
Voir aussi
<link linkend="language.modifier.default">default</link> et
<link linkend="language.modifier.default"><varname>default</varname></link> et
<link linkend="tips.blank.var.handling">la gestion des variables non-assign<67>es</link>.
</para>
</sect1>
@@ -74,18 +84,18 @@
<para>
Quand la majorit<69> de vos templates utilisent les m<>mes en-t<>te et pied-de-page,
il est d'usage de les mettre dans leurs propres templates et de les inclure
(<link linkend="language.function.include">{include}</link>).
(<link linkend="language.function.include"><varname>{include}</varname></link>).
Mais comment faire si l'en-t<>te doit avoir un titre diff<66>rent, selon la page
d'o<> on vient ? Vous pouvez passer le titre <20> l'en-t<>te en tant qu'
<link linkend="language.syntax.attributes">attribut</link> quand il est inclus.
</para>
<example>
<title>passer le titre au template d'en-t<>te</title>
<title>Passer le titre au template d'en-t<>te</title>
<para>
<filename>mainpage.tpl</filename> - Lorsque la page principal est construite,
le titre 'Man Page' est pass<73> au <filename>header.tpl</filename> et sera utilis<69>
le titre <quote>Man Page</quote> est pass<73> au <filename>header.tpl</filename> et sera utilis<69>
en tant que titre.
</para>
<programlisting>
@@ -98,12 +108,13 @@
<para>
<filename>archives.tpl</filename> - Lorsque la page principal est construite, le titre
sera 'Archives'. Notez que dans cet exemple, nous utilisons une variable du fichier
sera <quote>Archives</quote>. Notez que dans cet exemple, nous utilisons une variable du fichier
<filename>archives_page.conf</filename> au lieu d'une variable classique.
</para>
<programlisting>
<![CDATA[
{config_load file='archive_page.conf'}
{include file='header.tpl' title=#archivePageTitle#}
{* corps du template ici *}
{include file='footer.tpl'}
@@ -111,9 +122,9 @@
</programlisting>
<para>
<filename>header.tpl</filename> - Notez que "Smarty News" est affich<63> si la variable
$title n'est pas d<>finie, en utilisant le modificateur de variable par
<link linkend="language.modifier.default">d<EFBFBD>faut</link>.
<filename>header.tpl</filename> - Notez que <quote>Smarty News</quote> est affich<63>
si la variable <literal>$title</literal> n'est pas d<>finie, en utilisant le modificateur de variable par
<link linkend="language.modifier.default"><varname>default</varname></link>.
</para>
<programlisting>
<![CDATA[
@@ -142,18 +153,11 @@
<para>
De fa<66>on g<>n<EFBFBD>rale, essayez de toujours passer les dates <20> Smarty
sous forme de <ulink url="&url.php-manual;time">timestamp</ulink>.
Cel<EFBFBD> permet aux designers de templates d'utiliser
<link linkend="language.modifier.date.format">date_format</link>
Cela permet aux designers de templates d'utiliser
<link linkend="language.modifier.date.format"><varname>date_format</varname></link>
pour avoir un contr<74>le total sur le formatage des dates et de comparer
facilement les dates entre elles.
</para>
<note>
<para>
A partir Smarty 1.4.0, vous pouvez passer les dates <20> Smarty
sous la forme de timestamps Unix ou MySQL, ou tout autre format de dates
que comprend <ulink url="&url.php-manual;strtotime">strtotime()</ulink>.
</para>
</note>
<example>
<title>Utilisation de date_format</title>
<programlisting>
@@ -166,7 +170,7 @@
</para>
<screen>
<![CDATA[
Jan 4, 2001
Jan 4, 2009
]]>
</screen>
<programlisting>
@@ -179,10 +183,13 @@ Jan 4, 2001
</para>
<screen>
<![CDATA[
2001/01/04
2009/01/04
]]>
</screen>
<programlisting>
</screen>
<para>
Les dates peuvent <20>tre compar<61>es dans le template en utilisant les timestamps, comme ceci :
</para>
<programlisting>
<![CDATA[
{if $date1 < $date2}
...
@@ -191,7 +198,8 @@ Jan 4, 2001
</programlisting>
</example>
<para>
En utilisant la fonction <link linkend="language.function.html.select.date">{html_select_date}</link>
En utilisant la fonction
<link linkend="language.function.html.select.date"><varname>{html_select_date}</varname></link>
dans un template, le programmeur veut en g<>n<EFBFBD>ral convertir le
r<>sultat d'un formulaire en un timestamp.
Voici une fonction qui devrait vous <20>tre utile.
@@ -210,13 +218,13 @@ $startDate = makeTimeStamp($startDate_Year, $startDate_Month, $startDate_Day);
function makeTimeStamp($year='', $month='', $day='')
{
if(empty($year)) {
$year = strftime("%Y");
$year = strftime('%Y');
}
if(empty($month)) {
$month = strftime("%m");
$month = strftime('%m');
}
if(empty($day)) {
$day = strftime("%d");
$day = strftime('%d');
}
return mktime(0, 0, 0, $month, $day, $year);
@@ -228,10 +236,10 @@ function makeTimeStamp($year='', $month='', $day='')
<para>
Voir aussi
<link linkend="language.function.html.select.date">{html_select_date}</link>,
<link linkend="language.function.html.select.time">{html_select_time}</link>,
<link linkend="language.modifier.date.format">date_format</link> et
<link linkend="language.variables.smarty.now">$smarty.now</link>,
<link linkend="language.function.html.select.date"><varname>{html_select_date}</varname></link>,
<link linkend="language.function.html.select.time"><varname>{html_select_time}</varname></link>,
<link linkend="language.modifier.date.format"><varname>date_format</varname></link> et
<link linkend="language.variables.smarty.now"><parameter>$smarty.now</parameter></link>,
</para>
</sect1>
@@ -311,8 +319,9 @@ function insert_header()
Traditionnellemnt, la programmation avec des templates dans les applications
se d<>roule de la fa<66>on suivante : d'abord vous r<>cup<75>rez vos variables
dans l'application PHP (peut-<2D>tre avec des requ<71>tes en base de donn<6E>es), puis
vous instanciez votre objet Smarty, <link linkend="api.assign">assign()</link>
les variables et <link linkend="api.display">display()</link> le
vous instanciez votre objet Smarty,
<link linkend="api.assign"><varname>assign()</varname></link>
les variables et <link linkend="api.display"><varname>display()</varname></link> le
template. Disons par exemple que nous avons un t<>l<EFBFBD>scripteur dans
notre template. Nous r<>cup<75>rerions les donn<6E>es dans notre application,
puis les assignerions ensuite pour les afficher. Mais ne serait-ce pas
@@ -329,7 +338,7 @@ function insert_header()
<para>
<filename>function.load_ticker.php</filename> -
Efface le fichier du r<>pertoire des
<link linkend="variable.plugins.dir">$plugins</link>
<link linkend="variable.plugins.dir"><parameter>$plugins</parameter></link>
</para>
<programlisting role="php">
<![CDATA[
@@ -367,9 +376,9 @@ Stock Name: {$ticker.name} Stock Price: {$ticker.price}
</example>
<para>
Voir aussi
<link linkend="language.function.include.php">{include_php}</link>,
<link linkend="language.function.include">{include}</link> et
<link linkend="language.function.php">{php}</link>.
<link linkend="language.function.include.php"><varname>{include_php}</varname></link>,
<link linkend="language.function.include"><varname>{include}</varname></link> et
<link linkend="language.function.php"><varname>{php}</varname></link>.
</para>
</sect1>
<sect1 id="tips.obfuscating.email">
@@ -380,14 +389,13 @@ Stock Name: {$ticker.name} Stock Price: {$ticker.price}
adresses est de parcourir les pages Web. Voici une fa<66>on de rem<65>dier
<20> ce probl<62>me : mettre votre adresse email dans du Javascript brouill<6C>
au milieu de votre source HTML, sans que cel<65> ne g<>ne l'affichage sur le
navigateur Web. Cel<EFBFBD> est fait gr<67>ce au plugin
<link linkend="language.function.mailto">{mailto}</link>.
navigateur Web. Cela est fait gr<67>ce au plugin
<link linkend="language.function.mailto"><varname>{mailto}</varname></link>.
</para>
<example>
<title>Exemple de dissimulation d'une adresse email</title>
<programlisting>
<![CDATA[
{* dans le template *}
<div id="contact">Envoyer une demande <20>
{mailto address=$EmailAddress encode='javascript' subject='Bonjour'}
]]>
@@ -403,8 +411,8 @@ Stock Name: {$ticker.name} Stock Price: {$ticker.price}
</note>
<para>
Voir aussi
<link linkend="language.modifier.escape">escape</link> et
<link linkend="language.function.mailto">{mailto}</link>.
<link linkend="language.modifier.escape"><varname>escape</varname></link> et
<link linkend="language.function.mailto"><varname>{mailto}</varname></link>.
</para>
</sect1>
</chapter>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer:gerald Status: ready -->
<!-- EN-Revision: 1.5 Maintainer:gerald Status: ready -->
<chapter id="troubleshooting">
<title>Diagnostic des erreurs</title>
<para></para>
@@ -13,15 +14,15 @@
</para>
<example>
<title>erreurs Smarty</title>
<screen>
<screen>
<![CDATA[
Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
in /path/to/smarty/Smarty.class.php on line 1041
in /path/to/smarty/Smarty.class.php on line 1041
Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
in /path/to/smarty/Smarty.class.php on line 1041
in /path/to/smarty/Smarty.class.php on line 1041
]]>
</screen>
</screen>
</example>
<para>
@@ -38,131 +39,135 @@ Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
<example>
<title>Erreur d'analyse PHP</title>
<screen>
<screen>
<![CDATA[
Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
]]>
</screen>
</screen>
</example>
<para>
Quand vous rencontrez une erreur d'analyse PHP, le num<75>ro de la ligne
indiqu<71> est celui du fichier PHP compil<69> et non du template. Vous pouvez alors
regarder le template et d<>tecter l'erreur. Voici quelques erreurs fr<66>quentes :
balises fermantes pour <link linkend="language.function.if">{if}{/if}</link>
ou <link linkend="language.function.if">{section}{/section}</link> manquantes, ou
syntaxe logique incorrecte dans une instruction {if}. Si vous ne trouvez pas l'erreur,
vous devrez alors ouvrir le fichier PHP compil<69> et aller <20> la ligne correspondante pour
trouver d'o<> vient l'erreur.
balises fermantes pour
<link linkend="language.function.if"><varname>{if}{/if}</varname></link>
ou
<link linkend="language.function.if"><varname>{section}{/section}</varname></link>
manquantes, ou syntaxe logique incorrecte dans une instruction <varname>{if}</varname>.
Si vous ne trouvez pas l'erreur, vous devrez alors ouvrir le fichier PHP compil<69> et aller <20> la
ligne correspondante pour trouver d'o<> vient l'erreur.
</para>
<example>
<title>Autres erreurs communes</title>
<itemizedlist>
<listitem>
<screen>
<screen>
<![CDATA[
Warning: Smarty error: unable to read resource: "index.tpl" in...
ou
Warning: Smarty error: unable to read resource: "site.conf" in...
]]>
</screen>
<para>
<itemizedlist>
<listitem>
<para>
Le dossier <link linkend="variable.template.dir">$template_dir</link>
est incorrect, n'existe pas ou le fichier
the file <filename>index.tpl</filename> n'est pas dans le dossier
<filename class="directory">templates/</filename>.
</para>
</listitem>
<listitem>
<para>
Une fonction <link linkend="language.function.config.load">{config_load}</link>
est dans un template (ou
<link linkend="api.config.load">config_load()</link>
a <20>t<EFBFBD> appel<65>) et soit
<link linkend="variable.config.dir">$config_dir</link>
est incoh<6F>rent, n'existe pas, ou
<filename>site.conf</filename> n'est pas dans le dossier.
</para>
</listitem>
</itemizedlist>
</para>
</listitem><listitem>
<screen>
<![CDATA[
Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
or is not a directory...
]]>
</screen>
</screen>
<para>
<itemizedlist>
<listitem>
<para>
Le dossier
<link linkend="variable.template.dir"><parameter>$template_dir</parameter></link>
est incorrect, n'existe pas ou le fichier
the file <filename>index.tpl</filename> n'est pas dans le dossier
<filename class="directory">templates/</filename>.
</para>
</listitem>
<listitem>
<para>
Une fonction
<link linkend="language.function.config.load"><varname>{config_load}</varname></link>
est dans un template (ou
<link linkend="api.config.load"><varname>config_load()</varname></link>
a <20>t<EFBFBD> appel<65>) et soit
<link linkend="variable.config.dir"><varname>$config_dir</varname></link>
est incoh<6F>rent, n'existe pas, ou
<filename>site.conf</filename> n'est pas dans le dossier.
</para>
</listitem>
</itemizedlist>
</para>
<screen>
<![CDATA[
Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
or is not a directory...
]]>
</screen>
<itemizedlist>
<listitem>
<para>
Soit le dossier
<link linkend="variable.compile.dir">$compile_dir</link>
<link linkend="variable.compile.dir"><parameter>$compile_dir</parameter></link>
n'est pas correctement d<>fini, le dossier n'existe pas, ou
<filename>templates_c</filename> est un fichier et non un dossier.
</para>
</listitem><listitem>
<screen>
<![CDATA[
Fatal error: Smarty error: unable to write to $compile_dir '....
]]>
</screen>
</listitem>
</itemizedlist>
<screen>
<![CDATA[
Fatal error: Smarty error: unable to write to $compile_dir '....
]]>
</screen>
<itemizedlist>
<listitem>
<para>
Le dossier <link linkend="variable.compile.dir">$compile_dir</link>
Le dossier <link linkend="variable.compile.dir"><parameter>$compile_dir</parameter></link>
n'est pas accessible en <20>criture par le serveur web. Voir le bas
de la page sur l'<link linkend="installing.smarty.basic">installation de
Smarty</link> pour les permissions.
Smarty</link> pour les permissions.
</para>
</listitem>
</itemizedlist>
</listitem><listitem>
<screen>
<screen>
<![CDATA[
Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
or is not a directory. in /..
]]>
</screen>
</screen>
<itemizedlist>
<listitem>
<para>
Cela signifie que
<link linkend="variable.caching">$caching</link> est activ<69> et soit
<link linkend="variable.caching"><parameter>$caching</parameter></link> est activ<69> et soit
le dossier
<link linkend="variable.cache.dir">$cache_dir</link>
<link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>
n'est pas correctement d<>fini, le dossier n'existe pas, ou
<filename>cache</filename> est un fichier et non un dossier.
</para>
</listitem>
</itemizedlist>
</listitem><listitem>
<screen>
<screen>
<![CDATA[
Fatal error: Smarty error: unable to write to $cache_dir '/...
]]>
</screen>
</screen>
<itemizedlist>
<listitem>
<para>
Cela signifie que
<link linkend="variable.caching">$caching</link> est activ<69> et le dossier
<link linkend="variable.cache.dir">$cache_dir</link>
<link linkend="variable.caching"><parameter>$caching</parameter></link> est activ<69> et
le dossier
<link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>
n'est pas accessible en <20>criture par le serveur web. Voir le bas
de la page sur l'<link linkend="installing.smarty.basic">installation de
Smarty</link> pour les permissions.
Smarty</link> pour les permissions.
</para>
</listitem>
</itemizedlist>
</example>
</example>
<para>
Voir aussi
<link linkend="chapter.debugging.console">le d<>bogage</link>,
<link linkend="variable.error.reporting">$error_reporting</link> et
<link linkend="api.trigger.error">trigger_error()</link>.
</para>
<link linkend="variable.error.reporting"><parameter>$error_reporting</parameter></link> et
<link linkend="api.trigger.error"><varname>trigger_error()</varname></link>.
</para>
</sect1>
</chapter>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.13 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.15 Maintainer: yannick Status: ready -->
<part id="getting.started">
<title>Pour commencer</title>
@@ -157,8 +157,8 @@
<title>Installation de base</title>
<para>
Copiez les fichiers biblioth<74>ques de Smarty du sous-dossier
/libs/ de la distribution <20> un emplacement accessible <20> PHP.
Ce sont des fichiers PHP que vous NE DEVEZ PAS
<filename>/libs/</filename> de la distribution <20> un emplacement
accessible <20> PHP. Ce sont des fichiers PHP que vous NE DEVEZ PAS
modifier. Ils sont partag<61>s par toutes les applications et ne seront
mis <20> jour que lorsque vous installerez une nouvelle version de
Smarty.
@@ -179,25 +179,26 @@ debug.tpl
<para>
Smarty utilise une <ulink url="&url.php-manual;define">constante</ulink> PHP appel<65>e <link
linkend="constant.smarty.dir">SMARTY_DIR</link> qui
repr<70>sente le <emphasis role="bold">chemin complet</emphasis> de la biblioth<74>que Smarty. En fait,
si votre application trouve le fichier
linkend="constant.smarty.dir"><constant>SMARTY_DIR</constant></link> qui
repr<70>sente le <emphasis role="bold">chemin complet</emphasis> de la biblioth<74>que Smarty.
En fait, si votre application trouve le fichier
<filename>Smarty.class.php</filename>, vous n'aurez pas
besoin de d<>finir la variable <link linkend="constant.smarty.dir">SMARTY_DIR</link>,
besoin de d<>finir la variable
<link linkend="constant.smarty.dir"><constant>SMARTY_DIR</constant></link>,
Smarty s'en chargera pour vous.
En revanche, si <filename>Smarty.class.php</filename>
n'est pas dans votre r<>pertoire d'inclusion ou que vous ne
donnez pas un chemin absolu <20> votre application, vous
devez d<>finir SMARTY_DIR explicitement. SMARTY_DIR
devez d<>finir <constant>SMARTY_DIR</constant> explicitement.
<constant>SMARTY_DIR</constant>
<emphasis role="bold">doit</emphasis> avoir <20>tre termin<69> par un slash.
</para>
<para>
Voici comment cr<63>er une instance de Smarty dans vos scripts PHP :
</para>
<example>
<title>cr<EFBFBD>er une instance de Smarty</title>
<title>Cr<EFBFBD>er une instance de Smarty</title>
<para>
Voici comment cr<63>er une instance de Smarty dans vos scripts PHP :
</para>
<programlisting role="php">
<![CDATA[
<?php
@@ -305,8 +306,8 @@ $smarty = new Smarty();
une application principalement pour mettre en <20>vidence une
convention de nommage des r<>pertoires. Vous pouvez utiliser le m<>me
environnement pour n'importe quelle autre application, il suffit de
remplacer "livredor" avec le nom de votre application. Nous allons
mettre nos r<>pertoires Smarty dans
remplacer <quote>livredor</quote> avec le nom de votre application.
Nous allons mettre nos r<>pertoires Smarty dans
<filename
class="directory">/web/www.example.com/smarty/livredor/</filename>.
</para>
@@ -322,18 +323,19 @@ $smarty = new Smarty();
<title>Technical Note</title>
<para>
Il est pratique de configurer le serveur Web de
sorte que 'index.php' soit identifi<66> comme fichier
sorte que <filename>index.php</filename> soit identifi<66> comme fichier
par d<>faut de ce r<>pertoire. Aicnsi, si l'on tape
'http://www.example.com/livredor/', le script 'index.php' soit
ex<EFBFBD>cut<EFBFBD> sans que 'index.php' ne soit sp<73>cifi<EFBFBD> dans l'URL. Avec Apache,
vous pouvez r<>gler cela en ajoutant 'index.php' <20> la ligne o<> se
trouve <emphasis>DirectoryIndex</emphasis> (s<>parez chaque entr<74>e par un espace)
dans le httpd.conf.
</para>
<para>
<emphasis>DirectoryIndex
index.htm index.html index.php index.php3 default.html index.cgi
</emphasis>
<literal>http://www.example.com/livredor/</literal>, le script
<filename>index.php</filename> soit ex<65>cut<EFBFBD> sans que
<filename>index.php</filename> ne soit sp<73>cifi<66> dans l'URL. Avec
Apache, vous pouvez r<>gler cela en ajoutant <filename>index.php</filename>
<EFBFBD> la ligne o<> se trouve <literal>DirectoryIndex</literal> (s<>parez chaque entr<74>e
par un espace) dans le <filename>httpd.conf</filename>.
<informalexample>
<programlisting>
<![CDATA[DirectoryIndex index.htm index.html index.cgi index.php]]>
</programlisting>
</informalexample>
</para>
</note>
<para>
@@ -341,7 +343,7 @@ $smarty = new Smarty();
</para>
<example>
<title>Exemple de structure de fichiers</title>
<title>Structure de fichiers</title>
<screen>
<![CDATA[
/usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php
@@ -364,13 +366,13 @@ $smarty = new Smarty();
<para>
Smarty a besoin d'<emphasis role="bold">acc<EFBFBD>der en <20>criture</emphasis>
aux r<>pertoires <link linkend="variable.compile.dir">
<emphasis>$compile_dir</emphasis></link> et <link linkend="variable.cache.dir">
<emphasis>$cache_dir</emphasis></link>,
<parameter>$compile_dir</parameter></link> et <link linkend="variable.cache.dir">
<parameter>$cache_dir</parameter></link>,
assurez-vous donc que le serveur Web dispose de ces droits d'acc<63>s.
Il s'agit g<>n<EFBFBD>ralement de l'utilisateur "nobody" et du group
"nobody". Pour les utilisateurs de OS X, l'utilisateur par d<>faut
est "web" et le group "web". Si vous utilisez Apache, vous pouvez
parcourir le fichier httpd.conf (en g<>n<EFBFBD>ral dans
parcourir le fichier <filename>httpd.conf</filename> (en g<>n<EFBFBD>ral dans
"/usr/local/apache/conf/") pour d<>terminer quel est l'utilisateur
et le groupe auquel il appartient.
</para>
@@ -389,7 +391,7 @@ chmod 770 /web/www.example.com/smarty/livredor/cache/
</example>
<note>
<title>Note technique</title>
<title>Note</title>
<para>
La commande chmod 770 est relativement bien s<>curis<69>e, elle donne
<20> l'utilisateur "nobody" et au groupe "nobody" les acc<63>s en
@@ -400,12 +402,13 @@ chmod 770 /web/www.example.com/smarty/livredor/cache/
</note>
<para>
Nous devons cr<63>er le fichier 'index.tpl' que Smarty va charger.
Il va se trouver dans le dossier <link linkend="variable.template.dir">$template_dir</link>.
Nous devons cr<63>er le fichier <filename>index.tpl</filename> que Smarty va charger.
Il va se trouver dans le dossier
<link linkend="variable.template.dir"><parameter>$template_dir</parameter></link>.
</para>
<example>
<title>Edition de /web/www.example.com/smarty/templates/index.tpl</title>
<title>Notre /web/www.example.com/smarty/templates/index.tpl</title>
<screen>
<![CDATA[
@@ -420,7 +423,8 @@ Bonjour, {$name}, Bienvenue dans Smarty !
<note>
<title>Note technique</title>
<para>
{* Smarty *} est un <link linkend="language.syntax.comments">commentaire</link>
<literal>{* Smarty *}</literal> est un
<link linkend="language.syntax.comments">commentaire</link>
de template. Il n'est pas obligatoire mais il est bon de commencer tous vos templates
avec ce commentaire. Cel<65> rend le fichier facilement
reconnaissable en plus de son extension. Les <20>diteurs
@@ -430,10 +434,11 @@ Bonjour, {$name}, Bienvenue dans Smarty !
</note>
<para>
Maintenant passons <20> l'<27>dition du fichier 'index.php'. Nous allons
cr<63>er une instance de Smarty, <link linkend="api.assign">assigner</link>
Maintenant passons <20> l'<27>dition du fichier <filename>index.php</filename>. Nous allons
cr<63>er une instance de Smarty,
<link linkend="api.assign"><varname>assigner<varname></link>
une valeur <20> une variable de template et
<link linkend="api.display">afficher</link> le r<>sultat avec 'index.tpl'.
<link linkend="api.display">afficher</link> le r<>sultat avec <filename>index.tpl</filename>.
</para>
<example>
@@ -495,52 +500,54 @@ $smarty->display('index.tpl');
propre classe fille et de l'initialiser selon votre environnement.
De la sorte, nous n'aurons plus besoin de configurer <20> chaques fois les
chemins de notre environnement. Cr<43>ons un nouveau r<>pertoire
"/php/includes/livredor/" et un nouveau fichier appel<65> <filename>setup.php</filename>.
Dans notre exemple d'environnement, "/php/includes" est notre
<filename>/php/includes/livredor/</filename> et un nouveau fichier
appel<EFBFBD> <filename>setup.php</filename>.
Dans notre exemple d'environnement, <filename>/php/includes</filename> est notre
include_path PHP. Assurez-vous de faire la m<>me chose ou alors d'utiliser
des chemins absolus.
</para>
<example>
<title><EFBFBD>dition de /php/includes/livredor/setup.php</title>
<title><EFBFBD>dition de /php/includes/livredor/setup.php</title>
<programlisting role="php">
<![CDATA[
<?php
// charge la librairie Smarty
require('Smarty.class.php');
// charge la librairie Smarty
require('Smarty.class.php');
// le fichier setup.php est un bon
// endroit pour charger les fichiers
// de librairies de l'application et vous pouvez
// faire cel<65> juste ici. Par exemple :
// require('livredor/livredor.lib.php');
// le fichier setup.php est un bon
// endroit pour charger les fichiers
// de librairies de l'application et vous pouvez
// faire cel<65> juste ici. Par exemple :
// require('livredor/livredor.lib.php');
class Smarty_livredor extends Smarty {
class Smarty_livredor extends Smarty {
function Smarty_livredor() {
function Smarty_livredor() {
// Constructeur de la classe.
// Appel<65> automatiquement <20> l'instanciation de la classe.
// Constructeur de la classe.
// Appel<65> automatiquement <20> l'instanciation de la classe.
$this->Smarty();
$this->Smarty();
$this->template_dir = '/web/www.example.com/smarty/livredor/templates/';
$this->compile_dir = '/web/www.example.com/smarty/livredor/templates_c/';
$this->config_dir = '/web/www.example.com/smarty/livredor/configs/';
$this->cache_dir = '/web/www.example.com/smarty/livredor/cache/';
$this->template_dir = '/web/www.example.com/smarty/livredor/templates/';
$this->compile_dir = '/web/www.example.com/smarty/livredor/templates_c/';
$this->config_dir = '/web/www.example.com/smarty/livredor/configs/';
$this->cache_dir = '/web/www.example.com/smarty/livredor/cache/';
$this->caching = true;
$this->assign('app_name', 'Guest Book');
}
$this->caching = true;
$this->assign('app_name', 'Guest Book');
}
}
}
?>
]]>
</programlisting>
</example>
<para>
Modifions maintenant le fichier 'index.php' pour qu'il utilise 'setup.php'
Modifions maintenant le fichier <filename>index.php</filename> pour qu'il utilise
<filename>setup.php</filename>
</para>
<example>
@@ -548,13 +555,13 @@ $smarty->display('index.tpl');
<programlisting role="php">
<![CDATA[
<?php
require('livredor/setup.php');
require('livredor/setup.php');
$smarty = new Smarty_livredor;
$smarty = new Smarty_livredor();
$smarty->assign('name','Ned');
$smarty->assign('name','Ned');
$smarty->display('index.tpl');
$smarty->display('index.tpl');
?>
]]>
@@ -563,8 +570,8 @@ $smarty->display('index.tpl');
<para>
Vous savez maintenant qu'il est facile de cr<63>er une instance de Smarty,
correctement configur<75>e, en utilisant Smarty_livredor qui initialise
automatiquement tout ce qu'il faut pour votre application.
correctement configur<75>e, en utilisant <literal>Smarty_livredor()</literal>
qui initialise automatiquement tout ce qu'il faut pour votre application.
</para>
</sect1>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.5 Maintainer: yannick Status: ready -->
<!-- EN-Revision: 1.6 Maintainer: yannick Status: ready -->
<!ENTITY note.parameter.merge '<note>
<title>Note technique</title>
@@ -20,10 +20,33 @@ C&#39;est au cas o
m<EFBFBD>me template, par exemple, pour avoir des templates compil<69>s
pour diff<66>rents langages. Une autre utilit<69> pour l&#39;identifiant de compilation
<parameter>$compile_id</parameter> est lorsque vous utilisez plus d&#39;un
<link linkend="variable.template.dir">$template_dir</link> mais
seulement un <link linkend="variable.compile.dir">$compile_dir</link>.
<link linkend="variable.template.dir"><parameter>$template_dir</parameter></link> mais
seulement un <link linkend="variable.compile.dir"><parameter>$compile_dir</parameter></link>.
D<EFBFBD>finissez un <parameter>$compile_id</parameter>
s<EFBFBD>par<EFBFBD> pour chaque <link linkend="variable.template.dir">$template_dir</link>,
s<EFBFBD>par<EFBFBD> pour chaque
<link linkend="variable.template.dir"><parameter>$template_dir</parameter></link>,
sinon, les templates du m<>me nom s&#39;effaceront. Vous pouvez <20>galement
d<EFBFBD>finir la variable <link linkend="variable.compile.id">$compile_id</link> une seule
fois plut<75>t que de la passer <20> chaque appel <20> la fonction.</para>'>
fois plut<75>t que de la passer <20> chaque appel <20> la fonction.</para>'>
<!ENTITY api.register.snippet '<para>
La fonction PHP de callback <parameter>function</parameter> peut <20>tre soit :
<itemizedlist>
<listitem><para>
Une cha<68>ne de caract<63>res contenant la fonction <parameter>name</parameter>
</para></listitem>
<listitem><para>
Un tableau sous la forme <literal>array(&amp;$object, $method)</literal> o<>
<literal>&amp;$object</literal> est une r<>f<EFBFBD>rence d&#39;objet et
<literal>$method</literal> une cha<68>ne contenant le nom de la m<>thode
</para></listitem>
<listitem><para>
Un tableau sous la forme
<literal>array(&amp;$class, $method)</literal> o<>
<literal>$class</literal> est le nom de la classe et
<literal>$method</literal> est une m<>thode de la classe.
</para></listitem>
</itemizedlist>
</para>'>