Filter & Arbeiten mit Listen

Zuletzt aktualisiert 23 May 2026

Ein Wert, der durch verkettete Flexie-Scripting-Filter fließt, und eine Liste, die gruppiert und summiert wird

Was ein Filter ist

Ein Filter wandelt einen Wert mit dem Pipe-Symbol | um. Der Wert links wird in den Filter rechts gespeist:

{{ "hello world" | upper }}        → HELLO WORLD
{{ 1234.5 | number_format(2) }}    → 1,234.50

Filter werden von links nach rechts verkettet, jeder erhält das Ergebnis des vorherigen:

{{ first_name | trim | capitalize }}
EINGABE " maria " | FILTER trim → "maria" | FILTER capitalize → "John" AUSGABE "John"

Alltägliche Formatierungsfilter

Dies sind die Standardfilter, die in Flexie Scripting verfügbar sind:

Filter Was er tut Beispiel → Ergebnis
upper / lower Groß-/Kleinschreibung ändern. {{ "abc" | upper }}ABC
capitalize Den ersten Buchstaben großschreiben. {{ "john" | capitalize }}John
title Jedes Wort großschreiben. {{ "acme ltd" | title }}Acme Ltd
trim Umgebende Leerzeichen entfernen. {{ " x " | trim }}x
default(x) Einen Ersatzwert verwenden, wenn leer. {{ phone | default("N/A") }}
number_format(d, dec, sep) Eine Zahl formatieren. {{ 1234.5 | number_format(2) }}1,234.50
round(p) Eine Zahl runden. {{ 3.146 | round(2) }}3.15
abs Absolutwert. {{ -5 | abs }}5
length Elemente oder Zeichen zählen. {{ invoices | length }}
join(sep) Eine Liste zu Text zusammenfügen. {{ ["a","b"] | join(", ") }}a, b
split(sep) Text in eine Liste aufteilen. {{ "a,b,c" | split(",") }}
replace({from: to}) Teilzeichenketten ersetzen. {{ s | replace({"-": " "}) }}
slice(start, len) Einen Teil einer Liste oder Zeichenkette nehmen. {{ items | slice(0, 5) }}
first / last Erstes oder letztes Element. {{ invoices | first }}
reverse Eine Liste oder Zeichenkette umkehren. {{ items | reverse }}
sort Eine Liste sortieren. {{ names | sort }}
keys Die Schlüssel einer Map. {{ row | keys }}
merge(other) Zwei Listen oder Maps kombinieren. {{ a | merge(b) }}
nl2br Zeilenumbrüche in HTML-<br> umwandeln. {{ note | nl2br }}
striptags HTML-Tags entfernen. {{ html | striptags }}
escape Text HTML-sicher machen. {{ userText | escape }}
raw Ohne Escaping ausgeben (mit Bedacht verwenden). {{ trustedHtml | raw }}
json_encode Daten in eine JSON-Zeichenkette umwandeln. {{ row | json_encode }}
url_encode Text URL-sicher machen. {{ q | url_encode }}
map, filter, reduce, batch Eine Liste transformieren, einschränken, falten oder stückeln. {{ items | filter(i => i.active) }}

Flexies eigene Filter

Zusätzlich zum Standardumfang ergänzt Flexie diese:

Filter Was er tut Beispiel
cast_int Einen Wert zu einer ganzen Zahl erzwingen (entfernt Kommas). {{ "1,234" | cast_int }}1234
cast_float(precision=0) Einen Wert zu einer Dezimalzahl erzwingen. {{ "12.5" | cast_float(2) }}
cast_string Einen Wert zu Text erzwingen. {{ 123 | cast_string }}
cast_bool Einen Wert zu true oder false erzwingen. {{ "1" | cast_bool }}
slugify(sep="-") Einen URL-sicheren Slug erzeugen. {{ "Hello World!" | slugify }}hello-world
json_decode Eine JSON-Zeichenkette in Daten parsen. {{ body | json_decode }}
json_path(expr) Einen verschachtelten Wert per Pfad extrahieren. {{ data | json_path("$.total") }}
regex_replace(pattern, replacement, limit=-1) Musterbasiertes Suchen und Ersetzen. {{ s | regex_replace("/\\s+/", " ") }}
group_by(key) Eine Liste von Datensätzen nach einem Feld gruppieren. {{ deals | group_by("stage") }}
unique_by(key) Duplikate anhand eines Felds entfernen. {{ contacts | unique_by("email") }}
sum_by(key, scale=4) Ein numerisches Feld über Datensätze hinweg summieren. {{ items | sum_by("amount") }}
sort_by(key, dir="ASC") Datensätze nach einem Feld sortieren. {{ invoices | sort_by("due_date", "DESC") }}

Arbeiten über eine Liste von Datensätzen

Häufig holen Sie viele Datensätze ab (mit findMany, getSmartListRecords, findDeals usw.) und fassen sie dann zusammen oder formen sie um. Diese Helper erledigen genau das.

Summen und Statistiken

Funktion Was sie tut
sumField(list, field) Ein Feld über eine Liste hinweg aufsummieren.
avgField(list, field) Ein Feld über eine Liste hinweg mitteln.
minField(list, key) Kleinster Wert eines Felds.
maxField(list, key) Größter Wert eines Felds.
countDistinct(list, field) Wie viele verschiedene Werte ein Feld hat.
{% set invoices = findMany("invoice", "contact_id", id) %}
Total billed: {{ sumField(invoices, "total_incl_tax") | number_format(2) }}
Largest: {{ maxField(invoices, "total_incl_tax") | number_format(2) }}

Eine Liste umformen

Funktion Was sie tut
collectionColumn(list, column, indexBy=null) Eine einzelne Spalte als flache Liste herausziehen oder, mit indexBy, eine Nachschlage-Map erstellen, deren Schlüssel eine andere Spalte ist.
{# A flat list of every email on the account #}
{{ collectionColumn(getAccountContacts(id), "email") | join(", ") }}

Schleifen mit Gruppierung, ein ausgearbeitetes Beispiel

Rechnungen nach Status gruppiert anzeigen, mit einer Zwischensumme pro Gruppe:

{% set invoices = findMany("invoice", "contact_id", id) %}
{% set grouped = invoices | group_by("status") %}

{% for status, rows in grouped %}
  {{ status | upper }} ({{ rows | length }})
  {% for inv in rows | sort_by("due_date") %}
    - {{ inv.number }}: {{ inv.total_incl_tax | number_format(2) }}
  {% endfor %}
  Subtotal: {{ rows | sum_by("total_incl_tax") | number_format(2) }}

{% endfor %}

Wiederverwendbare Blöcke, Snippets

Wenn Sie immer wieder denselben Inhaltsblock eintippen (eine Kopfzeile, eine Signatur, eine gestaltete Fußzeile), kann ihn ein Administrator als Snippet speichern, und Sie binden ihn über seinen Namen ein:

{% snippet "email_header" %}
... your content ...
{% snippet "email_footer" %}

Ein Snippet ist selbst Flexie Scripting, kann also eine eigene Logik und eigene Tokens enthalten und sieht dieselben Datensatzdaten wie das Template, das es einbindet.

Nächste Schritte

  • Rezepte: diese Bausteine zu vollständigen Lösungen zusammengesetzt.
  • Wo es läuft & seine Grenzen: welche Daten in welchem Kontext verfügbar sind und die Sicherheitsgrenzen.