Kódy pro šablony v Brani Tisku
V Brani Tisku najdete v horní části obrazovky informace o datech k objednávce nebo produktu, které máme k dispozici a můžete s nimi pracovat, a vytvořit si tak vlastní štítky.
Základní informace
Při úpravách šablony v Brani Tisku najdete v horní části obrazovky informace o datech k objednávce nebo produktu, které máme k dispozici a můžete s nimi pracovat, například:

Zároveň je možné načíst data ke konkrétnímu produktu a nebo objednávce, kdy vyplníte vlastní testovací data:

Pokud chcete použít proměnnou z datového stromu v šabloně, například název produktu, použijete tento syntax:
{{ product.name }}
V případě, ze jsou data více zanořená, je potřeba přistupovat ke klíčům jako k poli. Například pro výpis názvu dodavatele:
{{ product.supplier['name'] }}
V některých případech se může stát, že je potřeba použít cyklus, protože například parametry obsahují libovolný počet dvojic parametr - hodnota. V tom případě to může vypadat například takto:
{% for param in product.descriptiveParameters %}
Nazev param: {{ param['name'] }}
Hodnota: {{ param['value'] }}
{% endfor %}
Cykly a obecně práce s parametry může být daleko složitější, více píšeme dále.
Velkosti štítků
Je velmi důležité správně definovat velkost “plochy”, na kterou budete vkládat informace. Tvorba štítků například a produkty je proces, který se postupně ladí tím že je zkoušíte postupně tisknout, testujete různé velikosti písma a podobně. Základem je nastavení správné velikosti štítku.
Generování kódů
Umíme generovat různé typy 1D a 2D kódů. Vstupní text může být jakákoliv, nejčastěji se používá kód produktu nebo EAN. Podporované typy kódů (toto ovlivňuje, jak bude výsledný obrázek kódu vypadat):
qr, barcode_code128, barcode_ean, barcode_ean8, barcode_gtin, barcode_ean14, barcode_jan, barcode_upc, barcode_upca, barcode_isbn, barcode_isbn13, barcode_gs1, barcode_isbn10, barcode_issn, barcode_code39, barcode_pzn, barcode_code128, barcode_itf, barcode_gs1_128
Nejčastěji se používají tyto kódy:
- qr - vcelku malý kód, který zvládne pojmout velké množství dat, potřebujete na něj 2D čtečku
- ean - pro běžné 13místné kódy
- code128 - vhodné pro kódy, které nemají přesnou délku a obsahují písmena, pomlčky, podtržítka a podobně
Zápis následně vypadá takto:
<img src="{{ premenna | typ_kodu(argumenty) }}">
Toto použijete, pokud byste chtěli generovat čárový kód code128 z kódu produktu:
<img src="{{ product.variant.code | barcode_code128(height=10, width=0.5, label=True, font_size=8, text_offset=2.5) }}" >
Je možné přizpůsobit argumenty, které ovlivňují výšku nebo šířku čárového kódu. Zároveň je možné zapnout nebo vypnout tzv. “label” - to je kód, který reprezentuje jeho velkost a odsazení od samotného kódu.

QR kód je specifický tím, že u něj se neurčují argumenty. U QR kódu je možné přizpůsobit obrázek pomocí CSS.
<img src="{{ product.variant.code | qr() }}" style="width: 4cm">
Kód vypadá následně takto:

QR kód můžete použít i pro přesměrování do vyhledávání na e-shopu podle kódu produktu:
<img style="height: 120px" src="{{ ("https://brani.myshoptet.com/vyhledavani/?string=" + product.variant.code) | qr }}" />
Nebo je možné přímo odkazovat na na detail produktu:
<img style="height: 120px" src="{{ product.url | qr }}" />
Podmínky
Základní syntax podmínky je následovný:
{% if podminka %}
// co sa ma vykonat ak podmienka plati
{% else %}
// co sa ma vykonat ak podmienka neplati
{% endif %}
Jestliže chcete použít podmínku na základě viditelnosti produktu, nastavíte:
{% if product.visibility == "hidden" %}
skryty produkt
{% else %}
zobrazeny produkt
{% endif %}
Cyklus
Cyklus se používá nejčastěji v případech, kdy potřebujete vytvořit tabulku se seznamem produktů v objednávce nebo s parametry produktů.
Objednávky
Pro výpis produktů v objednávce (například u vratkových formulářů), můžete použít tento cyklus:
{% for item in order['items'] %}
{{ item.name }}
{{ item.amount }} ks
{{ item.itemPrice.withVat }} Kč
{% endfor %}
Pro hezčí tabulku vložíte například:
<div class="produkty">
<div class="produkty-vypis produkty-hlavicka">
<span>Počet</span>
<span></span>
<span>Produkt</span>
<span class="text-right">Cena bez DPH</span>
<span class="text-right">Cena s DPH</span>
</div>
{% for item in order['items'] %}
<div class="produkty-vypis">
<span>{{ item.amount }} ks</span>
<span></span>
<span>{{ item.name }}</span>
<span class="text-right">{{ item.itemPrice.withoutVat }}Kč</span>
<span class="text-right">{{ item.itemPrice.withVat }} Kč</span>
</div>
{% endfor %}
</div>
<div class="celkem text-right">
Celkem:
<span>{{ order.price.toPay }} Kč</span>
</div>
A takto to následně bude vypadat:

Produkty
U produktů se často cykly používají pro výpis parametrů.
Ceníky
Jestliže na štítku produktu chcete mít ceny z jiného než z hlavního ceníku, použijete proměnnou pricelists . Například:
{{ pricelists[123].price }}
Kde “123” znamená ID ceníku.
Brani Sklad
V případě, že používáte Brani Sklad, můžete k produktům vypisovat sektory nebo skladové pozice, na kterých se produkt nachází. Pro toto slouží dvě proměnné:
{{ positions }}
{{ sectors }}
Na daném místě se vypíše seznam pozic (nebo sektorů) s čárkou nebo oddělovačem, například:
A1-1-2, C3-4-8, D5-1-1
V případě, že je produkt na jedné pozici, zobrazuje se jen tato jedna pozice.
Pokročilé funkce
Šablonový systém podporuje některé metody jazyka Python.
Používání proměnných
Jakmile vytváříte složitější šablonu, bude se Vám hodit používat proměnné.
{% set foo = "bar" %}
Vypise bar: {{ foo }}
{% set foo = product.name %}
Vypise nazov produktu: {{ foo }}
Můžete také používat pole:
{% set productname = namespace(cz="", de="", sk="",en="") %}
{% set productname.cz = "cesky nazev" %}
{% set productname.de = "nemecky nazev" %}
Vypise cesky nazev: {{ productname.cz }}
Vypise nemecky nazev: {{ productname.de }}
Zaokrouhlování čísel
Funkce round zaokrouhluje na 2 desetinné čísla:
Vypise "123.46": {{ 123.45678 | round }}
Datum a čas
Můžete používat i funkce datetime.now() , timedelta() , parsedate() a formátovat datumy přes strftime() stejně, jako v Pythonu:
Aktualni datum a cas:
{{ datetime.now().strftime('%d.%m.%Y %H:%M') }}
Datum a cas za 180 dni:
{{ (datetime.now() + timedelta(days=180)).strftime('%d.%m.%Y %H:%M') }}
Parsování textu
Občas je potreba získat nějaká data například z interní poznámky produktu. Uvedeme na příkladu, kdy interní poznámka produktu obsahuje důležité informace vždy na jednom řádku a s prefixem. Můžete používat funkce startswith() , split() , join() a také přizpůsobit pozici polí s výsledky po split() :
{% if product.internalNote: %}
{% for line in product.internalNote.split("\n"): %}
{% if line.startswith("CZ:"): %}
{% set productname.cz = "".join(line.split("CZ: ")[1].split(';')) %}
{% endif %}
{% if line.startswith("SK:"): %}
{% set productname.sk = "".join(line.split("SK: ")[1].split(';')) %}
{% endif %}
{% endfor %}
{% endif %}
Google Tabulky
V případě, že na štítek potřebujete vložit informace, které nemáte uvedené u produktu na e-shopu, můžete tyto informace mít uložené v Google tabulkách a získávat z nich data, která potřebujete.
To se může hodit například pro uvádění složení produktu v různých jazycích, dávkování, způsobu užití, informace o výrobci a podobně. Pokud například budete mít v tabulkách pro každého výrobce nějaký popis, tyto popisy je následně možné tisknout i na štítky.
Základní syntax pro nelezení a výpis z buňky tabulky je:
{{ vstup | gsheet(
url='https://docs.google.com/spreadsheets/d/hash',
sheet_name='nazev listu',
lookup_column_name='sloupec kde hladame ',
value_column_name='sloupec ktery hledame'
) }}
Pokud chcete obsah sloupce “popis”, na řádku, kde bude obsah sloupce “kód produktu” obsahuje, kód našeho produktu, vyplníte toto:
{{ product.variant.code | gsheet(url='https://docs.google.com/spreadsheets/d/hash', sheet_name='nazev listu', lookup_column_name='kod produktu', value_column_name='popis') }}
Pozor na to, že Google tabulka musí byt veřejně přístupná na zadané URL adrese.