Datacollectie modifiers

Modifiers zijn doorgaans ontworpen om strings te manipuleren, zoals ucfirst voor het maken van een hoofdletter aan het begin van een string. Echter, er zijn ook modifiers die bedoeld zijn voor het manipuleren van datacollecties. Als je bijvoorbeeld een variabele hebt waarin een verzameling van profielen, subprofielen, producten of iets anders staat, dan kun je met deze modifiers zo'n verzameling filteren of sorteren.

Let op: deze modifiers werken alleen op datacollecties afkomstig uit integraties. Collecties uit een Copernica database met (sub)profielen kunnen dus niet gebruikt worden in combinatie met deze modifiers.

Praktisch voorbeeld

Laten we een voorbeeld bekijken van hoe je deze modifiers zou kunnen gebruiken om een datacollectie van producten te manipuleren:

{$products|filter:"category":"books"|orderby:"sales":"desc"|limit:5}

In dit voorbeeld wordt de filter modifier gebruikt om alleen producten te selecteren die tot de categorie "Boeken" behoren. Vervolgens sorteert de orderby modifier deze producten op basis van hun verkoopcijfers ("sales") van hoog naar laag. Tot slot beperkt de limit modifier de uitvoer tot de top 5 best verkopende boeken.

Met deze modifiers kun je handig gegevens selecteren en presenteren binnen je mailings.

De volgende tabel toont alle modifiers die toepasbaar zijn op datacollecties:

Modifier Beschrijving
filter filter items in een datacollectie op basis van gegeven criteria
orderby sorteer items in een datacollectie op basis van een veld
limit beperk items in een datacollectie op tot een maximum aantal
first neem het eerste item uit een datacollectie

Filter

De modifier 'filter' toetst alle data in een datacollectie met een gegeven voorwaarde. Alleen wanneer een veld voldoet aan de gegeven voorwaarde, wordt het doorgelaten door het filter. Je kunt dit gebruiken om bijvoorbeeld een verzameling van producten of bestellingen te reduceren tot alleen de relevante items.

{$integration.products|filter:price:>:15}

Zoals je in bovenstaand voorbeeld ziet, accepteert de modifier drie parameters: het veld waarop moet worden gefilterd ("price"), de waarde die het veld moet hebben ("15"), en de operator (">").

Met de operator bedoelen we de manier waarop het veld moet worden vergeleken, zoals gelijk-aan, kleiner-dan of groter-dan. Mogelijke waarden voor de operator zijn: <, <=, >, >=, =, ==, !=. Extra operators kunnen beschikbaar zijn afhankelijk van het type van de variabele waar je op filtert.

De modifier kan ook met één of twee parameters worden aangeroepen:

{$integration.products|filter:category:books}
{$integration.products|filter:sku}

Met twee parameters: hiermee voer je een ==-vergelijking uit. Bijvoorbeeld, {$integration.products|filter:category:books} filtert de producten op de categorie "books".

Met één parameter: Hiermee controleer je of veld bestaat in de inkomende data en niet null is. Bijvoorbeeld, {$integration.products|filter:sku} filtert de producten waarvoor een SKU beschikbaar is.

Opmerking: Dit werkt momenteel alleen voor top-level eigenschappen. Als veldnaam kun je dus geen geneste velden opgeven, zoals "author.nationality".

Ordering

De modifier 'orderby' sorteert alle data in een datacollectie op basis van het gegeven veld in de data waarop deze modifier wordt toegepast.

Deze modifier heeft de vorm: orderby:field:direction. De field parameter bepaalt op welk veld de gegevens gesorteerd moet worden. De direction wordt gebruikt om te specificeren in welke volgorde de data gesorteerd moet worden: asc voor oplopend, desc voor aflopend. Het is mogelijk om de orderby-modifier aan te roepen zonder direction, in welk geval asc wordt ingevuld voor de direction parameter.

{$integration.products|orderby:"price":"desc"}
{$integration.products|orderby:"price"}

Opmerking: Dit werkt momenteel alleen voor top-level eigenschappen. Als veldnaam kun je dus geen geneste velden opgeven, zoals "author.nationality".

Limit

De modifier 'limit' beperkt de hoeveelheid items in een datacollectie. Deze modifier kan beschreven worden als: limit:aantal. De aantal parameter bepaalt het maximale aantal items die er door het filter heen gelaten wordt. Wanneer dit getal bereikt is, wordt de datacollectie afgekapt. Om bijvoorbeeld een aantal producten uit een integratie op te halen, beperkt tot maximaal 5 items, kan je iets gebruiken als:

{$integration.products|limit:5}

First

De modifier 'first' pakt het eerste item uit een datacollectie en maakt daar een gewone variabele. Je gebruikt deze modifier vaak in combinatie met {assign} om een nieuwe variabele aan te maken.

{assign value=$profile.kinderen|first var="eerste_kind"}
Je eerste kind heet {$eerste_kind.naam}

Last

De modifier 'last' pakt het laatste item uit een datacollectie en maakt daar een gewone variabele. Je gebruikt deze modifier vaak in combinatie met {assign} om een nieuwe variabele aan te maken. Let op: deze modifier werkt niet op elke dataverzameling, omdat niet elke databron even gemakkelijk toegang verschaft tot het laatste item.

{assign value=$profile.kinderen|last var="laatste_kind"}
Je laatste kind heet {$laatste_kind.naam}