Trucs et astucesGestion des variables non-assignées
Peut-être voudrez-vous des fois afficher une valeur par
défaut pour une variable qui n'a pas été assignée, comme
pour afficher " " afin que les couleurs de fond
des tableaux fonctionnent. Beaucoup utiliseraient une
instruction {if}
pour gérer celà, mais il existe un moyen
plus facile dans Smarty : l'utilisation du modificateur
de variable défaut.
Afficher quand une variable est vide
Voir aussi
default et
la gestion des variables par défaut.
Gestion des variables par défaut
Si une variable est utilisée fréquemment dans vos templates,
lui appliquer le modificateur par défaut peut être un peu fastidieux.
Vous pouvez remédier à celà en lui assignant une valeur par défaut
avec la fonction {assign}.
assigner une valeur par défaut à une variable de template
Voir aussi
default et
la gestion des variables non-assignées.
Passage du titre à un template d'en-tête
Quand la majorité 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
({include}).
Mais comment faire si l'en-tête doit avoir un titre différent, selon la page
d'où on vient ? Vous pouvez passer le titre à l'en-tête en tant qu'
attribut quand il est inclus.
passer le titre au template d'en-têtemainpage.tpl - Lorsque la page principal est construite,
le titre 'Man Page' est passé au header.tpl et sera utilisé
en tant que titre.
archives.tpl - Lorsque la page principal est construite, le titre
sera 'Archives'. Notez que dans cet exemple, nous utilisons une variable du fichier
archives_page.conf au lieu d'une variable classique.
header.tpl - Notez que "Smarty News" est affiché si la variable
$title n'est pas définie, en utilisant le modificateur de variable par
défaut.
{$title|default:'Smarty News'}
]]>
footer.tpl
]]>
Dates
De façon générale, essayez de toujours passer les dates à Smarty
sous forme de timestamp.
Celà permet aux designers de templates d'utiliser
date_format
pour avoir un contrôle total sur le formatage des dates et de comparer
facilement les dates entre elles.
A partir Smarty 1.4.0, vous pouvez passer les dates à Smarty
sous la forme de timestamps Unix ou MySQL, ou tout autre format de dates
que comprend strtotime().
Utilisation de date_format
Affichera :
Affichera :
En utilisant la fonction {html_select_date}
dans un template, le programmeur veut en général convertir le
résultat d'un formulaire en un timestamp.
Voici une fonction qui devrait vous être utile.
Conversion des éléments date d'un formulaire en timestamp
]]>
Voir aussi
{html_select_date},
{html_select_time},
date_format et
$smarty.now,
WAP/WML
Les templates WAP/WML nécessitent un en-tête
Content-Type qui doit être
passé avec le template. Le moyen le plus facile de faire celà est d'écrire
une fonction utilisateur qui écrit l'en-tête. Si vous utilisez le
cache,
celà ne fonctionnera pas. Nous utiliserons donc une balise d'insertion
({insert})
(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 échouera.
Utilisation d'{insert} pour écrire un en-tête Content-Type WML
]]>
votre template Smarty doit commencer avec la balise d'insertion :
Welcome to WAP with Smarty!
Press OK to continue...
Pretty easy isn't it?
]]>
Templates composants
Traditionnellemnt, la programmation avec des templates dans les applications
se déroule de la façon suivante : d'abord vous récupérez vos variables
dans l'application PHP (peut-être avec des requêtes en base de données), puis
vous instanciez votre objet Smarty, assign()
les variables et display() le
template. Disons par exemple que nous avons un téléscripteur dans
notre template. Nous récupérerions les données dans notre application,
puis les assignerions ensuite pour les afficher. Mais ne serait-ce pas
mieux de pouvoir ajouter ce téléscripteur à n'importe quelle application
en incluant directement le template sans avoir à se soucier de la récupération
des données ?
Vous pouvez réaliser celà en écrivant un plugin personnalisé pour récupérer le contenu
et l'assigner à une variable du template.
Template composantfunction.load_ticker.php -
Efface le fichier du répertoire des
$plugins
assign($params['assign'], $ticker_info);
}
?>
]]>
index.tpl
Voir aussi
{include_php},
{include} et
{php}.
Dissimuler les adresses email
Vous-êtes vous déjà demandé pourquoi vos adresses emails sont sur autant
de listes de diffusion de spam ? Une façon pour les spammers de récupérer les
adresses est de parcourir les pages Web. Voici une façon de remédier
à ce problème : mettre votre adresse email dans du Javascript brouillé
au milieu de votre source HTML, sans que celà ne gêne l'affichage sur le
navigateur Web. Celà est fait grâce au plugin
{mailto}.
Exemple de dissimulation d'une adresse email
Envoyer une demande à
{mailto address=$EmailAddress encode='javascript' subject='Bonjour'}
]]>
Note technique
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.
Voir aussi
escape et
{mailto}.