Základy práce se šablonami
Šablony podporují definované proměnné a speciální syntaxi, která poskytuje více možností než statické šablony. Tedy určitý text se přetváří podle definovaných pravidel. Pokud jste pracovali se šablonovacím systémem Twig, pak už znáte téměř vše potřebné. Na této stránce je popsána základní dostupná funkcionalita. Ti, kdo se chtějí dozvědět více, se mohou seznámit s oficiální dokumentací k Twig. Ne všechny možnosti Twig jsou však v našich šablonách dostupné, proto nezapomínejte kontrolovat výsledek pomocí funkce náhledu a rovněž provádět testovací rozesílky na vlastní účty před spuštěním kampaně na velký počet reálných uživatelů.
Dostupné proměnné v šablonách:
- subscriber — je to objekt obsahující informace o aktuálním odběrateli. Úplnou strukturu této proměnné si můžete prohlédnout na samostatné stránce.
- campaign — je to objekt obsahující informace o aktuální kampani rozesílky. Úplnou strukturu této proměnné si můžete prohlédnout na samostatné stránce. Tato proměnná nebude obsahovat data v režimu náhledu, protože ten funguje mimo kontext jakékoli kampaně rozesílky.
- unsubscribe_url — je to HTTP odkaz na naši stránku, kde se odběratel může odhlásit z aktuální kampaně rozesílky. Pokud máte vlastní nastavení odběru na svém webu, můžete použít odkaz pro odhlášení vedoucí na váš web. Pokud odběratel nenajde jednoduchou a pohodlnou možnost odhlásit se z nechtěné rozesílky, pravděpodobně označí váš e-mail jako spam, proto doporučujeme v každém e-mailu poskytovat možnost odhlášení. Tato proměnná nebude dostupná v režimu náhledu.
V šablonách lze používat proměnné
Pro použití proměnné je nutné ji obalit do dvojitých složených závorek. Například pro výpis proměnné test126 je třeba napsat {{ test126 }}. Dodržování velikosti písmen (velká a malá písmena) je povinné a mezery — volitelné. Tedy lze napsat {{test126}} nebo {{ test126 }}, ale {{ TESt126 }} — nelze. Proměnná test126 je příklad, ve skutečnosti taková proměnná u nás neexistuje.
Pokud je proměnná složitý objekt a má vlastní vlastnosti, přístup k nim se provádí pomocí tečky. Například přístup k vlastnosti id proměnné subscriber vypadá takto: {{ subscriber.id }}. Je to reálný příklad — v šablonách je dostupná proměnná subscriber a má vlastnost id. Úplný seznam vlastností si můžete prohlédnout na samostatné stránce. K polím lze přistupovat podle indexu pomocí hranatých závorek. Zároveň je třeba mít jistotu, že takový index existuje. Například {{ subscriber.tags[0] }}. Pokud odběratel nemá žádný tag, pokus o výpis prvního (s indexem 0) tagu nic nevypíše (tedy vypíše se «prázdný řetězec», jak říkají programátoři).
Lze provádět základní operace s daty
Podporovány jsou matematické operace:
- sčítání
{{ price + tax }} - násobení
{{ count * 2 }} - dělení
{{ total / 3 }}
Podmíněný operátor (IF)
- základní if
{% if subscriber.is_active %} Jste přihlášeni k odběru {% endif %} - operátor if s blokem else
{% if subscriber.is_active %} Jste přihlášeni k odběru {% else %} Jste odhlášeni z odběru {% endif %} - Řetězec kontrol
{% if subscriber.gender == 'male' %} Jste muž {% elseif subscriber.gender == 'female' %} Jste žena {% elseif subscriber.gender == '' %} Vaše pohlaví není uvedeno {% endif %}
Operátor if musí mít povinně otevírací tag {% if condition %} a uzavírací tag {% endif %}. Uvnitř lze umístit libovolný počet sekcí {% elseif condition %}. Volitelně lze také přidat sekci {% else %}, která se spustí bez dalších podmínek, pokud k ní vykonávání dojde. Tedy pokud podmínky spuštění (condition) všech předchozích částí operátoru if nebyly splněny.
Cykly (FOR)
Cykly jsou potřebné pro výpis seznamů. Představme si, že máme seznam uložený v proměnné items. Takto jej lze projít:
{% for item in items %} {{ item }}{% endfor %}
Hodnota proměnné item bude při každé iteraci cyklu jiná. Uvnitř cyklu jsou také dostupné některé další proměnné týkající se aktuální iterace:
- loop.index — číslo iterace, začíná od 1
- loop.first — je to první iterace? (true/false)
- loop.last — je to poslední iterace? (true/false)
Cyklus lze spojit s kontrolou přítomnosti dat:
{% for item in items %} {{ item }}{% else %} Pole items je prázdné{% endfor %}