| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | <?xml version="1.0" encoding="iso-8859-1"?> | 
					
						
							|  |  |  |  | <!-- $Revision$ --> | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  | <!-- EN-Revision: 1.12 Maintainer: didou Status: ready --> | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | <chapter id="tips"> | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |  <title>Trucs et astuces</title> | 
					
						
							|  |  |  |  |  <para></para> | 
					
						
							|  |  |  |  |  <sect1 id="tips.blank.var.handling"> | 
					
						
							|  |  |  |  |   <title>Gestion des variables non-assign<67>es</title> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    Peut-<2D>tre voudrez-vous des fois afficher une valeur par | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |    d<>faut pour une variable qui n'a pas <20>t<EFBFBD> assign<67>e, comme | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    pour afficher <literal>&nbsp;</literal> afin que les couleurs | 
					
						
							|  |  |  |  |    de fond des tableaux fonctionnent. Beaucoup utiliseraient une | 
					
						
							|  |  |  |  |    instruction <link linkend="language.function.if"><varname>{if}</varname></link>  | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |    pour g<>rer cel<65>, mais il existe un moyen | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    plus facile dans Smarty : l'utilisation du modificateur | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    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> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </para> | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |   <example> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    <title>Afficher &nbsp; quand une variable est vide</title> | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |    <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | {* la m<>thode pas adapt<70>e *} | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | {if $title eq ''} | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |      | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | {else} | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |    {$title} | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | {/if} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | {* la bonne m<>thode *} | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | {$title|default:' '} | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |    </programlisting> | 
					
						
							|  |  |  |  |   </example> | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |   <para> | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    Voir aussi | 
					
						
							|  |  |  |  |    <link linkend="language.modifier.default"><varname>default</varname></link> et | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |    <link linkend="tips.default.var.handling">la gestion des variables par d<>faut</link>. | 
					
						
							|  |  |  |  |   </para> | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |  </sect1> | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |  <sect1 id="tips.default.var.handling"> | 
					
						
							|  |  |  |  |   <title>Gestion des variables par d<>faut</title> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    Si une variable est utilis<69>e fr<66>quemment dans vos templates, | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    lui appliquer le modificateur | 
					
						
							|  |  |  |  |    <link linkend="language.modifier.default"><varname>default</varname></link> | 
					
						
							|  |  |  |  |    peut <20>tre un peu fastidieux. | 
					
						
							| 
									
										
										
										
											2004-12-26 21:12:45 +00:00
										 |  |  |  |    Vous pouvez rem<65>dier <20> cel<65> en lui assignant une valeur par d<>faut | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    avec la fonction <link linkend="language.function.assign"><varname>{assign}</varname></link>. | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </para> | 
					
						
							|  |  |  |  |   <example> | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    <title>Assigner une valeur par d<>faut <20> une variable de template</title> | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | <programlisting> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | {* faites cela quelque part en haut de votre template *} | 
					
						
							|  |  |  |  | {assign var='title' value=$title|default:'no title'} | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | {* si $title est vide, il contiendra alors la valeur "no title" *} | 
					
						
							|  |  |  |  | {$title} | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |    </programlisting> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </example> | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |   <para> | 
					
						
							|  |  |  |  |    Voir aussi | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    <link linkend="language.modifier.default"><varname>default</varname></link> et | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |    <link linkend="tips.blank.var.handling">la gestion des variables non-assign<67>es</link>. | 
					
						
							|  |  |  |  |   </para> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |  </sect1> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |  <sect1 id="tips.passing.vars"> | 
					
						
							|  |  |  |  |   <title>Passage du titre <20> un template d'en-t<>te</title> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    Quand la majorit<69> de vos templates utilisent les m<>mes en-t<>te et pied-de-page, | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    il est d'usage de les mettre dans leurs propres templates et de les inclure | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    (<link linkend="language.function.include"><varname>{include}</varname></link>). | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    Mais comment faire si l'en-t<>te doit avoir un titre diff<66>rent, selon la page | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  |    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. | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </para> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   <example> | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    <title>Passer le titre au template d'en-t<>te</title> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    <para> | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  |     <filename>mainpage.tpl</filename> - Lorsque la page principal est construite, | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     le titre <quote>Man Page</quote> est pass<73> au <filename>header.tpl</filename> et sera utilis<69> | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  |     en tant que titre. | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    </para> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | {include file='header.tpl' title='Main Page'} | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | {* le corps du template va ici *} | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | {include file='footer.tpl'} | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |    </programlisting> | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    <para> | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  |     <filename>archives.tpl</filename> - Lorsque la page principal est construite, le titre | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     sera <quote>Archives</quote>. Notez que dans cet exemple, nous utilisons une variable du fichier | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  |     <filename>archives_page.conf</filename> au lieu d'une variable classique. | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | {config_load file='archive_page.conf'} | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | {include file='header.tpl' title=#archivePageTitle#} | 
					
						
							|  |  |  |  | {* corps du template ici *} | 
					
						
							|  |  |  |  | {include file='footer.tpl'} | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |    </programlisting> | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    <para> | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     <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>. | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | <html> | 
					
						
							|  |  |  |  |  <head> | 
					
						
							| 
									
										
										
										
											2006-04-09 21:59:55 +00:00
										 |  |  |  |   <title>{$title|default:'Smarty News'}</title> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |  </head> | 
					
						
							|  |  |  |  |  <body> | 
					
						
							|  |  |  |  |   ]]> | 
					
						
							|  |  |  |  |    </programlisting> | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    <para> | 
					
						
							|  |  |  |  |     <filename>footer.tpl</filename> | 
					
						
							|  |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | </body> | 
					
						
							|  |  |  |  | </html> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |    </programlisting> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </example> | 
					
						
							|  |  |  |  |  </sect1> | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |  <sect1 id="tips.dates"> | 
					
						
							|  |  |  |  |   <title>Dates</title> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    De fa<66>on g<>n<EFBFBD>rale, essayez de toujours passer les dates <20> Smarty | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  |    sous forme de <ulink url="&url.php-manual;time">timestamp</ulink>. | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |    Cela permet aux designers de templates d'utiliser | 
					
						
							|  |  |  |  |    <link linkend="language.modifier.date.format"><varname>date_format</varname></link> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |     pour avoir un contr<74>le total sur le formatage des dates et de comparer | 
					
						
							|  |  |  |  |     facilement les dates entre elles. | 
					
						
							|  |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <example> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     <title>Utilisation de date_format</title> | 
					
						
							|  |  |  |  |     <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | {$startDate|date_format} | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							|  |  |  |  |     <para> | 
					
						
							|  |  |  |  |      Affichera : | 
					
						
							|  |  |  |  |     </para> | 
					
						
							|  |  |  |  |     <screen> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  | Jan 4, 2009 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </screen> | 
					
						
							|  |  |  |  |     <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | {$startDate|date_format:"%Y/%m/%d"} | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							|  |  |  |  |     <para> | 
					
						
							|  |  |  |  |      Affichera : | 
					
						
							|  |  |  |  |     </para> | 
					
						
							|  |  |  |  |     <screen> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  | 2009/01/04 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | ]]> | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |      </screen> | 
					
						
							|  |  |  |  |      <para> | 
					
						
							|  |  |  |  |       Les dates peuvent <20>tre compar<61>es dans le template en utilisant les timestamps, comme ceci : | 
					
						
							|  |  |  |  |      </para> | 
					
						
							|  |  |  |  |      <programlisting> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | {if $date1 < $date2} | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |    ... | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | {/if} | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </example> | 
					
						
							|  |  |  |  |    <para> | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     En utilisant la fonction | 
					
						
							|  |  |  |  |     <link linkend="language.function.html.select.date"><varname>{html_select_date}</varname></link>  | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  |     dans un template, le programmeur veut en g<>n<EFBFBD>ral convertir le | 
					
						
							|  |  |  |  |     r<>sultat d'un formulaire en un timestamp. | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |     Voici une fonction qui devrait vous <20>tre utile. | 
					
						
							|  |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <example> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     <title>Conversion des <20>l<EFBFBD>ments date d'un formulaire en timestamp</title> | 
					
						
							|  |  |  |  |     <programlisting role="php"> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | <?php | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-26 21:12:45 +00:00
										 |  |  |  | // cel<65> suppose que vos <20>l<EFBFBD>ments de formulaire soient nomm<6D>s | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | // startDate_Day, startDate_Month, startDate_Year | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | $startDate = makeTimeStamp($startDate_Year, $startDate_Month, $startDate_Day); | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | function makeTimeStamp($year='', $month='', $day='') | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    if(empty($year)) { | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |        $year = strftime('%Y'); | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    } | 
					
						
							|  |  |  |  |    if(empty($month)) { | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |        $month = strftime('%m'); | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    } | 
					
						
							|  |  |  |  |    if(empty($day)) { | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |        $day = strftime('%d'); | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    } | 
					
						
							| 
									
										
										
										
											2005-05-24 20:07:09 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    return mktime(0, 0, 0, $month, $day, $year); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ?> | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </example> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-05-24 20:07:09 +00:00
										 |  |  |  |    <para> | 
					
						
							|  |  |  |  |     Voir aussi | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     <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>, | 
					
						
							| 
									
										
										
										
											2005-05-24 20:07:09 +00:00
										 |  |  |  |    </para> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </sect1> | 
					
						
							| 
									
										
										
										
											2006-02-18 17:54:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   <sect1 id="tips.wap"> | 
					
						
							|  |  |  |  |    <title>WAP/WML</title> | 
					
						
							|  |  |  |  |    <para> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |     Les templates WAP/WML n<>cessitent un en-t<>te | 
					
						
							|  |  |  |  |     <ulink url="&url.php-manual;header">Content-Type</ulink> qui doit <20>tre | 
					
						
							| 
									
										
										
										
											2004-12-26 21:12:45 +00:00
										 |  |  |  |     pass<73> avec le template. Le moyen le plus facile de faire cel<65> est d'<27>crire | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |     une fonction utilisateur qui <20>crit l'en-t<>te. Si vous utilisez le  | 
					
						
							|  |  |  |  |     <link linkend="caching">cache</link>, | 
					
						
							| 
									
										
										
										
											2004-12-26 21:12:45 +00:00
										 |  |  |  |     cel<65> ne fonctionnera pas. Nous utiliserons donc une balise d'insertion | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |     (<link linkend="language.function.insert">{insert}</link>) | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  |     (rappelez-vous que les balises d'insertion ne sont pas mises en cache !). | 
					
						
							|  |  |  |  |     Assurez-vous qu'aucune sortie | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |     rien n'est transmise au navigateur avant l'appel du template, sans quoi | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  |     la modification de l'en-t<>te <20>chouera. | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <example> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |     <title>Utilisation d'{insert} pour <20>crire un en-t<>te Content-Type WML</title> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     <programlisting role="php"> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | <?php | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | // assurez-vous que Apache est configur<75> pour les extensions .wml ! | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | // mettez cette fonction quelque part dans votre applications | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | // ou dans Smarty.addons.php | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | function insert_header()  | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |    // cette fonction attend un argument $content | 
					
						
							|  |  |  |  |    if (empty($params['content'])) { | 
					
						
							|  |  |  |  |        return; | 
					
						
							|  |  |  |  |    } | 
					
						
							|  |  |  |  |    header($params['content']); | 
					
						
							|  |  |  |  |    return; | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | ?> | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							|  |  |  |  |     <para> | 
					
						
							|  |  |  |  |      votre template Smarty <emphasis>doit</emphasis> commencer avec la balise d'insertion : | 
					
						
							|  |  |  |  |     </para> | 
					
						
							|  |  |  |  |     <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | {insert name=header content="Content-Type: text/vnd.wap.wml"} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | <?xml version="1.0"?> | 
					
						
							|  |  |  |  | <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | <!-- begin new wml deck --> | 
					
						
							|  |  |  |  | <wml> | 
					
						
							|  |  |  |  |  <!-- begin first card --> | 
					
						
							|  |  |  |  |  <card> | 
					
						
							|  |  |  |  |   <do type="accept"> | 
					
						
							|  |  |  |  |    <go href="#two"/> | 
					
						
							|  |  |  |  |   </do> | 
					
						
							|  |  |  |  |   <p> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    Welcome to WAP with Smarty! | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |    Press OK to continue... | 
					
						
							|  |  |  |  |   </p> | 
					
						
							|  |  |  |  |  </card> | 
					
						
							|  |  |  |  |  <!-- begin second card --> | 
					
						
							|  |  |  |  |  <card id="two"> | 
					
						
							|  |  |  |  |   <p> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    Pretty easy isn't it? | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |   </p> | 
					
						
							|  |  |  |  |  </card> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | </wml> | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </example> | 
					
						
							|  |  |  |  |   </sect1> | 
					
						
							|  |  |  |  |   <sect1 id="tips.componentized.templates"> | 
					
						
							|  |  |  |  |    <title>Templates composants</title> | 
					
						
							|  |  |  |  |    <para> | 
					
						
							|  |  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |     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 | 
					
						
							|  |  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     des donn<6E>es ? | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <para> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     Vous pouvez r<>aliser cel<65> en <20>crivant un plugin personnalis<69> pour r<>cup<75>rer le contenu | 
					
						
							|  |  |  |  |     et l'assigner <20> une variable du template. | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <example> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     <title>Template composant</title> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |     <para> | 
					
						
							|  |  |  |  |      <filename>function.load_ticker.php</filename> - | 
					
						
							|  |  |  |  |      Efface le fichier du r<>pertoire des | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |      <link linkend="variable.plugins.dir"><parameter>$plugins</parameter></link> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |     </para> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     <programlisting role="php"> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | <?php | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | // notre fonction pour r<>cup<75>rer les donn<6E>es | 
					
						
							|  |  |  |  | function fetch_ticker($symbol,&$ticker_name,&$ticker_price)  | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |    // du traitement qui r<>cup<75>re $ticker_name | 
					
						
							|  |  |  |  |    // depuis la ressource ticker | 
					
						
							|  |  |  |  |    return $ticker_info; | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | function smarty_function_load_ticker($params, &$smarty)  | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |    // appel de la fonction | 
					
						
							|  |  |  |  |    $ticker_info = fetch_ticker($params['symbol']); | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |    // assignation de la variable de template | 
					
						
							|  |  |  |  |    $smarty->assign($params['assign'], $ticker_info); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ?> | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |     <para> | 
					
						
							|  |  |  |  |      <filename>index.tpl</filename> | 
					
						
							|  |  |  |  |     </para> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     <programlisting> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2006-04-09 21:59:55 +00:00
										 |  |  |  | {load_ticker symbol='SMARTY' assign="ticker"} | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | Stock Name: {$ticker.name} Stock Price: {$ticker.price} | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </example> | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |    <para> | 
					
						
							|  |  |  |  |     Voir aussi | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     <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>. | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |    </para> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </sect1> | 
					
						
							|  |  |  |  |   <sect1 id="tips.obfuscating.email"> | 
					
						
							|  |  |  |  |    <title>Dissimuler les adresses email</title> | 
					
						
							|  |  |  |  |    <para> | 
					
						
							|  |  |  |  |     Vous-<2D>tes vous d<>j<EFBFBD> demand<6E> pourquoi vos adresses emails sont sur autant | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     de listes de diffusion de spam ? Une fa<66>on pour les spammers de r<>cup<75>rer les | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |     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> | 
					
						
							| 
									
										
										
										
											2004-12-26 21:12:45 +00:00
										 |  |  |  |     au milieu de votre source HTML, sans que cel<65> ne g<>ne l'affichage sur le | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     navigateur Web. Cela est fait gr<67>ce au plugin  | 
					
						
							|  |  |  |  |     <link linkend="language.function.mailto"><varname>{mailto}</varname></link>. | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </para> | 
					
						
							|  |  |  |  |    <example> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  |     <title>Exemple de dissimulation d'une adresse email</title> | 
					
						
							| 
									
										
										
										
											2004-03-28 15:18:13 +00:00
										 |  |  |  | <programlisting> | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | <![CDATA[ | 
					
						
							| 
									
										
										
										
											2006-04-09 21:59:55 +00:00
										 |  |  |  | <div id="contact">Envoyer une demande <20> | 
					
						
							|  |  |  |  | {mailto address=$EmailAddress encode='javascript' subject='Bonjour'} | 
					
						
							| 
									
										
										
										
											2004-12-21 20:31:42 +00:00
										 |  |  |  | ]]> | 
					
						
							|  |  |  |  |     </programlisting> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |    </example> | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |    <note> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |     <title>Note technique</title> | 
					
						
							|  |  |  |  |     <para> | 
					
						
							|  |  |  |  |      Cette m<>thode n'est pas infaillible. Un spammer peut programmer son | 
					
						
							|  |  |  |  |      collecteur d'email pour passer outre cette astuce, mais c'est cependant | 
					
						
							|  |  |  |  |      peu probable. | 
					
						
							|  |  |  |  |     </para> | 
					
						
							| 
									
										
										
										
											2004-04-19 17:08:12 +00:00
										 |  |  |  |    </note> | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |    <para> | 
					
						
							|  |  |  |  |     Voir aussi | 
					
						
							| 
									
										
										
										
											2006-09-30 03:20:52 +00:00
										 |  |  |  |     <link linkend="language.modifier.escape"><varname>escape</varname></link> et | 
					
						
							|  |  |  |  |     <link linkend="language.function.mailto"><varname>{mailto}</varname></link>. | 
					
						
							| 
									
										
										
										
											2005-05-10 21:15:40 +00:00
										 |  |  |  |    </para> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   </sect1> | 
					
						
							|  |  |  |  |  </chapter> | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |  <!-- Keep this comment at the end of the file
 | 
					
						
							|  |  |  |  |  Local variables: | 
					
						
							|  |  |  |  |  mode: sgml | 
					
						
							|  |  |  |  |  sgml-omittag:t | 
					
						
							|  |  |  |  |  sgml-shorttag:t | 
					
						
							|  |  |  |  |  sgml-minimize-attributes:nil | 
					
						
							|  |  |  |  |  sgml-always-quote-attributes:t | 
					
						
							|  |  |  |  |  sgml-indent-step:1 | 
					
						
							|  |  |  |  |  sgml-indent-data:t | 
					
						
							|  |  |  |  |  indent-tabs-mode:nil | 
					
						
							|  |  |  |  |  sgml-parent-document:nil | 
					
						
							|  |  |  |  |  sgml-default-dtd-file:"../../../../manual.ced" | 
					
						
							|  |  |  |  |  sgml-exposed-tags:nil | 
					
						
							|  |  |  |  |  sgml-local-catalogs:nil | 
					
						
							|  |  |  |  |  sgml-local-ecat-files:nil | 
					
						
							|  |  |  |  |  End: | 
					
						
							|  |  |  |  |  vim600: syn=xml fen fdm=syntax fdl=2 si | 
					
						
							|  |  |  |  |  vim: et tw=78 syn=sgml | 
					
						
							|  |  |  |  |  vi: ts=1 sw=1 | 
					
						
							| 
									
										
										
										
											2005-07-10 19:27:50 +00:00
										 |  |  |  |  --> |