sync with en

This commit is contained in:
didou
2004-04-19 17:08:12 +00:00
parent 6f6984e388
commit 876a25fe2c
2 changed files with 127 additions and 122 deletions

View File

@@ -1,14 +1,15 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.3 Maintainer: didou Status: ready -->
<chapter id="resources"> <chapter id="resources">
<title>Ressources</title> <title>Ressources</title>
<para> <para>
La page Web de Smarty se trouve <20> l'adresse suivante : &url.smarty; 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> Vous pouvez souscrire <20> la mailing liste en envoyant un email <20>
&ml.general.sub;. &ml.general.sub;.
Les archives de la mailing list se trouvent <20> l'adresse suivante : Les archives de la mailing list se trouvent <20> l'adresse suivante :
&url.ml.archive; &url.ml.archive;
</para> </para>
</chapter> </chapter>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -1,45 +1,49 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer: didou Status: ready -->
<chapter id="tips"> <chapter id="tips">
<title>Trucs et astuces</title> <title>Trucs et astuces</title>
<para> <para></para>
</para> <sect1 id="tips.blank.var.handling">
<sect1 id="tips.blank.var.handling"> <title>Gestion des variables non-assign<67>es</title>
<title>Gestion des variables non-assign<67>es</title> <para>
<para> Peut-<2D>tre voudrez-vous des fois afficher une valeur par
Peut-<2D>tre voudrez-vous des fois afficher une valeur par d<>faut pour d<>faut pour une variable qui n'a pas <20>t<EFBFBD> assign<67>e, comme
une variable qui n'a pas <20>t<EFBFBD> assign<67>e, comme pour afficher "&amp;nbsp;" pour afficher "&amp;nbsp;" afin que les couleurs de fond
afin que les couleurs de fond des tableaux fonctionnent. Beaucoup utiliseraient des tableaux fonctionnent. Beaucoup utiliseraient une
une instruction {if} pour g<>rer cela, mais il existe un moyen plus facile dans instruction {if} pour g<>rer cela, mais il existe un moyen
Smarty, l'utilisation du modificateur de variable <emphasis>default</emphasis>. plus facile dans Smarty : l'utilisation du modificateur
</para> de variable <emphasis>default</emphasis>.
<example> </para>
<title>afficher &amp;nbsp; quand une variable est vide</title> <example>
<programlisting> <title>afficher &amp;nbsp; quand une variable est vide</title>
<programlisting>
<![CDATA[
{* la m<>thode pas adapt<70>e *} {* la m<>thode pas adapt<70>e *}
{if $title eq ""} {if $title eq ""}
&amp;nbsp; &nbsp;
{else} {else}
{$title} {$title}
{/if} {/if}
{* la bonne m<>thode *} {* la bonne m<>thode *}
{$title|default:"&amp;nbsp;"}</programlisting> {$title|default:"&nbsp;"}
</example> ]]>
</sect1> </programlisting>
</example>
</sect1>
<sect1 id="tips.default.var.handling"> <sect1 id="tips.default.var.handling">
<title>Gestion des variables par d<>faut</title> <title>Gestion des variables par d<>faut</title>
<para> <para>
Si une variable est utilis<69>e fr<66>quemment dans vos templates, 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 par d<>faut peut <20>tre un peu fastidieux.
Vous pouvez rem<65>dier <20> cela en lui assignant une valeur par d<>faut Vous pouvez rem<65>dier <20> cela 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">assign</link>.
</para> </para>
<example> <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> <programlisting>
@@ -49,15 +53,15 @@
{* si $title est vide, il contiendra alors no "no title" *} {* si $title est vide, il contiendra alors no "no title" *}
{$title}</programlisting> {$title}</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="tips.passing.vars"> <sect1 id="tips.passing.vars">
<title>Passage du titre <20> un template d'en-t<>te</title> <title>Passage du titre <20> un template d'en-t<>te</title>
<para> <para>
Quand la majorit<69> de vos templates utilisent les m<>mes en-t<>te et pied-de-page, 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. il est d'usage de les mettre dans leurs propres templates et de les inclure.
Mais comment faire si l'en-t<>te doit avoir un titre diff<66>rent, selon la page 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 quand il est inclus. d'o<> on vient ? Vous pouvez passer le titre <20> l'en-t<>te quand il est inclus.
</para> </para>
<example> <example>
<title>passer le titre au template d'en-t<>te</title> <title>passer le titre au template d'en-t<>te</title>
<programlisting> <programlisting>
@@ -93,15 +97,15 @@ footer.tpl
&lt;/BODY&gt; &lt;/BODY&gt;
&lt;/HTML&gt;</programlisting> &lt;/HTML&gt;</programlisting>
</example> </example>
<para> <para>
Quand la page principale est con<6F>ue, le titre "Main page" est pass<73> <20> header.tpl Quand la page principale est con<6F>ue, le titre "Main page" est pass<73> <20> header.tpl
et sera donc utilis<69> pour le titre. Quand la page d'archive est con<6F>ue, et sera donc utilis<69> pour le titre. Quand la page d'archive est con<6F>ue,
le titre sera "Archives". Notez que dans l'exemple des archives, on utilise le titre sera "Archives". Notez que dans l'exemple des archives, on utilise
le fichier archives_page.conf plut<75>t que des variables cod<6F>es en dur. le fichier archives_page.conf plut<75>t que des variables cod<6F>es en dur.
Remarquez aussi que "BC News" est affich<63>e si la variable $title Remarquez aussi que "BC News" est affich<63>e si la variable $title
n'est pas d<>finie, gr<67>ce au modificateur de variable <emphasis>default</emphasis>. n'est pas d<>finie, gr<67>ce au modificateur de variable <emphasis>default</emphasis>.
</para> </para>
</sect1> </sect1>
<sect1 id="tips.dates"> <sect1 id="tips.dates">
<title>Dates</title> <title>Dates</title>
<para> <para>
@@ -134,7 +138,7 @@ OUTPUT:
{if $date1 &lt; $date2} {if $date1 &lt; $date2}
... ...
{/if}</programlisting> {/if}</programlisting>
</example> </example>
<para> <para>
@@ -152,29 +156,29 @@ $startDate = makeTimeStamp($startDate_Year,$startDate_Month,$startDate_Day);
function makeTimeStamp($year="",$month="",$day="") function makeTimeStamp($year="",$month="",$day="")
{ {
if(empty($year)) if(empty($year))
$year = strftime("%Y"); $year = strftime("%Y");
if(empty($month)) if(empty($month))
$month = strftime("%m"); $month = strftime("%m");
if(empty($day)) if(empty($day))
$day = strftime("%d"); $day = strftime("%d");
return mktime(0,0,0,$month,$day,$year); return mktime(0,0,0,$month,$day,$year);
}</programlisting> }</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="tips.wap"> <sect1 id="tips.wap">
<title>WAP/WML</title> <title>WAP/WML</title>
<para> <para>
Les templates WAP/WML n<>cessitent un en-t<>te "Content-Type" qui doit <20>tre Les templates WAP/WML n<>cessitent un en-t<>te "Content-Type" qui doit <20>tre
pass<EFBFBD> avec le template. Le moyen le plus facile de faire cela est d'<27>crire pass<EFBFBD> avec le template. Le moyen le plus facile de faire cela est d'<27>crire
une fonction utilisateur qui <20>crit l'en-t<>te. Si vous utilisez le cache, une fonction utilisateur qui <20>crit l'en-t<>te. Si vous utilisez le cache,
cela ne fonctionnera pas. Nous utiliserons donc une balise d'insertion cela ne fonctionnera pas. Nous utiliserons donc une balise d'insertion
(rappelez-vous que les balises d'insertion ne sont pas mises en cache !). (rappelez-vous que les balises d'insertion ne sont pas mises en cache !).
Assurez-vous qu'aucune sortie Assurez-vous qu'aucune sortie
rien n'est transmise au navigateur avant l'appel du template, sans quoi rien n'est transmise au navigateur avant l'appel du template, sans quoi
la modification de l'en-t<>te <20>chouera. la modification de l'en-t<>te <20>chouera.
</para> </para>
<example> <example>
<title>utilisation d'insert pour <20>crire un en-t<>te Content-Type WML</title> <title>utilisation d'insert pour <20>crire un en-t<>te Content-Type WML</title>
<programlisting> <programlisting>
@@ -215,16 +219,16 @@ Pretty easy isn't it?
&lt;/card&gt; &lt;/card&gt;
&lt;/wml&gt;</programlisting> &lt;/wml&gt;</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="tips.componentized.templates"> <sect1 id="tips.componentized.templates">
<title>Templates composants</title> <title>Templates composants</title>
<para> <para>
Cette astuce tient plus du hack qu'autre chose mais n'en demeure pas Cette astuce tient plus du hack qu'autre chose mais n'en demeure pas
moins une id<69>e plut<75>t chouette. Utilisez-la <20> vos propres risques. ;-) moins une id<69>e plut<75>t chouette. Utilisez-la <20> vos propres risques. ;-)
</para> </para>
<para> <para>
Traditionnellemnt, la programmation avec des templates dans les applications 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 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 dans l'application PHP (peut-<2D>tre avec des requ<71>tes en base de donn<6E>es), puis
vous instanciez votre objet Smarty, assignez les variables et affichez le vous instanciez votre objet Smarty, assignez les variables et affichez le
template. Disons par exemple que nous avons un t<>l<EFBFBD>scripteur dans template. Disons par exemple que nous avons un t<>l<EFBFBD>scripteur dans
@@ -233,16 +237,16 @@ Pretty easy isn't it?
mieux de pouvoir ajouter ce t<>l<EFBFBD>scripteur <20> n'importe quelle application mieux de pouvoir ajouter ce t<>l<EFBFBD>scripteur <20> n'importe quelle application
en incluant directement le template sans avoir <20> se soucier de la r<>cup<75>ration en incluant directement le template sans avoir <20> se soucier de la r<>cup<75>ration
des donn<6E>es. des donn<6E>es.
</para> </para>
<para> <para>
Vous pouvez int<6E>grer du PHP dans vos templates avec les balises Vous pouvez int<6E>grer du PHP dans vos templates avec les balises
{php}{/php}. Avec cette m<>thode, vous pouvez inclure des templates complets, {php}{/php}. Avec cette m<>thode, vous pouvez inclure des templates complets,
dans la mesure o<> ils r<>cup<75>rent leurs propres donn<6E>es pour les assigner dans la mesure o<> ils r<>cup<75>rent leurs propres donn<6E>es pour les assigner
<20> leurs propres variables. Avec le traitement int<6E>gr<67> <20> leurs propres variables. Avec le traitement int<6E>gr<67>
de cette fa<66>on, vous pouvez garder le template et le traitement ensemble. de cette fa<66>on, vous pouvez garder le template et le traitement ensemble.
Ainsi, on ne se soucie plus d'o<> vient le contenu du template, Ainsi, on ne se soucie plus d'o<> vient le contenu du template,
tout vient comme un seul et unique composant. tout vient comme un seul et unique composant.
</para> </para>
<example> <example>
<title>template composant</title> <title>template composant</title>
<programlisting> <programlisting>
@@ -251,15 +255,15 @@ Pretty easy isn't it?
{php} {php}
// notre fonction pour r<>cup<75>rer les donn<6E>es // notre fonction pour r<>cup<75>rer les donn<6E>es
function fetch_ticker($symbol,&amp;$ticker_name,&amp;$ticker_price) { function fetch_ticker($symbol,&amp;$ticker_name,&amp;$ticker_price) {
// du traitement qui r<>cup<75>re $ticker_name // du traitement qui r<>cup<75>re $ticker_name
// $ticker_price // $ticker_price
} }
// appelle la fonction // appelle la fonction
fetch_ticker("YHOO",$ticker_name,$ticker_price); fetch_ticker("YHOO",$ticker_name,$ticker_price);
// assigne les variables // assigne les variables
$this->assign("ticker_name",$ticker_name); $this->assign("ticker_name",$ticker_name);
$this->assign("ticker_price",$ticker_price); $this->assign("ticker_price",$ticker_price);
@@ -272,8 +276,8 @@ Stock Name: {$ticker_name} Stock Price: {$ticker_price}</programlisting>
pouvez inclure du PHP dans votre template avec la balise {include_php ...}. pouvez inclure du PHP dans votre template avec la balise {include_php ...}.
De cette fa<66>on, vous pouvez garder s<>par<61>e la logique applicative De cette fa<66>on, vous pouvez garder s<>par<61>e la logique applicative
de la logique de pr<70>sentation. Reportez-vous <20> la fonction <link de la logique de pr<70>sentation. Reportez-vous <20> la fonction <link
linkend="language.function.include.php">include_php</link> pour plus linkend="language.function.include.php">include_php</link> pour plus
d'informations. d'informations.
</para> </para>
<example> <example>
<title>template composant avec include_php</title> <title>template composant avec include_php</title>
@@ -282,16 +286,16 @@ load_ticker.php
--------------- ---------------
&lt;?php &lt;?php
// notre fonction pour r<>cup<75>rer les donn<6E>es // notre fonction pour r<>cup<75>rer les donn<6E>es
function fetch_ticker($symbol,&amp;$ticker_name,&amp;$ticker_price) { function fetch_ticker($symbol,&amp;$ticker_name,&amp;$ticker_price) {
// put logic here that fetches $ticker_name // put logic here that fetches $ticker_name
// and $ticker_price from some resource // and $ticker_price from some resource
} }
// appelle la fonction // appelle la fonction
fetch_ticker("YHOO",$ticker_name,$ticker_price); fetch_ticker("YHOO",$ticker_name,$ticker_price);
// assigne les variables // assigne les variables
$this->assign("ticker_name",$ticker_name); $this->assign("ticker_name",$ticker_name);
$this->assign("ticker_price",$ticker_price); $this->assign("ticker_price",$ticker_price);
?&gt; ?&gt;
@@ -306,17 +310,17 @@ index.tpl
Stock Name: {$ticker_name} Stock Price: {$ticker_price}</programlisting> Stock Name: {$ticker_name} Stock Price: {$ticker_price}</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="tips.obfuscating.email"> <sect1 id="tips.obfuscating.email">
<title>Dissimuler les adresses email</title> <title>Dissimuler les adresses email</title>
<para> <para>
Vous-<2D>tes vous d<>j<EFBFBD> demand<6E> pourquoi vos adresses emails sont sur autant Vous-<2D>tes vous d<>j<EFBFBD> demand<6E> pourquoi vos adresses emails sont sur autant
de mailing listes de spam ? Une fa<66>on pour les spammers de r<>cup<75>rer les de mailing listes de spam ? Une fa<66>on pour les spammers de r<>cup<75>rer les
adresses est de parcourir les pages Web. Voici une fa<66>on de rem<65>dier adresses est de parcourir les pages Web. Voici une fa<66>on de rem<65>dier
<EFBFBD> ce probl<62>me : mettre votre adresse email dans du Javascript brouill<6C> <EFBFBD> ce probl<62>me : mettre votre adresse email dans du Javascript brouill<6C>
au milieu de votre source HTML, sans que cela ne g<>ne l'affichage sur le au milieu de votre source HTML, sans que cela ne g<>ne l'affichage sur le
navigateur Web. Cela est fait gr<67>ce au plugin mailto. navigateur Web. Cela est fait gr<67>ce au plugin mailto.
</para> </para>
<example> <example>
<title>exemple de dissimulation d'une adresse email</title> <title>exemple de dissimulation d'une adresse email</title>
<programlisting> <programlisting>
@@ -329,15 +333,15 @@ Send inquiries to
</programlisting> </programlisting>
</example> </example>
<note> <note>
<title>Note technique</title> <title>Note technique</title>
<para> <para>
Cette m<>thode n'est pas infaillible. Un spammer peut programmer son Cette m<>thode n'est pas infaillible. Un spammer peut programmer son
collecteur d'email pour passer outre cette astuce, mais c'est cependant collecteur d'email pour passer outre cette astuce, mais c'est cependant
peu probable. peu probable.
</para> </para>
</note> </note>
</sect1> </sect1>
</chapter> </chapter>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables: