Tips & Tricks
Dit document biedt praktisch advies om Smarty effectief te benutten. Hieronder vind je verschillende tips en tricks om je templates te verbeteren.
Variabelen combineren
In Smarty is het mogelijk om eigenschappen aan te spreken van een object, zoals
$object.eigenschap
. Soms wil je echter nog verder gaan met personaliseren, en
wil je op basis van een variabele (een waarde uit een profiel) een andere
eigenschap aanspreken. Dit is bijvoorbeeld handig wanneer je werkt met een
webshop-integratie. Dan kun je dus in plaats van enkel {$webshop.order.123}
gebruiken, ook dynamisch de juiste bestelling aanspreken met
{$webshop.order.$id}
. Dan wordt afhankelijk van de waarde van $id
de juiste
eigenschap opgevraagd bij de $webshop.order
variabele. Hiermee kun je dus
gemakkelijk een bestelnummer ophalen uit je database en deze gebruiken om de
juiste bestelling weer te geven in je template:
Uw bestelling kost {$webshop.order.$id.grand_total}
Objecten als array
Een andere manier om eigenschappen op te halen uit een object, is door ze aan te
spreken als array. Dus in plaats van $object.$id
wordt het $object[$id]
.
Deze twee statements doen exact hetzelfde, alleen kan je in het tweede geval
complexere waardes vormen; in het eerste geval kan je alleen een enkele
variabele gebruiken als naam van een eigenschap, in het tweede geval kan je ook
nog geneste eigenschappen gebruiken:
Uw bestelling kost {$webshop.order[$subprofile.order_id].grand_total}
Daarnaast is het met deze vorm mogelijk om modifiers te gebruiken om de naam van de eigenschap te bewerken, bijvoorbeeld:
Uw bestelling kost {$webshop.order[$subprofile.order_id|trim].grand_total}
Variabelen definieren
In Smarty kun je ook eigen variabelen te definieren. Dit doe je
door gebruik te maken van de assign
-functie:
{assign var="naam" value=$profile.Voornaam|ucfirst}
In sommige gevallen is het noodzakelijk om deze functie te gebruiken om het gewenste resultaat te behalen, bijvoorbeeld wanneer je het resultaat van een statement met modifiers wilt gebruiken om een kolom uit je database aan te spreken:
{assign var="subprofile" value=$profile.Orders|last}
Uw bestelling kost {$webshop.order[$subprofile.order_id].grand_total}