Kódy pro šablony v Brani Tisku

Naše nástroje neustále zlepšujeme a přidáváme nové funkce, z tohoto důvodu nemusí být návod zcela shodný s aktuální verzí doplňku.

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.

Aby web fungoval správně, abychom věděli, co na webu zlepšit, abychom vás neotravovali nevhodnou reklamou nebo abyste z webu měli příjemnou uživatelskou zkušenost, potřebujeme od vás souhlas pro uložení souborů cookies.