Geavanceerde aanhef in de drag-and-drop editor

Het veld 'voornaam' in de database bevat lang niet altijd dezelfde waarde. Zo staan er vaak variaties in met bijvoorbeeld punten of alleen een intitiaal van iemand. Wanneer je dit gebruikt in de aanhef van de e-mail dan krijg je daarbij bijvoorbeeld Beste D., wat er niet heel mooi uit ziet. Idealiter zorg je er voor dat de invoer in je database dit al oplost, maar mocht dat niet lukken dan is het via Smarty op te lossen.

Hoe dit op te lossen met Smarty

Met Smarty kun je de aanhef op verschillende manieren personaliseren. Je kan hiervoor een if/else statement voor gebruiken. Maar het is ook mogelijk om hier de default-modifier voor te gebruiken of de regex_replace functie.

Gebruik van {if} statements

Beste {if $profile.Voornaam !="" && !$profile.Voornaam|strstr:'.' && $profile.Voornaam|count_characters > "1"}{$profile.Voornaam|escape}{else}relatie{/if},

In dit voorbeeld controleren we het veld 'voornaam' op drie punten:

  • Heeft het veld een waarde.
  • Komt er geen punt in naar voren.
  • Is het aantal tekens meer dan 1.

Voldoet een profiel aan deze combinatie dan zal de waarde uit het veld worden getoond in de aanhef, zo niet dan tonen we relatie. In onderstaande tabel staat een aantal voorbeelden van wat er in de aanhef komt te staan.

Waarde in veld voornaam Aanhef (normaal) Aanhef (voorbeeld)
Piet Beste Piet Beste Piet
P Beste P Beste relatie
P. Beste P. Beste relatie

Je kan dit natuurlijk ook combineren met modifiers zoals lower en ucfirst.

Gebruik van de default modifier

De modifier |default geeft je de mogelijk om een standaardwaarde in te vullen wanneer het veld in de database leeg is. Het is hierbij dan niet meer nodig om een {if} statement te gebruiken. Meer informatie over de default modifier is terug te vinden op deze pagina.

In het onderstaande voorbeeld maken we gebruik van de default modifier. Hiermee zorgen we ervoor dat wanneer er geen waarde in veld 'voornaam' aanwezig er standaard 'relatie' wordt ingevuld.

$profile.voornaam|default:"relatie"}

Gebruik van regex_replace functie

Naast een {if} statement en de default modifier kun je ook gebruik maken een de regex_replace functie. Hiermee kun je op basis van een reguliere expressie de string verfijnen.

In het onderstaande voorbeeld doen we eigenlijk hetzelfde als in bovenstaande {if} statement. We controleren ook of de voornaam een punt bevat en of deze meer dan 1 teken lang is. Is er geen waarde ingevuld, dan maken we gebruik van de default modifier.

{$profile.voornaam|regex_replace:"/^.{0,1}$|.*\..*/":""|default:"Relatie"}

In dit voorbeeld werkt de regex_replace als volgt:

  • ^.{0,1}$ matcht alle waarden die 0 of 1 teken lang zijn.
  • .*\..* matcht alle waarden die een punt (.) bevatten.
  • Het hele patroon wordt gecombineerd met een |, wat betekent: match waarden die ofwel te kort zijn, ofwel een punt bevatten.
  • De vervanging ("") zorgt ervoor dat als er een match is, de voornaam wordt gewist.

Daarna wordt de default modifier toegepast: als de waarde door de regex leeg is gemaakt (omdat de naam te kort was of een punt bevatte) dan wordt "Relatie" als waarde gebruikt. Op deze manier zorgen we ervoor dat ongeldige of ontbrekende voornamen automatisch worden vervangen door een leesbare fallback.