Sprievodca Handlebars
Šablóny Frontmailu používajú syntax Handlebars v tele HTML, textovej verzii, predmete aj v poliach s príjemcami. Frontmail spúšťa Handlebars v izolovanom, uzamknutom prostredí: existujú len helpery uvedené na tejto stránke, partialy nie sú k dispozícii a každá hodnota sa escapuje.
Premenné
Section titled “Premenné”<p>Dobrý deň, {{name}},</p><p>vaša rezervácia na {{booking.date}} je potvrdená.</p> {{!-- vnorený objekt --}}<p>{{default company "(bez firmy)"}}</p> {{!-- záložná hodnota --}}Chýbajúca hodnota sa vykreslí ako prázdny reťazec. Na komentáre, ktoré sa do e-mailu nikdy
nedostanú, použite {{!-- … --}}.
Podmienky
Section titled “Podmienky”{{#if newsletter}} <p>Ďakujeme za prihlásenie na odber!</p>{{else}} <p>Na odber sa môžete prihlásiť kedykoľvek.</p>{{/if}}
{{#unless paid}}<p>Platba zatiaľ neprišla.</p>{{/unless}}
{{#if (eq topic "support")}}<p>Naša podpora vám odpovie do jedného dňa.</p>{{/if}}{{#if (and vip (gt total 1000))}}<p>🎁 Doprava zadarmo</p>{{/if}}{{#if (or (eq country "CZ") (eq country "SK"))}}<p>Doprava zadarmo</p>{{/if}}{{#if}} považuje za nepravdu false, 0, "", null, chýbajúce hodnoty a prázdne zoznamy.
Použite parameter 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">Žiadne položky.</td></tr> {{/each}}</table>Vnútri {{#each}} je this aktuálna položka, k dispozícii sú @index (od 0), @first
a @last a ../ siaha do nadradeného kontextu. {{#with customer}}…{{/with}} mení kontext
a {{lookup map key}} číta dynamický kľúč.
Helpery
Section titled “Helpery”| Helper | Príklad | Výsledok |
|---|---|---|
formatDate value [style] [timeZone=…] [locale=…] |
{{formatDate arrival "long"}} |
October 1, 2026 / 1. októbra 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 "priateľ"}} |
prvá neprázdna hodnota |
eq a b · ne a b |
{{#if (eq status "paid")}} |
voľná rovnosť (1 sa rovná "1") |
gt a b · lt a b |
{{#if (gt qty 10)}} |
číselné porovnanie |
and a b … · or a b … · not a |
{{#if (and a (not b))}} |
logické operácie (prázdne hodnoty sú nepravda) |
json value |
{{json items}} |
text JSON (escapovaný) – hodí sa na ladenie |
nl2br value |
{{nl2br message}} |
escapovaný text so zalomeniami riadkov prevedenými na <br> |
Štýly formatDate: date, datetime, time, short, long, full, iso. Jazyk výstupu sa
riadi jazykom, v ktorom e-mail odchádza – predvoleným jazykom šablóny alebo zvoleným
prekladom; pre jednotlivé volanie ho prepíšete pomocou locale="sk". Časy
používajú časové pásmo organizácie, pokiaľ neodovzdáte timeZone="Europe/Bratislava".
Volanie akéhokoľvek iného helpera je chyba kompilácie, ktorú ukážu kontroly šablóny.
Systémové premenné
Section titled “Systémové premenné”| Premenná | Hodnota |
|---|---|
{{frontmail.message_id}} |
ID správy, napr. msg_01J9Z3K7Q2 – hodí sa ako referenčné číslo. |
{{frontmail.sent_at}} |
Časová značka vykreslenia v ISO, napr. 2026-09-24T10:11:05.000Z. Kombinujte s formatDate. |
{{frontmail.origin}} |
Origin požiadavky z prehliadača (napr. https://example.com), pri odosielaní zo servera prázdne. |
Názov frontmail je rezervovaný – parameter s týmto názvom nemôžete definovať.
Escapovanie a typ html
Section titled “Escapovanie a typ html”Frontmail escapuje do HTML každý výstup, vrátane zápisov {{{triple}}} a {{& ampersand}}.
Návštevník, ktorý do formulára napíše <a href="…">klikni</a>, uvidí v e-maile presne tento
text, nie odkaz.
Keď naozaj potrebujete značky z parametrov (napríklad formátovaný text z vlastného CMS), deklarujte
parameter s typom html. Jeho hodnota sa vyčistí podľa zoznamu povolených prvkov:
- značky:
a,b,strong,i,em,u,s,p,br,div,span,h1–h6,ul,ol,li,blockquote,pre,code,hr,img,tablea jej časti,small,sub,sup,center,font; - odkazy:
http,https,mailto,tel; obrázky:http,https,cid; - inline štýly: farby, hrúbka/štýl/veľkosť písma, výška riadku, zarovnanie/dekorácia textu, margin, padding, width, height, max-width;
- všetko ostatné (skripty, iframy, formuláre, obsluhy udalostí, URL
javascript:) sa odstráni.
Vykreslite ho obyčajným {{body_html}} – vyčistená hodnota sa vypíše ako značky.
Textová verzia
Section titled “Textová verzia”Automaticky generovaná textová verzia vzniká z vykresleného HTML (z odkazov sa stane
text (url), z tabuliek riadky). Ak textovú verziu upravíte ručne, vykresľuje sa podľa rovnakých
pravidiel Handlebars, ale bez escapovania HTML.