Speciale datatypes
Sommige variabelen in Smarty kun je op meerdere manieren gebruiken: als string
of als object. Deze speciale datatypes kun je daardoor op de traditionale manier
in je template gebruiken, (bijvoorbeeld {$email}
), maar ook door individuele
eigenschappen aan te roepen ({$email.hostname}
en {$email.username}
).
Alleen als in de documentatie is aangegeven dat er sprake is van zo'n speciale variabele, kan je deze ook daadwerkelijk zo gebruiken. Het is dus niet zo dat in elke variabele waar een e-mailadres of datum is opgeslagen, de variabele op twee manieren kan worden gebruikt. Het werkt alleen als dit zo staat aangegeven.
Variabelen met een datum
Om het werken met een datum makkelijker te maken in Smarty, is het mogelijk om
rechtstreeks een aantal eigenschappen van een datum op vragen. Datums zou je
standaard kunnen gebruiken als: {$date}
. En dit werkt inderdaad: dit wordt
weergegeven in YYYY-MM-DD hh:mm:ss
formaat. Maar, in gevallen waar dit in de
documentatie staat aangegeven, kun je de datum ook als object gebruiken en
individuele eigenschappen aanspreken:
{$date}
: Geeft de datum weer in YYYY-MM-DD hh:mm:ss formaat{$date.time}
: Geeft het tijdstip van de datum zonder dag/maand/jaar{$date.timestamp}
: Geeft de UNIX-timestamp van de datum
Deze variabelen kun je ook goed combineren met de date_format
-modifier
om de weergave van je data precies in te stellen zoals je wilt:
{$date|date_format:"M d"}
Variabelen met een prijs
Wanneer je werkt met prijzen in Smarty, dan wordt die door ons omgezet naar een
Smarty object dat je op verschillende manieren kunt gebruiken. Deze zou je
standaard aanspreken als: {$price}
. Daarnaast kun je deze variabele ook als object
gebruiken, afzonderlijk de valuta en het bedrag ophalen en deze verwerken in je
templates. Dit kun je met de volgende eigenschappen:
{$price}
: Geeft de prijs weer met de valuta als code (dus bijvoorbeeld EUR 19.99){$price.value}
: Geeft het bedrag van de prijs{$price.currency}
: Geeft de valuta van de prijs{$price.html}
: Geeft de HTML code van de valuta{$price.symbol}
: Geeft het symbool van de valuta{$price.name}
: Geeft de naam van de valuta
Variabelen met een adres
Om het werken met adressen makkelijker te maken, is het mogelijk om rechtstreeks een aantal eigenschappen van een adres op te vragen. Zo kun je bijvoorbeeld standaard het hele adres in een template verwerken, maar om specifieke onderdelen van het adres aan te spreken, kun je de volgende eigenschappen gebruiken:
{$address}
: Geeft het volledige adres weer, verspreid over meerdere regels. Bijvoorbeeld:De Ruijterkade 112 1011 AB Amsterdam Noord-Holland Netherlands
{$address.street}
: Geeft de straatnaam en huisnummer van het adres (dusDe Ruijterkade 112
){$address.streetName}
: Geeft de straatnaam van het adres (dusDe Ruijterkade
){$address.streetNumber}
: Geeft het huisnummer van het adres (dus112
){$address.zipcode}
: Geeft de postcode van het adres (dus1011 AB
){$address.city}
: Geeft de stad van het adres (dusAmsterdam
){$address.state}
: Geeft de staat/province/regio van het adres (dusNoord-Holland
){$address.country}
: Geeft het land van het adres (dusNetherlands
){$address.country.code}
: Geeft de landcode van het land (dusNL
)
Variabelen met een e-mailadres
Je kunt e-mailadressen rechtstreeks weergeven in Smarty. Echter kun je ook los de gebruikersnaam of hostnaam van het e-mailadres aanspreken en verwerken in je templates. Dit kun je doen door de volgende eigenschappen te gebruiken:
{$email}
: Geeft het volledige e-mailadres (dusjan.jansen@example.com
){$email.username}
: Geeft de gebruikersnaam van een e-mailadres (dusjan.jansen
){$email.hostname}
: Geeft de hostnaam van een e-mailadres (dusexample.com
)
Variabelen met een URL
Je kunt URLs in Smarty rechtstreeks weergeven in je templates. Echter kun je ook specifieke onderdelen van een URL aanspreken met de volgende eigenschappen:
{$url}
: Geeft de volledige URL (dushttps://example.com/dit/is/een/pad?query=test
){$url.scheme}
: Geeft het schema van een URL (dushttps
){$url.hostname}
: Geeft de hostnaam van een URL (dusexample.com
){$url.path}
: Geeft het path van een URL (dusdit/is/een/pad
){$url.query}
: Geeft het query-gedeelte van een URL (dusquery=test
)
Variabelen met een persoonsnaam
Wanneer je werkt met persoonsnamen in een Smarty template, kun je de volledige naam rechtstreeks weergeven in een template. Daarnaast kun je ook losse eigenschappen opvragen van dit object om het werken met namen makkelijker te maken:
{$name}
: Geeft de volledige naam weer{$name.firstname}
: Geeft alleen de voornaam van de naam{$name.lastname}
: Geeft alleen de achternaam van de naam{$name.suffix}
: Geeft alleen het tussenvoegsel van de naam