Externe content gebruiken in e-mailtemplates

In de e-mail-editor kun je externe databronnen toevoegen aan een template. Dit stel je in onder Configuratie op het tabblad Data-bronnen. De data wordt tijdens het samenstellen van de mailing ingeladen en is beschikbaar als een Smarty variabele. De data kan in JSON en XML formaat worden ingeladen.

Configureren

Elke databron moet je een unieke Smarty-variabelenaam geven. De ingeladen data komt via deze variabele beschikbaar in de mailing. Bij het toevoegen vul je de volgende velden in:

  • Link naar JSON-/XML-bestand: De URL naar de het bronbestand
  • Wijs toe aan Smarty-variabelennaam: De naam waarmee je de data aanspreekt in je template. Bijvoorbeeld data, te gebruiken als {$data}.
  • Beschrijving: Een optionele korte omschrijving.

Voorbeeld JSON

De gegevens uit het JSON- of XML-bestand zijn toegankelijk via de Smarty-variabele die je zelf hebt gekozen. De velden zijn vervolgens uit te lezen volgens dezelfde structuur als in het bestand.

Voorbeeld:

{
  "naam": "Simon",
  "woonplaats": "Amsterdam",
  "producten": [{
    "naam": "Kandelaar",
    "prijs": "5 euro"
  }, {
    "naam": "Kaars",
    "prijs": "2 euro"
  }]
}

Als je dit bestand toevoegt onder de naam data, gebruik je in je template:

{$data.naam}
{$data.woonplaats}

Als je data een lijst bevat, bijvoorbeeld een lijst met producten, dan kun je een specifiek element uit die lijst opvragen:

{$data.producten.0.naam}
{$data.producten.0.prijs}

Wil je meerdere elementen uit een lijst tonen? Gebruik dan de Smarty foreach-functie om door de lijst te lopen:

{foreach $data.producten as $product}
  {$product.naam}
  {$product.prijs}
{/foreach}

Voorbeeld XML-data

Een XML-bestand kan er zo uitzien:

<winkel>
  <naam>Kledingwinkel</naam>
  <producten>
    <product id="item19" type="kleding">
      <id>19</id>
      <naam>T-shirt</naam>
      <kleur>Blauw</kleur>
      <prijs>19.95</prijs>
    </product>
    <product id="item20" type="kleding">
      <id>20</id>
      <naam>Jas</naam>
      <kleur>Zwart</kleur>
      <prijs>89.95</prijs>
    </product>
  </producten>
</winkel>

Met de variabelenaam data kun je dit in je template gebruiken als:

Winkel: {$data.winkel.naam}

{foreach from=$data.winkel.producten.product as $product}
  {$product.naam} - {$product.kleur} - &euro;{$product.prijs}<br />
{/foreach}

Attributen uitlezen

Attributen van XML-elementen zijn meestal direct beschikbaar in je template. Zo kun je type="kleding" gewoon benaderen met {$product.type} binnen je foreach.

Alleen als een element een attribuut én een onderliggende node met dezelfde naam heeft, moet je het attribuut benaderen via {$product._attributes.naam}. Dit voorkomt verwarring tussen de waarde van het attribuut en de inhoud van de node.

Op basis van het voorbeeld hierboven geven de volgende variabelen dit terug:

Smarty-code Geeft terug Uitleg
{$product.id} 20 De waarde van de <id>-onderliggende node binnen <product>
{$product._attributes.id} item20 De waarde van het id-attribuut op <product>
{$product.type} kleding De waarde van het type-attribuut op <product>