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}