mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-02 21:31:48 +01:00
sync with EN
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 1.8 Maintainer: didou Status: ready -->
|
||||
<!-- EN-Revision: 1.9 Maintainer: didou Status: ready -->
|
||||
<chapter id="tips">
|
||||
<title>Trucs et astuces</title>
|
||||
<para></para>
|
||||
@@ -14,10 +14,11 @@
|
||||
instruction <link linkend="language.function.if">{if}</link>
|
||||
pour g<>rer cel<65>, mais il existe un moyen
|
||||
plus facile dans Smarty : l'utilisation du modificateur
|
||||
de variable <emphasis>default</emphasis>.
|
||||
de variable <link
|
||||
linkend="language.modifier.default"><emphasis>d<EFBFBD>faut</emphasis></link>.
|
||||
</para>
|
||||
<example>
|
||||
<title>afficher &nbsp; quand une variable est vide</title>
|
||||
<title>Afficher &nbsp; quand une variable est vide</title>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
{* la m<>thode pas adapt<70>e *}
|
||||
@@ -68,58 +69,77 @@
|
||||
<link linkend="tips.blank.var.handling">la gestion des variables non-assign<67>es</link>.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<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,
|
||||
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
|
||||
(<link linkend="language.function.include">{include}</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 quand il est inclus.
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>passer le titre au template d'en-t<>te</title>
|
||||
|
||||
<para>
|
||||
<filename>mainpage.tpl</filename>
|
||||
</para>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
mainpage.tpl
|
||||
------------
|
||||
|
||||
{include file="header.tpl" title="Main Page"}
|
||||
{* le corps du template va ici *}
|
||||
{include file="footer.tpl"}
|
||||
]]>
|
||||
</programlisting>
|
||||
|
||||
|
||||
archives.tpl
|
||||
------------
|
||||
<para>
|
||||
<filename>archives.tpl</filename>
|
||||
</para>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
|
||||
{config_load file="archive_page.conf"}
|
||||
{include file="header.tpl" title=#archivePageTitle#}
|
||||
{* le corps du template va ici *}
|
||||
{* template body goes here *}
|
||||
{include file="footer.tpl"}
|
||||
]]>
|
||||
</programlisting>
|
||||
|
||||
<para>
|
||||
<filename>header.tpl</filename>
|
||||
</para>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
<html>
|
||||
<head>
|
||||
<title>{$title|default:"BC News"}</title>
|
||||
</head>
|
||||
<body>
|
||||
]]>
|
||||
</programlisting>
|
||||
|
||||
header.tpl
|
||||
----------
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>{$title|default:"BC News"}</TITLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
|
||||
footer.tpl
|
||||
----------
|
||||
</BODY>
|
||||
</HTML>
|
||||
<para>
|
||||
<filename>footer.tpl</filename>
|
||||
</para>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
</body>
|
||||
</html>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
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,
|
||||
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.
|
||||
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
|
||||
Quand la page principale est con<6F>ue, le titre "Main page" est pass<73> <20>
|
||||
<filename>header.tpl</filename> 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 fichier <filename>archives_page.conf</filename> plut<75>t que des
|
||||
variables cod<6F>es en dur. 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
|
||||
<link linkend="language.modifier.default">default</link>.
|
||||
</para>
|
||||
</sect1>
|
||||
@@ -192,7 +212,7 @@ Jan 4, 2001
|
||||
|
||||
$startDate = makeTimeStamp($startDate_Year, $startDate_Month, $startDate_Day);
|
||||
|
||||
function makeTimeStamp($year="", $month="", $day="")
|
||||
function makeTimeStamp($year='', $month='', $day='')
|
||||
{
|
||||
if(empty($year)) {
|
||||
$year = strftime("%Y");
|
||||
@@ -210,30 +230,33 @@ function makeTimeStamp($year="", $month="", $day="")
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
|
||||
<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.modifier.date.format">date_format</link> et
|
||||
<link linkend="language.variables.smarty.now">$smarty.now</link>,
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
<sect1 id="tips.wap">
|
||||
<title>WAP/WML</title>
|
||||
<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
|
||||
<ulink url="&url.php-manual;header">Content-Type</ulink> qui doit <20>tre
|
||||
pass<73> avec le template. Le moyen le plus facile de faire cel<65> 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
|
||||
<link linkend="caching">cache</link>,
|
||||
cel<65> ne fonctionnera pas. Nous utiliserons donc une balise d'insertion
|
||||
(<link linkend="language.function.insert">{insert}</link>)
|
||||
(rappelez-vous que les balises d'insertion ne sont pas mises en cache !).
|
||||
Assurez-vous qu'aucune sortie
|
||||
rien n'est transmise au navigateur avant l'appel du template, sans quoi
|
||||
la modification de l'en-t<>te <20>chouera.
|
||||
</para>
|
||||
<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 role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
@@ -261,27 +284,27 @@ function insert_header()
|
||||
<![CDATA[
|
||||
{insert name=header content="Content-Type: text/vnd.wap.wml"}
|
||||
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
|
||||
|
||||
<!-- begin new wml deck -->
|
||||
<wml>
|
||||
<!-- begin first card -->
|
||||
<card>
|
||||
<do type="accept">
|
||||
<go href="#two"/>
|
||||
</do>
|
||||
<p>
|
||||
<!-- begin new wml deck -->
|
||||
<wml>
|
||||
<!-- begin first card -->
|
||||
<card>
|
||||
<do type="accept">
|
||||
<go href="#two"/>
|
||||
</do>
|
||||
<p>
|
||||
Welcome to WAP with Smarty!
|
||||
Press OK to continue...
|
||||
</p>
|
||||
</card>
|
||||
<!-- begin second card -->
|
||||
<card id="two">
|
||||
<p>
|
||||
Press OK to continue...
|
||||
</p>
|
||||
</card>
|
||||
<!-- begin second card -->
|
||||
<card id="two">
|
||||
<p>
|
||||
Pretty easy isn't it?
|
||||
</p>
|
||||
</card>
|
||||
</p>
|
||||
</card>
|
||||
</wml>
|
||||
]]>
|
||||
</programlisting>
|
||||
@@ -293,8 +316,8 @@ 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">assignez</link>
|
||||
les variables et <link linkend="api.display">affichez</link> le
|
||||
vous instanciez votre objet Smarty, <link linkend="api.assign">assign()</link>
|
||||
les variables et <link linkend="api.display">display()</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
|
||||
@@ -308,12 +331,15 @@ function insert_header()
|
||||
</para>
|
||||
<example>
|
||||
<title>Template composant</title>
|
||||
<para>
|
||||
<filename>function.load_ticker.php</filename> -
|
||||
Efface le fichier du r<>pertoire des
|
||||
<link linkend="variable.plugins.dir">$plugins</link>
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
// Efface le fichier "function.load_ticker.php" dans le r<>pertoire des plugins
|
||||
|
||||
// notre fonction pour r<>cup<75>rer les donn<6E>es
|
||||
function fetch_ticker($symbol,&$ticker_name,&$ticker_price)
|
||||
{
|
||||
@@ -326,17 +352,18 @@ function smarty_function_load_ticker($params, &$smarty)
|
||||
{
|
||||
// appel de la fonction
|
||||
$ticker_info = fetch_ticker($params['symbol']);
|
||||
|
||||
|
||||
// assignation de la variable de template
|
||||
$smarty->assign($params['assign'], $ticker_info);
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
<para>
|
||||
<filename>index.tpl</filename>
|
||||
</para>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
{* in index.tpl *}
|
||||
|
||||
{load_ticker symbol="YHOO" assign="ticker"}
|
||||
|
||||
Stock Name: {$ticker.name} Stock Price: {$ticker.price}
|
||||
@@ -358,7 +385,8 @@ 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<65> est fait gr<67>ce au plugin mailto.
|
||||
navigateur Web. Cel<65> est fait gr<67>ce au plugin
|
||||
<link linkend="language.function.mailto">{mailto}</link>.
|
||||
</para>
|
||||
<example>
|
||||
<title>Exemple de dissimulation d'une adresse email</title>
|
||||
@@ -381,10 +409,12 @@ Send inquiries to
|
||||
</note>
|
||||
<para>
|
||||
Voir aussi
|
||||
<link linkend="language.modifier.escape">escape</link>.
|
||||
<link linkend="language.modifier.escape">escape</link> et
|
||||
<link linkend="language.function.mailto">{mailto}</link>.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
@@ -404,4 +434,4 @@ Send inquiries to
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
-->
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 1.3 Maintainer:gerald Status: ready -->
|
||||
<!-- EN-Revision: 1.4 Maintainer:gerald Status: ready -->
|
||||
<chapter id="troubleshooting">
|
||||
<title>Diagnostic des erreurs</title>
|
||||
<para></para>
|
||||
@@ -23,21 +23,21 @@ Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
|
||||
<para>
|
||||
Smarty vous indique le nom du template, le num<75>ro de la ligne et l'erreur.
|
||||
Apr<70>s cela, vous pouvez conna<6E>tre le num<75>ro de ligne o<> il y a eu erreur dans
|
||||
la d<>finition de la classe Smarty.
|
||||
</para>
|
||||
|
||||
|
||||
<para>
|
||||
Il y a certaines erreurs que Smarty ne peut pas d<>tecter, comme les
|
||||
balises fermantes manquantes. Ce type d'erreurs est la plupart du temps
|
||||
rep<65>r<EFBFBD> dans la phase de compilation PHP du template compil<69>.
|
||||
</para>
|
||||
|
||||
|
||||
<example>
|
||||
<title>erreur d'analyse PHP</title>
|
||||
<title>Erreur d'analyse PHP</title>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
|
||||
@@ -55,14 +55,117 @@ Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
|
||||
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>
|
||||
<![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>
|
||||
<para>
|
||||
Soit le dossier
|
||||
<link linkend="variable.compile.dir">$compile_dir</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>
|
||||
<para>
|
||||
Le dossier <link linkend="variable.compile.dir">$compile_dir</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.
|
||||
</para>
|
||||
|
||||
</listitem><listitem>
|
||||
|
||||
<screen>
|
||||
<![CDATA[
|
||||
Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
|
||||
or is not a directory. in /..
|
||||
]]>
|
||||
</screen>
|
||||
<para>
|
||||
Cela signifie que
|
||||
<link linkend="variable.caching">$caching</link> est activ<69> et soit
|
||||
le dossier
|
||||
<link linkend="variable.cache.dir">$cache_dir</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><listitem>
|
||||
|
||||
<screen>
|
||||
<![CDATA[
|
||||
Fatal error: Smarty error: unable to write to $cache_dir '/...
|
||||
]]>
|
||||
</screen>
|
||||
<para>
|
||||
Cela signifie que
|
||||
<link linkend="variable.caching">$caching</link> est activ<69> et le dossier
|
||||
<link linkend="variable.cache.dir">$cache_dir</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.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</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>.
|
||||
<link linkend="variable.error.reporting">$error_reporting</link> et
|
||||
<link linkend="api.trigger.error">trigger_error()</link>.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
@@ -82,4 +185,4 @@ End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
-->
|
||||
Reference in New Issue
Block a user