Preskočiť na obsah

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.

<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 {{!-- … --}}.

{{#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ľúč.

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.

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ť.

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, table a 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.

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.