Průvodce Handlebars
Frontmail šablony používají syntaxi Handlebars v HTML těle, textové verzi, předmětu i polích s příjemci. Frontmail spouští Handlebars v izolovaném, uzamčeném prostředí: existují jen helpery uvedené na této stránce, partialy nejsou k dispozici a každá hodnota se escapuje.
Proměnné
Sekce “Proměnné”<p>Dobrý den, {{name}},</p><p>vaše rezervace na {{booking.date}} je potvrzená.</p> {{!-- vnořený objekt --}}<p>{{default company "(bez firmy)"}}</p> {{!-- záložní hodnota --}}Chybějící hodnota se vykreslí jako prázdný řetězec. Pro komentáře, které se do e-mailu nikdy
nedostanou, použijte {{!-- … --}}.
Podmínky
Sekce “Podmínky”{{#if newsletter}} <p>Děkujeme za přihlášení k odběru!</p>{{else}} <p>K odběru se můžete přihlásit kdykoli.</p>{{/if}}
{{#unless paid}}<p>Platba zatím nedorazila.</p>{{/unless}}
{{#if (eq topic "support")}}<p>Naše podpora vám odpoví do jednoho dne.</p>{{/if}}{{#if (and vip (gt total 1000))}}<p>🎁 Doprava zdarma</p>{{/if}}{{#if (or (eq country "CZ") (eq country "SK"))}}<p>Doprava zdarma</p>{{/if}}{{#if}} považuje za nepravdu false, 0, "", null, chybějící hodnoty a prázdné seznamy.
Cykly
Sekce “Cykly”Použijte parametr typu list s itemFields:
<table> {{#each items}} <tr> <td>{{@index}}</td> <td>{{title}}</td> <td>{{qty}} × {{formatMoney price ../currency}}</td> </tr> {{else}} <tr><td colspan="3">Žádné položky.</td></tr> {{/each}}</table>Uvnitř {{#each}} je this aktuální položka, k dispozici jsou @index (od 0), @first
a @last a ../ sahá do nadřazeného kontextu. {{#with customer}}…{{/with}} mění kontext
a {{lookup map key}} čte dynamický klíč.
Helpery
Sekce “Helpery”| Helper | Příklad | Výsledek |
|---|---|---|
formatDate value [style] [timeZone=…] [locale=…] |
{{formatDate arrival "long"}} |
October 1, 2026 / 1. října 2026 |
formatNumber value [decimals=n] |
{{formatNumber 1234.5 decimals=2}} |
1,234.50 / 1 234,50 |
formatMoney amount currency [minor=true] |
{{formatMoney 49 "EUR"}} · {{formatMoney 4900 "EUR" minor=true}} |
€49.00 / 49,00 € |
uppercase value |
{{uppercase code}} |
ABC123 |
lowercase value |
{{lowercase email}} |
jana@example.com |
default value fallback… |
{{default nickname name "příteli"}} |
první neprázdná hodnota |
eq a b · ne a b |
{{#if (eq status "paid")}} |
volná rovnost (1 se rovná "1") |
gt a b · lt a b |
{{#if (gt qty 10)}} |
číselné porovnání |
and a b … · or a b … · not a |
{{#if (and a (not b))}} |
booleovské operace (prázdné hodnoty jsou nepravda) |
json value |
{{json items}} |
text JSON (escapovaný) – hodí se pro ladění |
nl2br value |
{{nl2br message}} |
escapovaný text se zalomeními řádků převedenými na <br> |
Styly formatDate: date, datetime, time, short, long, full, iso. Jazyk výstupu se
řídí locale šablony; pro jednotlivé volání ho přepíšete pomocí locale="cs". Časy používají
časové pásmo organizace, pokud nepředáte timeZone="Europe/Prague".
Volání jakéhokoli jiného helperu je chyba kompilace, kterou ukážou kontroly šablony.
Systémové proměnné
Sekce “Systémové proměnné”| Proměnná | Hodnota |
|---|---|
{{frontmail.message_id}} |
ID zprávy, např. msg_01J9Z3K7Q2 – hodí se jako referenční číslo. |
{{frontmail.sent_at}} |
ISO časová značka vykreslení, např. 2026-09-24T10:11:05.000Z. Kombinujte s formatDate. |
{{frontmail.origin}} |
Origin požadavku z prohlížeče (např. https://example.com), u odeslání ze serveru prázdný. |
frontmail je rezervované jméno – parametr s tímto názvem definovat nelze.
Escapování a typ html
Sekce “Escapování a typ html”Frontmail HTML-escapuje každý výstup, včetně zápisů {{{triple}}} a {{& ampersand}}.
Návštěvník, který do formuláře napíše <a href="…">click</a>, uvidí v e-mailu přesně tento text,
ne odkaz.
Když markup z parametrů opravdu potřebujete (například formátovaný text z vlastního CMS),
deklarujte parametr s typem html. Jeho hodnota projde sanitizací podle allowlistu:
- tagy:
a,b,strong,i,em,u,s,p,br,div,span,h1–h6,ul,ol,li,blockquote,pre,code,hr,img,tablea jeho části,small,sub,sup,center,font; - odkazy:
http,https,mailto,tel; obrázky:http,https,cid; - inline styly: barvy, tloušťka/řez/velikost písma, výška řádku, zarovnání a dekorace textu, margin, padding, width, height, max-width;
- všechno ostatní (skripty, iframy, formuláře, event handlery, URL
javascript:) se odstraní.
Vykreslete ho obyčejným {{body_html}} – sanitizovaná hodnota se vypíše jako markup.
Textová verze
Sekce “Textová verze”Automaticky generovaná textová verze vzniká z vykresleného HTML (odkazy se změní na text (url),
tabulky na řádky). Pokud textovou verzi upravíte ručně, vykresluje se podle stejných pravidel
Handlebars, jen bez HTML escapování.