Šablony v Zoner inShopu 3

Transkript

Šablony v Zoner inShopu 3
Šablony v Zoner inShopu 3
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 ...</shop.t
est>.
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
</shop.text>
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)>...</shop.caption> nebo
<shop.UserText(NazevTextu)>...</shop.UserText>,
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</shop.item_Name> 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</shop.item_Name>
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</shop.item_Name> 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</shop.item_Name>
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:
<td bgcolor=shop.schema(mf_innerbgcolor)> nebo
<td shop.tagParam(bgcolor, schema(mf_innerBgColor))>.
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</shop.text>
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) ... </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í)>
... </shop.test>
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</shop.test>
- 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</shop.test>
- 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</shop.test>
- 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 </shop.test>. Příklad:
<shop.test(Podmínka1)>
...
<shop.test(Podmínka2)>
...
</shop.test>
...
</shop.test>
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, </shop.price_list_body> - 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
</shop.list_items>
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
</shop.body_list_items>
Vložit jen jednou: Konec seznamu
</shop.list_items>
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_head>
<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_body>
<shop.price_list_bottom>
konec výpisu ceníku
</shop.price_list_bottom>
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))>...</shop.test>
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</shop.test>
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.
Autoři: Pavel Král, Martin Groh
STRANA 11/11