Smarty



Foreach
<ul>
    {foreach from=$myArray item=foo}
    <li>{$foo}</li>
    {/foreach}
</ul>
<ul>
    {foreach from=$myArray key=k item=v}
    <li>{$k}: {$v}</li>
    {/foreach}
</ul>
For
<ul>
{for $foo=1 to 3}
    <li>{$foo}</li>
{/for}
</ul>
Conditions
Opérateur Syntaxe alternative Exemple de syntaxe Signification Equivalent PHP
== eq $a eq $b égalité ==
!= ne, neq $a neq $b différence !=
> gt $a gt $b supérieur à >
< lt $a lt $b inférieur à <
>= gte, ge $a ge $b supérieur ou égal à >=
<= lte, le $a le $b inférieur ou égal à <=
===   $a === 0 égalité (type et valeur) ===
! not not $a négation !
% mod $a mod $b modulo %
is [not] div by   $a is not div by 4 divisible par $a % $b == 0
is [not] even   $a is not even est [ou non] un nombre pair $a % 2 == 0
is [not] even by   $a is not even by $b paritée de groupe ($a / $b) % 2 == 0
is [not] odd   $a is not odd est [ou non] un nombre impair $a % 2 != 0
is [not] odd by   $a is not odd by $b est [ou non] un groupe impair ($a / $b) % 2 != 0

{if $name eq 'Fred'}
    Bienvenue, Monsieur.
{elseif $name eq 'Wilma'}
    Bienvenue m'dame.
{else}
    Bienvenue, qui que vous soyez.
{/if}
{if isset($name) && $name = 'Blog'}
    {* faire quelque chose *}
{elseif $name == $foo}
    {* faire quelque chose *}
{/if}
Include
Include simple
{include file='page_header.tpl'}
Passage de variables
{include file='links.tpl' title='Newest links' links=$link_array}
Assignement à une variable
# Cet exemple assigne le contenu de nav.tpl à la variable $navbar, qui est alors affichée en haut et en bas de la page.

{include file='nav.tpl' assign=navbar}
{include file='header.tpl' title='Smarty is cool'}
{$navbar}
{* le corps du template va ici *}
{$navbar}
{include file='footer.tpl'}
Extends
# The {extends} tag must be on the first line of the template.
# If a child template extends a parent template with the {extends} tag it may contain only {block} tags.
# Any other template content is ignored.

{extends file='parent.tpl'}
{extends 'parent.tpl'}  {* short-hand *}
Capture
{capture} with the name attribute
{* we don't want to print a div tag unless content is displayed *}
{capture name="banner"}
{capture "banner"} {* short-hand *}
    {include file="get_banner.tpl"}
{/capture}

{if $smarty.capture.banner ne ""}
    <div id="banner">{$smarty.capture.banner}</div>
{/if}
{capture} into a template variable
{capture name=some_content assign=popText}
{capture some_content assign=popText} {* short-hand *}
    The server is {$my_server_name|upper} at {$my_server_addr}
    Your ip is {$my_ip}.
{/capture}
{$popText}
Assign
{assign var="name" value="Bob"}
{assign "name" "Bob"} {* short-hand *}

The value of $name is {$name}.
nocache
{assign var="name" value="Bob" nocache}
{assign "name" "Bob"} {* short-hand *}

The value of $name is {$name}.
{assign} a global variable
{assign var=foo value="bar" scope="global"}
{assign "foo" "bar" scope="global"} {* short-hand *}
Literal

Les balises {literal} permettent à un bloc de données d'être pris tel quel, sans qu'il ne soit interprété par Smarty. Très pratique lors de l'emplois d'éléments tels que javascript, acolades et autres qui peuvent confondre le moteur de template. Tout le contenu situé entre les balises {literal}{/literal} ne sera pas interprété, et affiché comme du contenu statique. Si vous voulez inclure des tags de template dans votre block {literal}, utilisez plutôt {ldelim}{rdelim} pour échapper les délimiteurs individuels.

{literal}
<script language=javascript>
function helloWorld() {
    console.log("Hello World");
}
</script>
{/literal}
Debug
{$var|@print_r}
{$var|@var_dump}
escape_html
escape
{$variable|escape:"html"}
nofilter
{$variable nofilter}
in_array
{if '05'|in_array:$aSegment.aNotices.aStop}EXIST{/if}
{if in_array($x, $array) && in_array($y, $array)}var x and var y are in this array{/if}
array_key_exists
{if 'needle'|array_key_exists:$haystack}
    ...
{/if}
{if array_key_exists('needle', $haystack)}
    ...
{/if}
count
{count($mydata)}
{$mydata|count}
date_format

Formate une date / heure au format strftime() donné. Les dates peuvent être passées à smarty en tant que timestamp unix, timestamp mysql ou comme chaîne quelconque contenant mois jour année (interprétable par strtotime()). Les concepteurs de templates peuvent utiliser date_format pour contrôler parfaitement le format de sortie de la date. Si la date passée à date_format est vide, et qu'un second paramètre est donné, ce dernier sera utilisé comme étant la date à formater.

{$smarty.now|date_format}
{$smarty.now|date_format:"%D"}
{$smarty.now|date_format:$config.date}

{$yesterday|date_format}
{$yesterday|date_format:"%A, %B %e, %Y"}
{$yesterday|date_format:$config.time}
  • %a - Abréviation du jour de la semaine, selon les paramètres locaux.

  • %A - Nom du jour de la semaine, selon les paramètres locaux.

  • %b - Abréviation du nom du jour, selon les paramètres locaux.

  • %B - Nom complet du mois, selon les paramètres locaux.

  • %c - Préférences d'affichage selon les paramètres locaux.

  • %C - Siècle, (L'année divisée par 100 et tronquée comme un entier, de 00 à 99)

  • %d - Jour du mois, en tant que nombre décimal (de 01 à 31)

  • %D - même chose que %m/%d/%y

  • %e - Jour du mois en tant que nombre décimal. Un chiffre unique est précédé par un espace (de 1 à 31)

  • %g - Position de la semaine dans le siècle [00,99]

  • %G - Position de la semaine, incluant le siècle [0000,9999]

  • %h - identique à %b

  • %H - L'heure en tant que décimale, en utilisant une horloge sur 24 (de 00 à 23)

  • %I - L'heure en tant que décimale en utilisant une horloge sur 12 (de 01 to 12)

  • %j - jour de l'année (de 001 à 366)

  • %k - Heure (horloge sur 24). Les numéros à un chiffre sont précédés d'un espace. (de 0 à 23)

  • %l - Heure (horloge sur 12). Les numéros à un chiffre sont précédés d'un espace. (de 1 à 12)

  • %m - Mois en tant que nombre décimal (de 01 à 12)

  • %M - Minute en tant que nombre décimal

  • %n - Retour chariot (nouvelle ligne).

  • %p - soit am soit pm selon l'heure donnée, ou alors leurs correspondances locales.

  • %r - heure en notation a.m. et p.m.

  • %R - Heure au format 24 heures

  • %S - Secondes en tant que nombre décimal.

  • %t - Caractère tabulation.

  • %T - Heure courante, équivalent à %H:%M:%S

  • %u - Jour de la semaine en tant que nombre décimal [1,7], ou 1 représente le lundi.

  • %U - Le numéro de la semaine en nombre décimal, utilisant le premier dimanche en tant que premier jour de la première semaine.

  • %V - Le numéro de la semaine de l'année courante selon la norme ISO 8601:1988,
    de 01 à 53, ou la semaine 1 est la première semaine qui dispose au minimum
    de 4 jours dans l'année courante et ou Lundi est le premier jour
    de cette semaine.

  • %w - Jour de la semaine en tant que nombre décimal, dimanche étant 0

  • %W - Le numéro de la semaine de l'année courante en tant que nombre décimal, ou Lundi est le premier jour de la première semaine.

  • %x - Représentation préférée de la date selon les paramètres locaux.

  • %X - Représentation préférée de l'heure selon les paramètres locaux, sans la date.

  • %y - L'année en tant que nombre décimal, sans le siècle. (de 00 à 99)

  • %Y - L'année en tant que nombre décimal, avec le siècle.

  • %Z - Zone horraire, nom ou abréviation

  • %% - Un caractère litéral `%'

How to assign an array within a smarty template file ?
{assign var='icon' value=','|explode:"dir, doc, exe"}