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.