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 (dus De Ruijterkade 112)
  • {$address.streetName}: Geeft de straatnaam van het adres (dus De Ruijterkade)
  • {$address.streetNumber}: Geeft het huisnummer van het adres (dus 112)
  • {$address.zipcode}: Geeft de postcode van het adres (dus 1011 AB)
  • {$address.city}: Geeft de stad van het adres (dus Amsterdam)
  • {$address.state}: Geeft de staat/province/regio van het adres (dus Noord-Holland)
  • {$address.country}: Geeft het land van het adres (dus Netherlands)
  • {$address.country.code}: Geeft de landcode van het land (dus NL)

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 (dus jan.jansen@example.com)
  • {$email.username}: Geeft de gebruikersnaam van een e-mailadres (dus jan.jansen)
  • {$email.hostname}: Geeft de hostnaam van een e-mailadres (dus example.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 (dus https://example.com/dit/is/een/pad?query=test)
  • {$url.scheme}: Geeft het schema van een URL (dus https)
  • {$url.hostname}: Geeft de hostnaam van een URL (dus example.com)
  • {$url.path}: Geeft het path van een URL (dus dit/is/een/pad)
  • {$url.query}: Geeft het query-gedeelte van een URL (dus query=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