Personalisatie-functies: if

De {if}-functie in Smarty is een veelgebruikte en krachtige functies waarmee je content conditioneel in een mailing kunt opnemen. Deze tag moet altijd worden afgesloten met een bijbehorende {/if} tag waarmee het einde van de optionele content wordt gemarkeerd.

{if $profile.woonplaats == 'Amsterdam'}
    Speciale aanbieding voor mensen uit Amsterdam
{/if}

In bovenstaand voorbeeld wordt een stuk tekst alleen getoond als de ontvanger in Amsterdam woont. Je kunt deze tag combineren met de {else} tag, als je ook een bericht hebt voor anderen:

{if $profile.woonplaats == 'Amsterdam'}
    Speciale bericht voor mensen uit Amsterdam
{else}
    Speciale aanbieding voor alle andere mensen
{/if}

Daarnaast is er een {elseif} tag die je kunt gebruiken voor aanvullende checks. Je kunt de {elseif} meerdere keren herhalen binnen een {if}-blok:

{if $profile.woonplaats == 'Amsterdam'}
    Speciale bericht voor mensen uit Amsterdam
{elseif $profile.woonplaats == 'Rotterdam'}
    Een ander bericht voor mensen uit Rotterdam
{elseif $profile.woonplaats == 'Den Haag'}
    Ook een bericht voor inwoners van Den Haag
{else}
    Ten slotte de mededeling voor ieder ander
{/if}

Operators

Binnen de if-tag kun je allerlei soorten vergelijkingen opnemen, en deze combineren met and en or operators. Je kunt vergelijkingen maken of waardes gelijk zijn aan elkaar, groter of kleiner dan, en allerlei andere checks. Ook kun je modifiers gebruiken om variabelen om te zetten, bijvoorbeeld om een geboortedatum om te zetten naar een leeftijd. Het aantal mogelijkheden is eindeloos:

{if $profile.woonplaats == 'Amsterdam' && $profile.geboortedatum|date_format:"%Y" > 2000}
    Hallo Amsterdammer geboren na 2000.
{/if}

In onderstaande tabel vind je een overzicht van de ondersteunde operators, en hun betekenis:

Symbol Syntax Description
== $a eq $b gelijk
!= $a ne/neq $b ongelijk
> $a gt $b groter dan
< $a lt $b kleiner dan
>= $a gte/ge $b groter dan
<= $a lte/le $b kleiner dan
=== $a === 0 identiek
! not $a negatie
% $a mod $b modulair
is div by $a is div by $b deelbaar door
is even $a is even is even
is even by $a is even by $b grouping level even
is odd $a is odd is oneven
is odd by $a is odd by $b grouping level oneven

Bekijk meer voorbeelden op www.smarty.net