Programmeren in de e-mail-editor

Op diverse plaatsen in de e-mail-editor kun je programmeren om je mailings dynamisch te maken. Hiervoor zijn twee programmeertalen beschikbaar:

  • Smarty: deze taal gebruik je normaal gesproken om te personaliseren, maar Smarty biedt ook constructies als {if} en {foreach} om conditionele content te maken.
  • Javascript: je kunt ook programmeren met javascript om je mailings dynamisch te maken.

Programmeren met Smarty

Op plaatsen waar je HTML code of teksten kunt invoeren, kun je gebruik maken van speciale variabelen om de content mee te personaliseren. Meestal gebruik je eenvoudige constructies zoals Beste {$voornaam}. De personalisatietaal heeft echter meer kracht, waardoor constructies met {if} en {foreach} ook mogelijk zijn. Hierdoor kun je heel dynamische mailings maken.

Meer informatie over personaliseren vind je onder meer terug in deze artikelen:

Programmeren met Javascript

In plaats van Smarty kun je op sommige plekken gebruik maken van Javascript. Dit is voor wat meer ervaren gebruikers die meer kracht nodig hebben dan de standaard opties om te personaliseren. De mogelijkheid om Javascript in te voeren kom je onder meer tegen:

  • op diverse plaatsen in de opvolgactie-editor,
  • bij structuur-condities in de drag-and-drop editor,
  • bij blok-condities in de HTML-editor,
  • als je gebruik maakt van "data-script" attributen voor hyperlinks,
  • en als je gebruik maakt van de {condition}-functie in Javascript.

Beschikbare functies en variabelen

In alle javscript-script code kun je gebruik maken van voorgedefinieerde variabelen als profile, subprofile en copernica. Voor uitgebreidere documentatie kun je het artikel over javascript in opvolgacties raadplegen. De documentatie die je daar aantreft heeft betrekking op opvolgacties, maar de beschikbare variabelen zijn overal gelijk.

Javascript in de e-mail-editor

Zowel bij drag-and-drop templates als bij HTML templates kun je javascript gebruiken om met een zelfschreven script aan te geven of een blok of structuur wel of niet in een mailing moet worden opgenomen. Je kunt bijvoorbeeld korte scriptjes schrijven als:

return profile.fields.leeftijd >= 18;

Naast dit eenvoudige voorbeeld, kun je ook lange of complexe scripts invoeren. Als het script evalueert tot een true-actige waarde (dus true, of een positieve integer, enzovoort), dan wordt de content in de mailing opgenomen.

Het formulier om dergelijke scripts in te voeren vind je bij HTML documenten terug in het formulier om een tekst- of image-blok te bewerken. Daar is een tabblad Conditie waar je Javascript-code kan invoeren.

In de drag-and-drop-editor vind je een javascript-formulier als je de voorwaarden van een structuur bewerkt. Dit formulier zit wat verder weggestopt en vind je als je een structuur bewerkt en op de knop "voorwaarden" klikt.

Javascript in "data-script" attributen

Als je hyperlinks in mailings opneemt, dan kun je deze mailings voorzien van een "data-script" attribuut. Hierin plaats je een script dat wordt uitgevoerd zodra iemand op de link klikt:

<a href="http://example.com" data-script="profile.fields.klik = 'yes';">klik hier</a>

Hiermee gebruik je de javascript-mogelijkheden om een soort mini-opvolgactie te maken. Omdat de javascript-engine zo krachtig is, kun je hier ook opvolgmails mee versturen, subprofielen aanmaken, en nog veel meer. Het advies is echter om het eenvoudig te houden, omdat je omgeving al snel onoverzichtelijk wordt als je hier veelvuldig gebruik van maakt.

Javascript en Smarty combineren

In situaties dat je de kracht van Javascript nodig hebt om iets voor elkaar te krijgen wat niet, of lastiger, lukt met Smarty, dan kun je hiervoor het statement {condition} gebruiken:

{condition expression="profile.fields.leeftijd >= 18"}
    Content alleen voor volwassenen
{/condition}

Overigens hebt je dit niet vaak nodig, aangezien dergelijke constructies ook gewoon met Smarty kunnen worden gemaakt. Bovenstaand javascript-voorbeeld had bijvoorbeeld ook zo worden getoond:

{if $profile.leeftijd >= 18}
    Content alleen voor volwassenen
{/if}