1 Obsah 1. Co jsou šablony Zoner inshopu 2. Kdy je zapotřebí měnit šablony 3. Změna designu prodejny bez zásahu do šablon 4. Jak zobrazit šablonu na s...
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
Obsah 1. 2. 3. 4. 5. 6.
Co jsou šablony Zoner inShopu Kdy je zapotřebí měnit šablony Změna designu prodejny bez zásahu do šablon Jak zobrazit šablonu na serveru Texty na stránkách a vícejazyčné prodejny Tagy Zoner inShopu 6.1 Způsoby zápisu tagu 6.2 Tagy inshopu uvnitř HTML tagu 6.3 Parametry neboli atributy tagů 6.4 Podmínky a cykly - dělící tagy 6.5 Vnořování tagů 6.6 Matematické a logické výrazy, proměnné a výpočty
1. Co jsou šablony Zoner inShopu Pod šablonou se rozumí HTML stránka, která se nezobrazuje sama, ale která se před zobrazením zpracuje ASP skriptem Zoner inShopu. Šablona může kromě samotného HTML kódu obsahovat tagy Zoner inShopu, které jsou na serveru skriptem nahrazeny za adekvátní hodnoty, například název výrobku nebo jeho cena. Takových souborů je několik desítek, každý z nich slouží něčemu jinému. Například vzhled ceníkového výpisu zboží je určen šablonou price_list.htm, katalogu catalogue.htm, detailního pohledu na výrobek - detail.htm, objednávka order.htm, přihlášení - login.htm atd.
2. Kdy je zapotřebí měnit šablony Všeobecně platí pravidlo, že chcete-li mít obchod na profesionální úrovni, je třeba mít i profesionální design. Zákazník nenakoupí v obchodě, který v něm nebudí dobré pocity a důvěru. Bohužel většina předpřipravených designů není na dostatečné grafické úrovni a tudíž to v zákazníkovi vzbuzuje dojmy, že provozovatel na svůj obchod příliš nedbá a ruku v ruce s tím vyvstává pochybnost, zda-li je tento e-shop spolehlivý. Většinou není a tudíž následuje odchod zákazníka do dalšího ze desítek konkurenčních obchodů. Tedy odpověď na otázku, kdy je zapotřebí měnit šablony, by mohla být: ihned, když univerzální šablony nestačí. Důležité je ale uvědomit si, že pokud nejste grafikem a této problematice nerozumíte tak, abyste byli schopni sami vytvořit design na dobré úrovni, je lepší svěřit úpravu šablon Zoner inShopu práci odborníkům, autorizovaným partnerům Zoner inShopu, kteří se designu prodejen věnují profesionálně. Zhotovení designu na zakázku sice vyžaduje investici, nicméně úspěšní obchodníci ji považují za vysoce návratnou. Přehled autorizovaných partnerů naleznete na: www.zoner.cz/inshop/partners.asp.
Autoři: Pavel Král, Martin Groh
STRANA 1/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
3. Změna designu prodejny bez zásahu do šablon Ne vždy, když chcete změnit design stránek prodejny, je nutné upravovat šablony. Nastavení v servisní části Designeru Zoner inShop je navržen tak, abyste mohli měnit chování, vzhled a texty na stránkách pouhým nastavením parametrů v Zoner inShop Designeru. Mnohdy stačí zapnout nebo vypnout zobrazení určitého prvku, případně změnit jeho název, vložit vlastní text do ceníku, do e-mailu s objednávkou atd. Texty Všechny texty zobrazované na stránkách prodejny, které není možné změnit přímo v Zoner inShop Designeru, je ještě možné změnit v jazykovém souboru s texty (v adresáři Texts/Languages) na serveru. Styl Některé změny vzhledu, které nejsou proveditelné přímo v Zoner inShop Designeru, lze provést i úpravou kaskádového stylu zvoleného schématu. Týká se to například velikostí a typu písma, případně barev různých detailních prvků na stránkách. Soubory kaskádového stylu se nacházejí v podadresáři Schemata\VašeSchema\Pages. Například velikost názvů výrobků můžete změnit nastavením vlastností třídy Item-Name. Vyhledejte v CSS souboru styleMain.css řádek začínající .Item-Name a nastavte mu vlastnost font-size, například .Item-Name {font-size: 15pt} Upravený soubor stylu se nahraje na server při odesílání servisu. Kterou třídu je zapotřebí měnit lze zjistit zobrazením zdrojového tvaru HTML stránky, která se zobrazuje v prohlížeci a vyhledáním např. názvu výrobku. Před ním je uvedený tag <span class="Item-Name"> - odtud .Item-Name. Problematika kaskádových stylů je sice poměrně rozsáhlá, ale někdy stačí málo. Podrobněji se s kaskádovými styly můžete seznámit na serveru Interval.cz. Jakmile zjistíte, že požadovaného efektu nedocílíte žádným z výše uvedených způsobů, pak teprve zřejmě bude zapotřebí upravovat nebo vytvářet vlastní šablony.
4. Jak zobrazit šablonu na serveru Zadáte-li do adresového řádku prohlížeče přímo adresu šablony (např. firma.inshop.cz/inshop/pages/detail.htm), na které se nachází, uvidíte v prohlížeči samotnou šablonu, ale ne to, co by se zobrazit mělo, tj. výsledek jejího zpracování. Aby se šablona zpracovala, je zapotřebí zavolat odpovídající skript, např. firma.inshop.cz/inshop/scripts/detail.asp.
Autoři: Pavel Král, Martin Groh
STRANA 2/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
Skript detail.asp "ví", že má zpracovat šablonu detail.htm a výsledek zpracování zobrazit uživateli. Většina stránek, které se zobrazují zákazníkům, jsou výsledkem zpracování takovýchto specializovaných skriptů, které mají přiděleny "své" šablony. Například přihlašovací formulář se zobrazí skriptem login.asp, který zpracovává a zobrazuje šablonu login.htm, vstupní stránka prodejny je skript shop.asp, který zpracovává šablonu shop.htm atd. Některé skripty mohou zobrazovat různé šablony podle kontextu. Například skript price_list.asp (resp. set.asp) zobrazuje buď šablonu ceníku price_list.htm, nebo šablonu katalogu catalogue.htm, nebo šablonu pro výsledky vyhledávání search.htm podle toho, v jakém režimu uživatel stránky prohlíží. Chcete-li zobrazit šablonu, která nemá svůj specializovaný skript, lze to provést voláním skriptu show.asp, který umí zpracovat a zobrazit libovolnou šablonu. Stačí mu určit, jakou šablonu má zpracovat parametrem page (resp. file). Například show.asp?page=infoColumn.htm zobrazí samotný informační sloupec. Jak se prodejna o změně šablony dozví jednoduše řečeno: nijak. Zoner inShop Designer (ver. 3.0.309) nenahrává vámi změněné šablony na server, takže to musíte to udělat sami přes FTP libovolným FTP klientem (např. LeechFTP nebo TotalCommander). Údaje potřebné pro připojení k serveru naleznete v Zoner inShop Designeru (přihlašovací jméno a heslo, název FTP serveru a vzdálenou cestu). Šablony nahrávejte do adresáře Pages. Rozhodnete-li se upravovat šablony, zkopírujte si ze serveru aktuální verzi šablony z adresáře Templates/Def (případně Templates/RoundBoxed nebo Templates/Simplicity,... podle toho, které šablony používá vaše schéma vzhledu. Upravené šablony se nahrávají na server do adresáře Pages. Soubory HTX "Stejně se mi moje šablona nezobrazuje" aneb co jsou to vlastně ty HTX soubory? Stručně: Stačí smazat HTX (ale jen ty!) soubory z adresáře Pages na serveru. Proč? Soubory HTX jsou předgenerované šablony, aby se předešlo nadměrnému zatížení neustálým zpracováním tagů, které se průběžně nemění. Serverová část je proto používá přednostně. Tyto soubory tedy neměňte, mohou být smazány nebo přepsány aplikací. Standardní šablony obsahují značné množství (poměrně nesrozumitelných) tagů, které slouží pro změny zobrazení prostřednictvím různých nastavení v agendě Sevis v Zoner inShop Designeru. Například zda se v ceníku má nebo nemá zobrazit popis se zajišťuje tak, že se ve standardní šabloně pro ceník price_list.htm vkládá HTML kód a tag s popisem výrobku uvnitř podmíněného bloku <shop.test(IsEnabled(pricelist_description))>...shop.Item_Description .... To znamená, že se popis výrobku vloží jen tehdy, je-li to v Designeru povoleno. Je zřejmé, že se toto nastavení nemůže změnit kdykoliv v průběhu zobrazování
Autoři: Pavel Král, Martin Groh
STRANA 3/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
ceníku, ale jen změníte-li nastavení v agendě Servis v Zoner inShop Designeru a odešlete změnu na server. Dá se říci, že se ten tag musí vyhodnocovat stále znovu a znovu při každém zobrazení ceníku vlastně zbytečně, protože popis stále je buď povolen nebo je stále zakázán. Stejně tak barevné nastavení a obrázková pozadí tyto hodnoty se v šablonách vkládají prostřednictvím tagu shop.schema(nazev_hodnoty), takže například barva textu v levém rámci se vkládá tagem shop.schema(lf_text_color). I hodnota tohoto tagu se nemění, dokud nezměníte schéma vzhledu v Zoner inShop Designeru a neodešlete změnu na server. Proto se po každém odeslání změn servisu provádí předgenerování nejvíce exponovaných šablon do HTX souborů, které již mají napevno vložené všechny hodnoty tagu shop.schema, veškeré texty vkládané tagem shop.text, a také vyhodnocené tagy shop.test, které testují konfigurační parametry, tj. pokud je část HTML kódu zakázána, v HTX souboru se vůbec neobjeví. Při předgenerování se původní HTX soubory vymažou a vytvoří nové na základě vámi upravených šablon, pokud jsou v adresáři Pages nalezeny, pokud ne, tak se berou šablony z adresáře Templates/... podle toho, které šablony jsou zvoleny ve schématu vzhledu. Která šablona se vlastně používá Dejme tomu, že nás zajímá ceník. Pro něj slouží šablona price_list.htm. Serverová část se před zpracováním ceníku nejdříve podívá do adresáře Pages, zda se tam nenachází soubor Price_List.HTX. Pokud ano, použije se ten. Pokud ne, hledá se v adresáři Pages soubor s názvem Price_List.htm, není-li tam, tak se vezme soubor šablony z adresáře Templates/Def nebo Templates/RoundBoxed atd. podle toho, které šablony jsou zvoleny ve schématu vzhledu. Používání oddělených adresářů pro upravené a pro standardní šablony umožňuje správcům a vývojářům ze ZONER software provádění upgrade standardních šablon a prodejen s vyloučením přepisu vašich upravených šablon. Postup hledání používané šablony je tedy následující: Předkompilovaná upravená - standardní, tj.: 1. Pages/sablona.HTX 2. Pages/sablona.HTM 3. Templates/Def/sablona.HTM (resp. Templates/RoundBoxed nebo Templates/Simplicity...) Při využívání vícejazyčnosti je postup mírně složitější: id_jazyka je celé číslo, nazev_jazyka textový identifikátor jazyka: 1. Pages/sablona_L(id_jazyka).HTX 2. Pages/sablona_nazev_jazyka.HTM 3. Pages/sablona.HTX –> Pages/sablona.HTM –> Templates/Def/sablona.HTM Jak je vidět, do výše uvedeného řetězce vstupují ještě předkompilovaná verze pro zvolený jazyk a také upravená šablona pro zvolený jazyk. TIP: Dokonce si můžete určit jiný adresář než Pages, ve kterém se mají šablony hledat, a to s pomocí parametru TemplatesDir, zadaného do adresového řádku prohlížeče. Takovým způsobem můžete vytvořit několik vzhledů a poměrně snadno mezi nimi přepínat. Například prodejna www.filmcity.cz tento způsob využívá při
Autoři: Pavel Král, Martin Groh
STRANA 4/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
přepínání mezi hlavními kategoriemi VHS, DVD, HRY. Tento způsob můžete využít i pro testování svých šablon, které ještě nechcete zveřejnit.
5. Texty na stránkách a vícejazyčné prodejny Proč jsou ve standardních šablonách texty jen v angličtině Při vytváření vlastních šablon tuto informaci možná nebudete potřebovat, potřebujete-li však upravovat standardní šablony, nebude na škodu si vysvětlit, kde jsou všechny texty, které se na stránkách prodejny zobrazují. Máme teď na mysli ne názvy nebo popisy výrobků, ale texty, které jsou součástí aplikace. Například v horním rámci mohou být navigační odkazy v textové podobě - Ceník, Katalog, Přihlášení atd. Aktuální cena nákupu je uvozena textem Cena nákupu, nebo na stránce ceníku je nadpis stránky Ceník. Vzhledem k tomu, že Zoner inShop umí pracovat s více jazyky - buď můžete nastavit napevno jazyk, ve kterém má serverová část pracovat, nebo dokonce můžete umožnit zákazníkovi si jazyk měnit - bylo nutné přizpůsobit mechanismus šablon tak, aby se zobrazovaly texty odpovídající zvolenému jazyku. To by bylo možné řešit dvěma způsoby: buď pro každý jazyk vytvořit samostatnou sadu šablon, nebo všechny texty ze šablon "vytáhnout" ven a do šablony dát jen značku, který text se tam vlastně má vložit. Zoner inShop 3 jsme zvolil druhou možnost existuje jen jedna šablona ceníku, horního rámce atd. nezávisle na zvoleném jazyku, texty se do ní vkládají až při zpracování. Kam se který text má vložit je v šabloně označeno tagem shop.text(nazev textu), resp. <shop.text(nazev textu)>Anglický text, který se ovšem zcela ignoruje a samotný text je uložen v samostatném souboru s texty. To je odpověď na otázku položenou v titulku. V šablonách jsou sice vidět jen anglické texty, nicméně měnit je nemá smysl, protože se nikdy nepoužijí a plní pouze pomocnou funkci ke zvětšnení přehlednosti. Jazykové soubory s texty Požadovaný text se vyhledává podle svého názvu v textovém souboru v adresáři Texts/Languages a Texts/Languages/Def, • • • •
název souboru odpovídá názvu jazyka, sekce odpovídá názvu skriptu nebo šablony, společné texty pro všechny šablony mohou být umístěny v sekci Global, název textu je uveden vždy na začátku řádku (před znakem =).
Například všechny české texty jsou uloženy v souboru Texts/Languages/Def/Czech.txt. Texty pro ceník jsou uvedeny v sekci Price_list.asp, pro katalog v sekci Catalogue.asp a také v sekci Price_list.asp. Texty horního rámce jsou uvedeny v sekci Price.asp.
Autoři: Pavel Král, Martin Groh
STRANA 5/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
Chcete-li nějaké texty změnit nebo přidat, stáhněte si tento soubor, upravený pak nahrejte do nadřazeného adresáře Texts/Languages. Používání oddělených adresářů pro upravené a pro standardní texty umožňuje provádění upgrade (doplňování) standardních jazykových textů bez toho, že by se vám přepsaly vaše upravené soubory. Pokud bude do standardního jazykového souboru přidán nový text a ve vašem souboru nebude, nic se neděje, i tento nový text bude dostupný tagem shop.text, protože se nenačítá jen jeden jazykový soubor, ale nejdříve se načtou všechny texty ze standardního, tj. adresáře Texts/Languages/Def, a pak se "přeplácnou" texty z adresáře Texts/Languages (pokud tam existují). Texty, které lze nastavovat v Zoner inShop Designeru, se vkládají prostřednictvím tagu <shop.caption(NazevTextu)>... nebo <shop.UserText(NazevTextu)>..., které se od tagu shop.text mírně liší mechanismem vyhledání textu - přednostně se text tagu hledá v konfiguračním souboru (config.cfg) nahraném na server Zoner inShop Designerem (jedná se o konfigurační hodnoty s názvem caption_NazevTextu resp. text_Nazevtextu). U tagu shop.Caption pokud není text zadaný v Zoner inShop Designeru, se vyhledá standardní hodnota v jazykovém souboru, u tagu shop.UserText ne (nemá standardní hodnoty).
6. Tagy Zoner inShopu Tagem Zoner inShopu se rozumí značka v šabloně, která začíná vždy prefixem shop. a která je při zpracování nahrazena adekvátní hodnotou nebo která označuje začátek a konec bloku (dělící tagy). Například název výrobku se v šabloně reprezentuje tagem (značkou) shop.Item_Name, cena výrobku včetně DPH má svůj tag shop.Item_CustomerPriceWithTax. Bude-li se tedy dále v textu zmiňovat tag Item_Name, myslí se tím obvykle celý tag včetně prefixu shop.Item_Name. Zoner inShop není citlivý na velikost písmen v názvech tagů. Tagy inshopu nejsou novým programovacím jazykem, jsou to pouze značky, které se na serveru nahrazují svou hodnotou a mohou mít parametry. Jejich hlavním smyslem a účelem je možnost měnit vzhled prodejny, proto nelze očekávat, že splní nároky na programovací jazyk pro tvorbu aplikací. 6.1 Způsoby zápisu tagů Jak je obvyklé ve světě HTML, tagy se zapisují uvnitř ostrých závorek <> a mají své ukončovací tagy. Rovněž tagy Zoner inShopu lze takto zapsat: <shop.Item_Name>, a to jak s uzavíracím tagem tak bez něj, ale doporučuje se používat uzavírací tagy. Tag včetně uzavíracího tagu lze zapsat takto: <shop.Item_name>cokoliv nebo i krátce <shop.item_Name />
Autoři: Pavel Král, Martin Groh
STRANA 6/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
Z hlediska platnosti výsledného HTML kódu je způsob zápisu bezpředmětný, protože se vždy celý tag ještě na serveru nahradí za název výrobku. Všechny tyto zápisy tagu vedou ke stejnému výsledku: shop.Item_Name <shop.Item_name> <shop.Item_name /> <shop.Item_name>cokoliv Všechny tyto zápisy se v prohlížeči projeví stejně. Do prohlížeče se vůbec nedostanou. Zobrazí se pouze text odpovídající názvu výrobku. Zápis bez uzavíracího tagu ve tvaru <shop.Item_name> se nedoporučuje, protože to vede k delšímu zpracování šablony - při zpracování se vždy dohledává uzavírací tag až do konce šablony. V zápisu ve tvaru <shop.Item_name>cokoliv je text mezi otevíracím a uzavíracím tagem bezpředmětný (zcela se ignoruje) a ve výsledku se neobjeví, s výjimkou tzv. dělících tagů (shop.test apod. - viz dále). Tento zápis se používá především z toho důvodu, že když se v prohlížeči (nebo ve wysiwyg HTML editoru) zobrazí přímo šablona a ne výsledek jejího zpracování, aby bylo vidět, kde co je - prohlížeč místo kódu <shop.Item_name>cokoliv zobrazí jen slovo cokoliv. 6.2 Tagy inshopu uvnitř HTML tagu Zápis bez ostrých závorek je podporován z toho důvodu, aby bylo možné zapsat tag inshopu i v textové šabloně (ne HTML) nebo uvnitř jiného HTML tagu, například vložit barevnou hodnotu atributu bgcolor, například takto:
nebo
. Tag shop.tagParam se od předchozího zápisu liší tím, že atribut bgcolor do tagu TD vloží jen tehdy, není-li hodnota tagu shop.schema(mf_innerBGColor) prázdná. Takto zapsané tagy inshopu obvykle nejsou nijak modifikovány nebo rušeny ani wysiwyg HTML editorem. 6.3 Parametry neboli atributy tagů U některých tagů lze určovat další vlastnosti, které mají nějak ovlivnit výsledný HTML kód. U tagu shop.Item_Name žádný takový parametr specifikovat nemá smysl, protože výsledek musí být vždy stejný - název výrobku. Ale existují jiné, jejichž "chování" ovlivňovat smysl má. Například již zmiňovaný tag shop.text má parametr s názvem Index, jehož hodnota určuje název textu z jazykového souboru, který se má vložit. Parametry tagů lze zadávat dvěma způsoby: pořadím nebo podle názvu.
Autoři: Pavel Král, Martin Groh
STRANA 7/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
Parametry tagu podle pořadí se zadávají za název tagu tak, že se jen vyjmenují jejich hodnoty (v uvozovkách) a vzájemně se oddělují čárkou, například: shop.Text(DateAccepted) nebo <shop.text(DateAccepted) />. Parametry tagu podle názvu se zadávají za název tagu tak, že se vždy uvede název parametru, rovnítko, a hodnota parametru (v uvozovkách). Parametry se oddělují mezerou, přitom na pořadí parametrů nezáleží. Například: <shop.text Index="DateAccepted">Datum přijetí objednávky Může-li tag mít více parametrů, než kolik je zadáno, použijí se jejich výchozí hodnoty (což je většinou prázdný text). Poznámka: Proč vůbec existují dva způsoby zápisu, které se od sebe tak liší? Odpověď je vcelku jednoduchá - pohodlí. V některých případech je jednodušší používat zápis parametrů podle pořadí, jindy zase podle názvu. Pokud chci zapsat jen první parametr a vím jistě, že je to první parametr nebo když tag má definovaný jen jeden parametr, stačí jen zapsat jeho hodnotu, nemusím vždy vypisovat i název toho parametru. V jiném případě, kdy má tag inshopu definováno třeba 20 různých parametrů, není asi v lidských silách si pamatovat, v jakém pořadí mají být zadávány. Obzvláště je to výhodné v případě, kdy chcete nastavit hodnotu jen jednoho-dvou parametrů a ostatním ponechat jejich výchozí hodnoty. Pak je rozhodně užitečná možnost zadávat parametry jejich názvem. 6.4 Podmínky a cykly - dělící tagy Podmínky Některé části HTML kódu šablony je zapotřebí vložit jen při splnění určitých podmínek. K tomu slouží tag shop.test, který se od většiny ostatních tagů odlišuje tím, že patří do skupiny tzv. dělících tagů, tj. rozděluje šablonu na části. HTML kód mezi otevírací a uzavírací částí tagu shop.test se vloží nebo nevloží podle toho, zda je splněna podmínka. <shop.test(Podmínka)> ...podmíněný kus HTML kódu (může obsahovat i další tagy inShopu včetně tagů shop.test) ... Tag shop.test má ještě jeden způsob zápisu - se 3 parametry, který umožňuje přímo porovnat dvě hodnoty: <shop.test(value1=Hodnota1 value2=Hodnota2 operator=ZpůsobPorovnání)> ... Parametr Operator může nabývat hodnot =, <, >, <>, <=, >=, IN (pro zjištění, zda je první hodnota prvkem seznamu zadaného do parametru value2, hodnoty v seznamu oddělené čárkou). Není-li operator zadán, za výchozí hodnotu se považuje =. Příklady: <shop.test( "1", "2")>Není pravda - nevloží se nic, protože výsledek porovnání je false (nepravda).
Autoři: Pavel Král, Martin Groh
STRANA 8/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
<shop.test( "1", "2", "<")>1 je menší než 2 - vloží se text 1 je menší než 2, protože výsledek porovnání je true (pravda). <shop.test( "1", "2,3,1", "IN")>1 je obsažena v seznamu hodnot - vloží se text 1 je obsažena v seznamu hodnot. Všechny dělící tagy je nutné psát uzavřené v ostrých závorkách <> a je vyžadován jejich zavírací tag - musí být párové, tj. pro každý <shop.test> musí v šabloně existovat tag . Příklad: <shop.test(Podmínka1)> ... <shop.test(Podmínka2)> ... ... Cykly Dalším typem dělících tagů jsou cykly označující části šablony, které se mají jednou nebo vícekrát opakovat. Cyklů je několik typů, všechny však používají stejný princip. Například v ceníku je část šablony, která se má opakovat pro každý výrobek na stránce, uzavřena mezi tagy <shop.price_list_body> - tj. začátek těla ceníku... zde jsou tagy s vlastnostmi výrobku, např. shop.Item_Name - název výrobku, shop.Item_Description - popis, - tj. konec těla ceníku. Nebo seznam všech kategorií lze vytvořit s pomocí tagu shop.List_Items s parametrem Items=Categories: <shop.list_items items=categories> Název kategorie: shop.List_Level_Name Pokud neexistuje žádná kategorie, nevloží se nic, jinak se vloží seznam všech existujících kategorií. Často je užitečné na začátek a na konec seznamu dát nějaký text, ale jen tehdy, když seznam není prázdný, například hlavičku, začátek a konec html tabulky apod. K tomu účelu existují zvláštní sekce - hlavička a patička cyklu, které jsou nad a pod tělem cyklu, které můžete definovat tagem <shop.body_list_items>: <shop.list_items items=categories> Vložit jen jednou: Seznam kategorií: <shop.body_list_items> Opakovat pro každou kategorii: Název kategorie: shop.List_Level_Name Vložit jen jednou: Konec seznamu Pokud se uvnitř cyklu nenachází tag definující tělo cyklu, pak se za tělo cyklu (bude se opakovat pro každou položku) považuje vše, co je uvnitř tagu cyklu.
Autoři: Pavel Král, Martin Groh
STRANA 9/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
Hlavička a patička se vkládají jen jednou, a to jen tehdy, není-li cyklus prázdný (tj. obsahuje-li alespoň jednu položku). I ceník má svou hlavičku a patičku, které se označují zvláštními tagy shop.price_list_head a shop.price_list_bottom. Celá struktura šablony ceníku (i katalogu) pak vypadá následovně: začátek stránky <shop.price_list_head> začátek výpisu ceníku - hlavičky sloupců ceníku apod., je zde již známý počet položek <shop.price_list_body> .. vlastnosti výrobku - naplňují se tagy shop.Item_... postupně pro každý výrobek na stránce <shop.price_list_bottom> konec výpisu ceníku konec stránky Z uvedených příkladů je zřejmé, proč se tagu shop.Test a cyklům říká dělící tagy rozdělují šablonu na bloky, které se mají nebo nemají vložit, případně opakovaně, podle různých okolností. 6.5 Vnořování tagů Jako hodnotu parametru tagu můžete uvést rovněž některý z tagů Zoner inShopu, v tomto případě je to možné i bez prefixu shop. Například tag shop.isEnabled(NazevHodnoty) vrací hodnotu true nebo false podle toho, zda je hodnota povolena či nikoliv. Tuto hodnotu lze testovat tagem shop.test(hodnota) takto: <shop.test(isEnabled(NazevHodnoty))>... Příklad: doručovací adresu zákazníka vložit jen tehdy, není-li prázdná <shop.test(not(isEmpty(User_DeliveryAddress)))>Adresa pro doručení: shop.User_DeliveryAddress Mimo případu, kdy se hodnota parametru tagu rovná hodnotě jiného tagu, jak bylo uvedeno výše, je možné do hodnoty parametru uvést i složitější text obsahující další tagy inshopu, v tomto případě však je již vyžadovám prefix shop. Příklad: vložit popis výrobku s popiskem zkrácené na max. 150 znaků: <shop.FormatText value="Toto je popis: shop.Item_Description" clearHtml=1 Length=150 /> 6.6 Matematické a logické výrazy, proměnné a výpočty Tagy Zoner inShopu nerozumí výrazům typu 1+2, isEnabled(value1) OR isEnabled(value2) apod. V matematickém (nebo programátorském) jazyce - neumí vyhodnocovat výrazy s operátory. Avšak vyhodnocovat takové výrazy bývá zapotřebí i v šablonách, proto jsou definovány tagy, které jejich funkci nahrazují. Například pro součet hodnot lze použít tag shop.Add(value1, value2), který je
Autoři: Pavel Král, Martin Groh
STRANA 10/11
Šablony v Zoner inShopu 3
Technická dokumentace inshop/2003/02 Poslední revize: 3. 7. 2003, RS
nahrazen hodnotou rovnou součtu zadaných hodnot. Dalo by se říci, že operace součtu prostřednictvím operátoru + (plus) je nahrazena funkcí Add - sčítání. Podobně logické operátory OR, AND jsou nahrazeny funkcemi (tagy s parametry) shop.Or(value1, value2), shop.Add(value1, value2). Proměnné Pojem proměnné schopné uchovávat hodnotu určitého typu známý z programovacích jazyků není v šablonách Zoner inShopu definován, částečně lze jejich funkci suplovat tagy shop.SetValue, shop.GetValue, shop.SetSessionValue a shop.GetSessionValue. Výpočty Rozhodně se nedoporučuje tagy inshopu používat pro výpočty cen, k tomu opravdu nejsou určeny. Využití matematických schopností tagů inshopu lze vidět v oblasti formátování - například obarvit každý druhý řádek tabulky jinou barvou, zjištění počtu sloupců v tabulce v závislosti na množství zobrazených údajů apod.
Více informací o šablonách a přehled tagů naleznete v příručce pro pokročilé uživatele Zoner inShopu, kterou stáhnete na: http://www.zoner.cz/inshop/download.asp.