Virtuele velden

Met virtuele velden kun je waarden automatisch laten berekenen op het moment dat je ze gebruikt, bijvoorbeeld in een template, document of opvolgactie. De waarde wordt niet opgeslagen maar telkens opnieuw bepaald op basis van andere gegevens in het profiel of account. Dit voorkomt dubbele logica en houdt templates overzichtelijk.

Wat kun je ermee?

Met virtuele velden kun je bijvoorbeeld:

  • teksten samenstellen op basis van profielvelden
  • berekeningen uitvoeren, zoals controleren of iemand jarig is
  • informatie uit subprofielen samenvoegen, zoals het aantal kinderen

Dit zijn slechts enkele voorbeelden. Virtuele velden ondersteunen dezelfde Smarty-logica als templates, waardoor ook complexere berekeningen mogelijk zijn.

Je gebruikt virtuele velden net zoals gewone velden: via {$profile.veldnaam} of direct {$veldnaam}.

Voorbeelden

Hieronder zie je voorbeelden die laten zien hoe virtuele velden verschillende soorten logica kunnen bevatten.

Aanhef op basis van profielvelden

Een eenvoudig voorbeeld is een virtueel veld Aanhef, dat dynamisch wordt bepaald op basis van een profielveld:

{if $profile.geslacht == 'man'}Geachte heer{else}Geachte mevrouw{/if}

Wanneer een template {$profile.Aanhef} of {$Aanhef} bevat, wordt automatisch de juiste aanhef getoond.

Controleren of iemand jarig is

Een ander voorbeeld is een virtueel veld dat bepaalt of iemand vandaag jarig is:

{assign var="geboren_op" value=$profile.geboortedatum|date_format:"%m%d"}
{assign var="vandaag" value=$smarty.now|date_format:"%m%d"}

{if $geboren_op == $vandaag}ja{else}nee{/if}

In je template kun je deze waarde direct gebruiken:

Is jarig: {$is_jarig}

Gegevens uit collecties

Je kunt gegevens uit subprofielen samenvoegen, zoals het aantal kinderen, het eerste kind of het laatste kind:

{$profile.kinderen|count}   {*aantal_kinderen*}
{$profile.kinderen|first}   {*eerste_kind*}
{$profile.kinderen|last}    {*laatste_kind*}

Het resultaat van first of last is een subprofiel-object. Daardoor kun je in je template direct de velden van dat subprofiel gebruiken, zoals:

Je hebt {$aantal_kinderen} kinderen.
Het jongste kind heet {$laatste_kind.naam}.

Hetzelfde geldt voor andere collecties. Als een virtueel veld bijvoorbeeld de laatste afgeronde bestelling oplevert:

{$profile.bestellingen|filter:"status":"afgerond"|last}

Dan kun je daarna in je template rechtstreeks de velden van die bestelling gebruiken:

Prijs van laatste bestelling: {$laatste_bestelling.prijs}

Dit zijn slechts enkele voorbeelden. Virtuele velden kunnen zo eenvoudig of zo uitgebreid zijn als de logica die je erin stopt.

Beschikbare variabelen

Binnen een virtueel veld zijn dezelfde variabelen beschikbaar als in templates en opvolgacties, waaronder:

  • {$profile} en alle velden daarin
  • {$subprofile} bij gebruik binnen collecties
  • {$collection}, {$database} en andere contextvariabelen
  • Integraties, zoals Magento en Shopify
  • Smarty-functies en -modifiers

De veldwaarde kan zowel tekst, HTML, URL's als volledige Smarty-logica bevatten. Een tekstveld is dus niet beperkt tot alfanumerieke inhoud.

Aanmaken en beheer

Virtuele velden zijn onderdeel van Velden en interesses binnen een database of collectie en verschijnen daar in het overzicht naast gewone velden. De naam van een virtueel veld moet uniek zijn binnen dezelfde database of collectie en kan niet per profiel worden ingevuld of aangepast.