WebToDate/Referenční/Seznamy
K čemu je určena funkce Seznamy
Funkce Seznamy vám dovolí jednoduše a především automaticky zobrazovat na stránkách selekce zpráv, které mají některé společné vlastnosti.
Standardní postup vedoucí k zobrazení zprávy na stránce je ten, že z databáze zpráv vybereme zprávu, použijeme funkci pro umístění zprávy ve vybrané oblasti na stránce, kde specifikujeme styl a případné další vlastnosti a stránku vygenerujeme.
Tato funkce pracuje analogicky, ale místo jedné zprávy se pracuje s definovanou selekcí více zpráv z databáze.
Výhody použití seznamů jsou následující:
- Není třeba zprávy na stránky řadit individuálně. Vložení obsahu na stránku se provede hromadně.
- Obsah seznamu se automaticky aktualizuje při každém generování stránky podle momentálního stavu databáze zpráv, resp. dokonce při každém zobrazení, pokud je seznam na stránku vložen dynamicky.
Nevýhody jsou pak následující:
- Všechny položky seznamu jsou formátovány stejným stylem, nelze zde individuálně specifikovat grafickou podobu položky
- Nejen podmínka pro selekci zpráv, ale i pro třídění zpráv je hromadně daná, nelze tedy dost dobře explicitně měnit pořadí v seznamu, které je dané vždy jedním ze způsobů třídění položek v seznamu.
Pro výběry zpráv pomocí seznamů platí:
- Zobrazují se vždy pouze zprávy ve stavu Publikováno
- Lze provádět výběry jen z databáze zpráv, nikoliv fragmentů
Typy seznamů
Podle použití se seznamy dělí na Seznamy zpráv, Propojení se zprávou, seznamy vytvořené prostřednictvím SQL dotazu a Seznamy příloh ke zprávám.
- Seznamy zpráv umožňují definovat kritéria pro výběr určité množiny zpráv, kterou pak lze souhrnně umisťovat na stránky.
- Propojení se zprávou je funkce podporující tvorbu relací mezi články, které se pak využívají formou zobrazení seznamu souvisejících článků. Propojení pokrývají široké spektrum možností, jak označit související články (od výčtu až po automatické spojování článků podle kategorie, publikace apod.).
- SQL dotazy umožňují definovat množinu záznamů prostřednictvím obecného SQL dotazu. Tímto způsobem lze dotazovat nejenom databázové tabulky zpráv, ale i cokoliv jiného. Velmi jednoduchým způsobem tak můžete například na hlavní stránce publikovat přehled nejživějších diskuzí, nejaktivnějších uživatelů, nejčtenějších článků apod. Jde o funkci určenou pro technicky zdatné uživatele, kteří mají hlubší znalosti jazyka SQL.
- Seznamy příloh umožňují zobrazit k libovolné zprávě seznam souvisejících dokumentů, které lze stáhnout, přičemž dokumentem se rozumí soubor libovolného formátu (MS Word, MS Excel, PDF, obrázek apod.). Obsahem seznamu příloh jsou soubory připojené ke zprávě z databáze zdrojů.
Při zakládání nového seznamu se nejprve specifikuje jeho typ, který není možné dodatečně měnit.

Princip vytvoření nového seznamu
Chcete-li tuto funkci využít na svých stránkách, je třeba postupovat ve třech krocích.
- V prvním kroku definujte vlastní seznam, tj. pravidlo, podle kterého spolu články souvisejí. Dialogové okno pro vytvoření dynamických seznamů vyvolejte příkazem Seznamy v hlavní nabídce.
- Vytvoříte novou oblast (příkazem Oblast v hlavní nabídce).
- Vytvoříte novou šablonu, na kterou umístíme předchozí oblast.
<!--WTD_A(jmeno_oblasti)-->
Přidejte seznam na stránku do vytvořené oblasti (podobně jako zprávy).
Na jedné oblasti na stránce se mohou vyskytovat jak seznamy, tak jednotlivé zprávy dohromady. Pořadí je určené prioritou v rámci přiřazení objektu na oblast na stránce. Z hlediska omezení počtu generovaných objektů na oblast se se seznamem pracuje jako s jedním objektem. Pokud je tedy počet objektů v definici oblasti omezen např. na 5 a je vložen jeden seznam, lze v oblasti vygenerovat 4 zprávy a jeden obsah seznamu, přičemž počet zpráv zobrazovaných seznamem není dán vlastnostmi oblasti, ale definicí seznamu.
Seznamy zpráv
Pokud založíme nový seznam typu Seznam zpráv, objeví se formulář pro definici seznamu podle následujícího otisku obrazovky.

V prvním poli se definuje povinně Název seznamu, ostatní pole již definují kritéria výběru z databáze zpráv a způsob třídění. V horní tlačítkové liště lze kromě standardních tlačítek nalézt tlačítko zobrazující Umístění (na kterých stránkách je seznam použit) a funkci Test (vypíše prvních několik položek odpovídajících kritériím seznamu).
V následující části se definují kritéria seznamu. Zadané podmínky se spojují logickou spojkou "a zároveň". Možná kritéria pro výpis zpráv podle definici seznamu jsou následující:
- Stav – lze zvolit možnosti Publikováno, Archivováno a Publikováno a Archivováno
- Publikace - lze vybrat maximálně jednu publikaci
- Témata - lze vybrat maximálně jedno téma
- Kategorie - lze vybrat jednu kategorii s možností volby výpisu včetně podkategorií. Silným nástrojem je zde volba podle kategorie stránky. To znamená, že vybraná kategorie není specifikovaná přímo v definici seznamu, ale je daná stránkou, na které je seznam následně umístěn (každá stránka patří do právě jedné kategorie). Díky tomu můžete vytvořit jednu definici seznamu, který vypisuje zprávy z dané kategorie a tu opakovaně používat na různých stránkách, přičemž obsah seznamu se tím pádem kontextově mění podle aktuální kategorie. Dále je volby spojené s kategoriemi možno zadat údaj Hloubka zanoření. Tento údaj má smysl, pouze pokud se vypisují zprávy včetně podkategorií a udává, kolik úrovní podkategorií ve stromu kategorií se do výpisu zahrnuje. Navíc se použije jen v případě, že je zvoleno dělení podle kategorie. Hodnota 0 znamená pouze aktuální kategorii, 1 znamená pouze přímo podřízené kategorie atd., nevyplněná hodnota znamená celý podstrom bez omezení.
- Klíčová slova - lze zadat jedno nebo více klíčových slov. Více klíčových slov se odděluje středníkem, je-li zadáno více slov, spojuje se podmínka vzhledem ke klíčovým slovům logickou spojkou "nebo".
- Rubrika - lze zadat název rubriky. Jedná se o textový řetězec, tudíž je tato možnost náchylná k možnosti překlepů při zadávání zpráv, toto kritérium používejte jen ve výjimečných případech.
- Posledních x publikačních dní - výběr se provede ze zpráv, jejichž datum splňuje toto kritérium. Pokud máme dvě zprávy zadané 15.1., tři zprávy zadané 17.1. a dvě zprávy zadané 20.1. a nastavíme zde hodnotu 2, vybírají se všechny zprávy ze 17.1. a 20.1., neboli seznam vypíše pět zpráv.
- Mladší než - datum zprávy je mladší než zadaný počet dní
- Maximálně x zpráv - celkový počet zpráv vypisovaných seznamem je omezen na zadaný počet
- Stránka / oblast / spojit - tato funkce vypisuje zprávy umístěné na oblasti na zvolené stránce, nebo naopak kromě zpráv umístěných na zvolené oblasti. Nejprve vyberte nějakou stránku (může jít o stejnou stránku, na které bude seznam umístěn nebo o jinou). Pak vyberte oblast na vybrané stránce. Nakonec vyberte, zda chcete zprávy z dané oblasti na stránce do seznamu zahrnout nebo naopak vyjmout.
Další volbou je Třídění. Lze třídit podle:
- Data - zprávy jsou tříděny podle data a času sestupně
- Priorita - datum - zprávy jsou tříděny primárně podle priority zprávy sestupně, sekundárně podle data a času sestupně. Prioritou je zde míněna priorita zadaná přímo ve formuláři pro zprávu, nikoliv priorita jako vlastnost instance zprávy na stránce.
- Rubriky - třídí se podle názvu rubriky
- Názvu - třídí se abecedně podle názvů zpráv
Poslední možnosti jsou Dělit podle a Stránkování.
Funkce dělení seznamu již předjímá způsob grafického výpisu, ale tuto potřebu není dost dobře možné popsat pomocí stylů a proto se specifikuje v definici seznamu.
Pokud chceme dělený seznam, znamená to, že seznam se nevypisuje lineárně (všechny položky na stejné úrovni), ale hierarchicky ve dvou úrovních. Jakmile se změní položka, podle které se dělí, vzniká nová "sekce" seznamu, do které lze vložit obsah polí začátek resp. konec sekce WebToDate stylu.
Nejjednodušší příklad je následující: chceme vytvořit výpis zpráv, kde kromě např. nadpisů a popisů zpráv je uveden datum. Datum ale nechceme uvést u každé zprávy, ale vždy
jako uvozující nadpis, za kterým pak následují zprávy s daným datem. V takovém případě zvolíme třídit podle data a dělit podle data, pak dostáváme požadovaný tvar výpisu.
Speciálním případem je pak možnost dělit každých x položek. To znamená, že dělení není řízeno daty (jako v předchozím příkladu, kdy předem nevíme, kolik zpráv se stejným datem v databázi bude), ale vynuceně se dělí po x položkách. Tuto možnost využijte pro vytváření vícesloupcových seznamů. Zadáme-li zde např. číslo 3, po každých třech zprávách se při generování seznamu vloží obsah polí Začátek sekce a Konec sekce vybraného WebToDate stylu.
Další poněkud složitější možností je dělení podle kategorií. Tento výpis může hierarchicky formátovat obsah zvolené kategorie a jejich podkategorií. Tento způsob výpisu je schématicky znázorněn na následujícím obrázku.

V případě využití této možnosti je pořadí kategorií v dané úrovni vnoření dáno jejich prioritou, pořadí zpráv uvnitř kategorie je dáno zvoleným tříděním.
Stránkování umožňuje definovat, že nechceme jeden dlouhý výpis zpráv dle kritérií seznamu, ale chceme seznam zobrazit ve stránce se stránkovací lištou umožňující výpis po x položkách. Pro stránkované seznamy platí:
- Takový typ seznamu je třeba vložit na stránku dynamicky, jinak stránkování nemůže být funkční.
- Pro styl formátující seznam jsou k dispozici dvě klíčová slova, která lze použít v hlavičce nebo patičce stylu. Jedno klíčové slovo reprezentuje stránkovací lištu, druhé uvozující nadpis (který může obsahovat např. informace o celkovém počtu zpráv odpovídajících kritériu apod.).
Seznam typu propojení se zprávou
Seznam typu propojení se definuje velmi podobně jako seznam zpráv. Důležité je zde to, že u kritérií, u kterých to má smysl, se kromě explicitního výběru vyskytuje volba stejná. To znamená, že když toto použijeme např. u kategorie, chceme, aby se ve stránce zobrazující danou zprávu zobrazili odkazy na další zprávy, které mají stejnou kategorii jako právě zobrazovaná zpráva.

Speciální algoritmus je implementován pro volbu Klíčová slova:stejná. Tato možnost pracuje následovně:
- Nevybírají se zprávy, které mají všechna klíčová slova stejná, ale která mají alespoň jedno stejné klíčové slovo.
- Netřídí se primárně podle volby nastavené v Třídit podle, ale podle počtu shodných klíčových slov, nastavené třídění se uplatní až sekundárně.
V praxi to znamená, že takový seznam zobrazuje zprávy, které mají co největší počet klíčových slov shodných s danou zprávou, což může při správném zadávání klíčových slov ke zprávám dávat tématicky velmi podobné až shodné zprávy.
Seznamy příloh
Definice seznamu příloh
Seznamy příloh jsou určeny k tomu, aby vypisovali odkazy na soubory připojené ke zprávě z databáze zdrojů, přičemž po uživateli zpracovávajícímu zprávu je požadováno pouze toto připojení, nikoliv např. umístění do textu zprávy apod.

V definici seznamu se vyskytují podobné položky jako v předcházejících případech. Upozorněme zde snad jen na to, že jedním z možných kritérií třídění je třídění dle ID instance, což v praxi znamená třídění podle pořadí, v jakém uživatel vložil soubory z databáze zdrojů do zprávy.
Druhy seznamů příloh
Ve formuláři pro definici seznamů se zobrazuje výběr druhu seznamu. Tato funkce je ve WebToDate k dispozici proto, aby bylo možné při zobrazení zprávy vypisovat více než jeden seznam příloh. Typickým příkladem může být jeden druh seznamu jako dokumenty ke stažení a druhý seznam jako připojené fotografie (např. fotogalerii), může jít ale např. o nasazení, kdy v jednom seznamu mají být marketingové dokumenty k produktu, v druhém technické dokumenty k produktu apod.
Druhy seznamů příloh se spravují pomocí nabídky Administrace – Druhy seznamů. Zobrazuje se obrazovka dle následujícího obrázku.

Druhy seznamů lze přidávat bez omezení, odebírat jen když nejsou nikde použity. Přejmenování nemá vliv na žádnou funkci, názvy druhů seznamů se na veřejně přístupné části serveru nezobrazují.
SQL dotazy
Tato funkce umožňuje zadat logickou definici seznamu formou dotazu v jazyce SQL. Pomocí této funkce lze nejen vybírat nejrůznější seznamy zpráv, kterých nelze jinak standardně dosáhnout, ale také zobrazovat data i z jiných databází (modulů WebToDate, či dat zákazníka). SQL dotaz je pouze jiný způsob zadání logické podmínky pro seznam. S takto vytvořeným seznamem se pak pracuje jako s každým jiným seznamem (jak je popsáno výše). Tato funkce je určena pouze zkušeným uživatelům.

Při vkládání SQL příkazů platí některá omezení:
- SQL příkaz nesmí manipulovat s daty v jiných tabulkách než dočasných. Vkládání, úpravy a mazání dat či celých tabulek není povoleno.
- Seznam názvů sloupců, které dotaz vrátí, musí odpovídat názvům klíčových slov používaných pro pole databáze zpráv. Dotaz "SELECT MYCOLUMN FROM MYTABLE” bude vyhodnocen jako nesprávný, dotaz "SELECT MYCOLUMN AS TITLE FROM MYTABLE.” bude vyhodnocen jako správný, neboť TITLE je název klíčového slova pro pole používané v tabulce zpráv. Označení polí databáze zpráv je tedy analogické názvům používaným např. ve stylech pro formátování zpráv.
- Formátování výsledku může být závislé na cílovém datovém typu. Pokud se např. pomocí dotazu vybírá sloupec obsahující celé číslo, je vhodné použít jako cílový název sloupce (v konstrukci název_sloupce AS něco) opět položku, která v databázi zpráv reprezentuje celé číslo (ID, PRIORAUX apod.). V opačném případě může dojít k nežádoucím efektům jak z hlediska formátování tak např. třídění apod.
- Různé databáze používají různé dialekty jazyka SQL; dotaz, který je funkční pro databázi MS SQL Server, nemusí být funkční pro databázi MySQL a podobně.
- Definice seznamů standardní metodou jsou výrobcem testovány na rychlost provedení. SQL dotaz předem testovat nelze, proto pokud si nejste jisti možnou rychlostí provedení příkazu, použijte takto definovaný seznam jako statický, což může ovlivnit pouze rychlost generování stránek; použití dynamického seznamu by mohlo mít negativní dopad na rychlost a funkčnost celého vašeho webového serveru.
- Tato funkce automaticky neomezuje počet záznamů načítaných z databáze; pokud takové omezení požadujete, použijte konstrukci "SELECT TOP", "SET ROWCOUNT" nebo "LIMIT". Ve formuláři je pole Maximálně x zpráv, které v prezentační vrstvě délku seznamu omezí, v případě použití tohoto pole se ale nejprve načítá výsledek celého dotazu a pak se seznam položek ořízne na zadaný limit.
Následující příklad např. vybírá deset nejčtenějších zpráv za posledních 30 dní:
SELECT NADPIS AS TITLE, LINKNADPIS AS TITLELINK,
SUM(NEWSIMPRESSIONS.IMPRESSIONS) AS PRIORAUX
FROM NEWSIMPRESSIONS,NEWSDB WHERE NEWSDB.ID=NEWSIMPRESSIONS.ZPRAVAID
AND DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= NEWSIMPRESSIONS.DATUM
AND NEWSDB.KOREKTURA=1 AND NEWSDB.HTMLFRAGMENT=0
GROUP BY NADPIS, LINKNADPIS ORDER BY PRIORAUX DESC LIMIT 10
Tento kód je funkční jen pro databázi MySQL, pro jiné databázové systémy je třeba dotaz odpovídajícím způsobem přeformulovat.
Ve formuláři pro vložení SQL dotazu lze rovněž volitelně vyplnit pole Dělit podle. Je zde možné zadat jeden ze sloupců, který vrací SQL dotaz (v předchozím příkladu např. PRIORAUX). Pokud je zadáno, bude seznam dvouúrovňově dělený podle zvoleného sloupce a je možné v poli Začátek sekce nebo Konec sekce stylu formátujícího seznam uvést klíčové slovo zobrazující položku podle které se dělí (v tomto příkladu tedy <!--WTD_F(PRIORAUX)-->). Je-li pole Dělit podle vyplněno jakoukoli jinou hodnotou než jedním z názvů sloupců vracených SQL dotazem, žádné dělení seznamu se neprovádí.
SQL seznamy podporují stránkování stejně jako jiné typy seznamů. Pokud má být seznam stránkovaný, musí být na stránku vložen dynamicky, zvolena volba zobrazit položky po stránkách o zadané velikosti a zadán počet položek na stránce v Maximálně x zpráv.
SQL seznamy jsou v zásadě statickými dotazy do databáze, čili nepřebírají nějaké vnější parametry. Výjimkou je možnost vložit do SQL kódu ID kategorie stránky. SQL seznam může obsahovat značku {PAGECATEGID}, za kterou se před sestavením dotazu dosazuje ID kategorie, ve které je umístěna stránka, na které se seznam nachází. Následující dotaz vybírá náhodně dvě zprávy opatřené ilustračním obrázkem z kategorie, ve které se nachází stránka, do které je seznam vložen:
SELECT NADPIS AS TITLE, LINKNADPIS AS TITLELINK, POPIS AS DESCRIPTION, OBRAZEK AS PIC
FROM NEWSDB JOIN NEWSKATEGCONN ON NEWSDB.ID=NEWSKATEGCONN.NEWSID
WHERE NEWSDB.KOREKTURA=1 AND HTMLFRAGMENT=0 AND NEWSKATEGCONN.KATEGID={PAGECATEGID}
AND DATE_SUB(CURDATE(),INTERVAL 100 DAY) <= DATUM
AND OBRAZEK <> ''
ORDER BY RAND() LIMIT 2
Použití seznamů - případy užití
Jak je uvedeno již výše, seznam se přiřadí na vybranou oblast na stránce v podstatě identickým způsobem jako zpráva. Součástí informaci o výskytu seznamu na stránce je i styl, jakým se seznam formátuje. V definici stylů máme k dispozici pole, která se u seznamů používají tímto způsobem:
- Hlavička – vloží se na začátek seznamu
- Patička – vloží se na konec seznamu
- Tělo – aplikuje se na jednotlivé položky seznamu
- Separátor – vloží se za každou položku seznamu kromě poslední
- Začátek sekce – vloží se na začátek sekce děleného seznamu, není-li seznam dělený, nepoužije se
- Konec sekce - vloží se na konec sekce děleného seznamu, není-li seznam dělený, nepoužije se
V následujících podkapitolách naleznete několik typických příkladů řešení pomocí seznamů.
Lineární výpis seznamu zpráv z určené rubriky
Požadavek:
Chceme na určité stránce umístit jednoduchý seznam zpráv vypisovaných pod sebou, které odpovídají určitému kritériu, např. obsahují zvolené klíčové slovo.
Řešení:
V definici seznamu zvolíme výběrová kritéria, jako způsob dělení ponecháme nedělit. Ve stylu vyplníme pouze tělo (analogicky jako kdyby šlo o jednu zprávu), případně separátor (např. <hr''/>).'' Pokud chceme celý seznam formátovat jako HTML tabulku, vyplníme hlavičku a patičku ''(<''table''>), stejně postupujeme, když chceme na začátku či konci seznamu vypsat nějaký text.
Výpis obsahu rubriky s několika ručně umístěnými upoutávkami
Požadavek:
Chceme vytvořit stránku, která má dvě oblasti s obsahem. V první horní oblasti chceme ručně vybrané zprávy - nejdůležitější či nejnovější opatřené např. ilustračním obrázkem a individuálně formátované, ve druhé spodní oblasti pak výpis dalších zpráv z rubriky, ovšem kromě těch, které jsme umístili do první oblasti.
Řešení:
Do první oblasti vkládáme zprávy běžným způsobem dle vlastního uvážení. Seznam pro druhou oblast definujeme podobně jako v předchozím případě, do kritérií ale navíc použijeme funkci Stránka / Oblast / Spojit. Zde zvolíme stránku a první oblast, kterou plníme ručně, jako kritérium spojit zvolíme Vyjmout ze seznamu. Výsledkem je seznam, který vypisuje zprávy dle daného kritéria kromě těch, které jsou v ručně plněné oblasti.
Agregované výpisy z rubrik na úvodní stránce
Požadavek:
Chceme ručně spravovat několik rubrikových stránek. Na každé z těchto stránek připravíme oblast, do které tým spravující danou rubriku vkládá zprávy. Dále chceme vytvořit stránku (např. úvodní stránku), do které se zprávy nevkládají ručně, ale má (např. i v jiném formátování) prezentovat právě ty zprávy, které byly jednotlivými týmy vybrány a vloženy na jejich rubriky.
Řešení:
V definici seznamu opět použijeme funkci Stránka / Oblast / Spojit, tentokrát ale v posledním kroku zvolíme Zahrnout do seznamu. Takový seznam vybírá zprávy, které jsou ručně umístěné v jiné oblasti na jakékoliv vybrané stránce. Seznam má svůj styl, který rozhodně nemusí být identický s tím, kterým byly formátovány zprávy na rubrikách.
Výpis zpráv dělený podle data
Požadavek:
Chceme vytvořit výpis zpráv, kde kromě např. nadpisů a popisů zpráv je uveden datum. Datum ale nechceme uvést u každé zprávy, ale vždy jako uvozující nadpis, za kterým pak následují zprávy s daným datem.
Řešení:
Nadefinujeme požadovaná kritéria podobně jako v prvním příkladu, ale zvolíme způsob dělení podle data. Ve stylu, kterým chceme seznam formátovat nepoužijeme klíčové slovo pro datum (<!--WTD_F(DATE)-->) v těle stylu, ale v poli Začátek sekce.
Výpis zpráv dělený podle kategorie
Požadavek:
Chceme vytvořit výpis zpráv, který zobrazuje obsah dané kategorie a hierarchický výpis všech podkategorií a zpráv v nich.
Řešení:
V definici seznamu zvolíme u kategorie včetně podkategorií. V dělit podle zvolíme kategorie, v třídit podle např. kritérium priorita-datum.
Odpovídající styl nadefinujeme zhruba takto:
Tělo:
<h4><a href="<!--WTD_F(TITLELINK)-->"><!--WTD_F(TITLE)--></a></h4>
<p><!--WTD_F(DESCRIPTION)--></p>
Začátek sekce:
<div class="subnadpis">
<h3 id="category<!--WTD_F(CATEGORYID)-->"><!--WTD_F(CATEGORY)--></h3>
</div>
<div class="prehled">
Konec sekce:
</div>
V odpovídajících uvedených CSS třídách je pak třeba zajistit, že ve zobrazení dojde k žádoucímu odsazení textu.
Výpis zpráv v několika sloupcích
Požadavek:
Chceme na stránce vypsat zprávy podle daného kritéria, ale v několika sloupcích.
Řešení:
V definici seznamu ve specifikaci dělení zvolíme dělit každých x položek, za x vložíme počet sloupců. Styl nadefinujeme např. následovně:
'''Hlavička:'''
<table>
'''Patička:'''
</table>
'''Tělo:'''
<td><!--WTD_F(TITLE)--></td>
'''Začátek sekce:'''
<tr>
'''Konec sekce:'''
</tr>
Pro X=3 dostáváme HTML tabulku, která má seznam nadpisů článků formátovaný ve třech sloupcích. Zbývá pak dodefinovat, co se má stát, aby se celá tabulka vygenerovala do násobků x, tedy aby výsledný kód měl v každém řádku stejný počet buněk, přičemž některé buňky mohou být prázdné. Vložení prázdné buňky se dá zajistit pomocí podmíněného vložení vnitřku <td> tagu pomocí WTD_IF konvence.
Syntaxe použitelná pouze v těle stylu je
<!--WTD_IF(ROWEMPTY,"...nějaký kód…")-->
<!--WTD_IF(ROWNOTEMPTY,"...nějaký kód…")-->
Kód odpovídající události ROWNOTEMPTY se vkládá v případě, že se vkládá skutečná položka seznamu, ROWEMPTY v případě, že se dopočítává na celočíselný násobek.
Tělo stylu pak může vypadat např. následovně:
<td>
<!--WTD_IF(ROWNOTEMPTY,"<!--WTD_F(TITLE)-->")-->
<!--WTD_IF(ROWEMPTY," ")-->
</td>
Použití těchto WTD_IF klíčových slov není povinné, tělo stylu může být i např. pouze
<td><!--WTD_F(TITLE)--></td>
V takovém případě pro existující položky bude v buňkách HTML tabulky nadpis zprávy, pro dopočítané položky pouze prázdný řetězec.
Dopočítávání položek se provádí vždy, pokud uživatel nechce mít vložené dopočítané položky, zajistí to následujícím tělem stylu:
<!--WTD_IF(ROWNOTEMPTY,"<td><!--WTD_F(TITLE)--></td>")-->
Nebo případně:
<!--WTD_IF(ROWNOTEMPTY,"<td><!--WTD_F(TITLE)--></td>")-->
<!--WTD_IF(ROWEMPTY,"")-->
Pokud se styl obsahující události ROWNOTEMPTY nebo ROWEMPTY v těle stylu aplikuje na jiný druh seznamu nebo jednotlivé zprávy, použije se kód vložený do události ROWNOTEMPTY, na událost ROWEMPTY nikdy nedojde, protože formátovaný záznam existuje vždy a kód vložený do tohoto klíčového slova se pak vždy ignoruje.
Výpis zpráv se střídáním barev lichých a sudých řádků seznamu
Požadavek:
Chceme na stránce vypsat zprávy podle daného kritéria vizuálně se střídáním barev lichých a sudých řádků seznamu.
Řešení: Do těla stylu pro seznam vložíme následující kód:
<!--WTD_IF(ROWODD,"<div style="background-color:#eeeeff">")-->
<!--WTD_IF(ROWEVEN,"<div style="background-color:#ffffaa">")-->
<div class="headingsmall">
<!--WTD_F(DATE)-->, <!--WTD_F(TIME)--><!--WTD_IF(SOURCENOTNULL,", <!--WTD_F(SOURCE)-->")-->
</div>
<a href="<!--WTD_F(TITLELINK)-->"><!--WTD_F(TITLE)--></a>
</div>
Důležité jsou zde konstrukce <!--WTD_IF(ROWODD,"...")--> a <!--WTD_IF(ROWEVEN,"...")-->, které vkládají kód podmíněně podle toho, zda se jedná o lichý nebo sudý řádek.
Stránkovaný seznam zpráv z dané kategorie
Požadavek:
Chceme zobrazit výpis zpráv podle zvoleného kritéria, ne však všechny na jedné stránce, ale na více stránkách po zvoleném počtu položek. Příklad takového výpisu je na následujícím obrázku.

Řešení:
Nejprve se ujistíme, že je definována stránkovací lišta (Administrace – Nastavení).
Definici seznamu provedeme obvyklým způsobem, ale zvolíme zobrazit zprávy po stránkách o zadané velikosti. V hlavičce či patičce stylu použijeme klíčová slova:
<!--WTD_LISTS(NAVIG)--> - reprezentuje navigační lištu
<!--WTD_LISTS(LABEL)--> - reprezentuje uvozující výpis výsledků (např. "Dokument 1 až 10 z 50")
Seznam přiřadíme na stránku dynamicky.
Související články
Požadavek:
Při zobrazování celých textů zpráv (pomocí skriptu detail.php) chceme vedle zprávy zobrazit odkazy na několik souvisejících (tématicky příbuzných) článků.
Řešení:
Definujeme seznam typu propojení. Využijeme možností zvolit u daného kritéria příznak stejná. Seznam přiřadíme na předlohu pro zprávu dynamicky, formátovací styl se nijak neliší od jiných stylů vhodných pro seznamy.
Soubory ke stažení
Požadavek:
Při zobrazování celých textů zpráv (pomocí skriptu detail.php) chceme vedle zprávy zobrazit seznam souborů ke stažení.
Řešení:
Definujeme seznam typu seznam příloh. Seznam přiřadíme na předlohu pro zprávu dynamicky. Styl seznamu bude využívat klíčová slova pro zdroje (typu WTD_ASSET).
Fotogalerie
Požadavek:
Ve stránce se zprávou chceme zobrazit fotogalerii - obrázky (menší náhledy), kde kliknutím se zobrazí větší obrázek.
Řešení:
Definujeme seznam typu seznam příloh. Seznam přiřadíme na předlohu pro zprávu dynamicky. Tělo stylu seznamu může vypadat zhruba následovně:
<a href="<!--WTD_ASSET(MASTERFILEURL)-->" target="_blank"><img src="<!--WTD_ASSET(FILEURL)-->" alt="<!--WTD_ASSET(TITLE)-->" width="<!--WTD_ASSET(FILEWIDTH)-->" height="
<!--WTD_ASSET(FILEHEIGHT)-->"></a>
Obsah dalších polí seznamu se liší podle grafické prezentace. Pokud chceme fotogalerii stránkovanou, použijeme v patičce stylu stránkovací lištu <!--WTD_LISTS(NAVIG)-->. Pokud chceme galerii např. jako HTML tabulku, postupujeme podobně jako v příkladu Výpis zpráv v několika sloupcích.
Fotogalerie s listováním ve stránce se zobrazením jedné fotografie
Požadavek:
Ve stránce se zprávou chceme zobrazit fotogalerii - obrázky (menší náhledy), kde kliknutím se zobrazí HTML stránka s větším obrázkem s popisky apod.) a s listováním po jednotlivých obrázcích ve fotogalerii (Předchozí - Následující).
Řešení:
Definujeme seznam typu seznam příloh. Seznam přiřadíme na předlohu pro zprávu dynamicky. Tělo stylu seznamu může vypadat zhruba následovně:
<div class="galerie-box"><a href="/scripts/detail.php?id=<!--WTD_ASSET(ID)-->&newsid=<!--F(ID)-->&listid=<!--WTD_LISTS(ID)-->"><img src="<!--WTD_ASSET(FILEURL)-->"
alt="<!--WTD_ASSET(TITLE)-->" width="<!--WTD_ASSET(FILEWIDTH)-->" height="<!--WTD_ASSET(FILEHEIGHT)-->"></a><br /><!--WTD_FORMAT(SMAXLEN,"130, …","
<!--WTD_ASSET(TITLE)-->")--></div>
Důležitý je zde kód pro odkaz na zobrazení jedné fotografie <a href="/scripts/detail.php?id=<!--WTD_ASSET(ID)-->&newsid=<!--F(ID)-->&listid=<!--WTD_LISTS(ID'')-->">.'' Pokud bychom nechtěli funkci listování po jednotlivých obrázcích, můžeme použít jednodušší konstrukci ''<a href="<!--WTD_ASSET(TITLELINK'')-->">, v takovém případě by ale stránka pro zobrazení větší fotografie neměla parametry nutné pro zobrazení odkazů na předchozí / následující fotografii.
V předloze pro zdroje se pak může nacházet zhruba následující kód:
<div>
<!--WTD_IF(PREVIOUSITEM,"<a href="<!--WTD_LISTS(PREVIOUSITEM)-->" title="Přeskočit na předchozí obrázek v této fotogalerii">Předchozí</a>")--> | <!--WTD_IF(NEXTITEM,"<a href="
<!--WTD_LISTS(NEXTITEM)-->" title="Přeskočit na následující obrázek v této fotogalerii">Následující</a>")-->
<!--WTD_IF(RETURNURL,"<a href="<!--WTD_F(RETURNURL)-->#fotogalerie" title="Přeskočit na přehled všech obrázků v této fotogalerii">Zpět na fotogalerii</a><br />")-->
<img src="<!--WTD_ASSET(FILEURL)-->" alt="<!--WTD_ASSET(TITLE)-->" id="thepic"">
<br/>
<strong><!--WTD_ASSET(TITLE)--></strong>
<!--WTD_IF(ASSET_DESCRIPTIONNOTNULL,"<br /><!--WTD_ASSET(DESCRIPTION)-->")-->
<!--WTD_IF(ASSET_SOURCENOTNULL,"<br />Autor: <!--WTD_ASSET(SOURCE)-->")-->
</div>
Tento kód zobrazí odkazy na předchozí / následující obrázek v galerii, vlastní větší obrázek a pak popisky obrázku z příslušného zdroje.
Implementace fotogalerie s listováním v zobrazení vybrané fotografie
Poslední výše uvedený příklad se implementuje kombinací více různých možností a funkcí WebToDate, proto zasluhuje samostatný popis. Používají se následující prvky:
- Ve stránce zobrazující zprávu je vložen seznam příloh, ke kterému jsou připojeny soubory ze zdrojů, připojují se menší varianty fotografií zobrazované jako náhledy.
- Ve stylu pro tento seznam se tvoří odkaz na zobrazení jedné fotografie speciálním způsobem. Stránce zobrazující jednu fotografii je třeba předat informace o tom, o jakou fotogalerii se jedná, tj. ke které zprávě patří a k jakému seznamu v této zprávě. Obecně totiž platí, že každý soubor ze zdrojů lze připojit k libovolnému množství zpráv k různým druhům seznamů, takže na základě pouhé informace o tom, jaká fotografie se má zobrazit, by nebylo možné vytvořit odkazy na předchozí resp. následující fotografii v galerii.
- Větší fotografie zobrazovaná po kliku na náhled v mozaice galerie se je master soubor daného zdroje, musí se ale zobrazit v HTML stránce, což je ve WebToDate zobrazení detailu zdroje s využitím předlohy pro zdroje.
- Musí se nějak definovat návratová adresa pro přechod zpět na zobrazení fotogalerie ve zprávě. Jednoduchá informace o ID zprávy může a nemusí stačit - pokud je zpráva nejprve zobrazena s vynucením jiné šablony nebo s dalšími parametry, je žádoucí se opět vrátit k původnímu zobrazení včetně všech parametrů.
Prvním krokem je vytvoření odkazu na zobrazení detailu zdroje ve stylu pro seznam zobrazující fotogalerii ve zprávě. Jak je uvedeno v příkladu výše, typický odkaz se ve stylu vkládá jako kód
<a href="/scripts/detail.php?id=<!--WTD_ASSET(ID)-->&newsid=<!--F(ID)-->&listid=<!--WTD_LISTS(ID)-->">
Dále se implementuje předloha pro zdroje. Pro listování musí obsahovat odkazy <a href="<!--WTD_LISTS(PREVIOUSITEM)-->">Předchozí</a>'' a ''<a href="<!--WTD_LISTS(NEXTITEM)-->">Následující</a''>, aby se ale odkazy nezobrazovaly na stránce s první resp. poslední fotografií, používá se podmíněné vložení těchto odkazů pomocí konstrukce typu WTD_IF, jak je v příkladu uvedeno.
Aby bylo možné vložit do předlohy pro detail odkaz zpět na fotogalerii, je k dispozici klíčové slovo <!--WTD_F(RETURNURL)-->, lze ale ovlivnit vkládanou návratovou adresu podle toho, zda jde o prostou adresu zprávy (obsah pole Odkaz nadpisu databáze zpráv), nebo jde o složitější URL. Proto se postupuje následovně:
- Ve stylu pro seznam položek ve fotogalerii v odkazu na jednu položku lze použít parametr returnurl, kterým lze při volání detailu zdroje specifikovat odkaz na návrat.
- Pokud není parametr returnurl uveden, použije se hodnota Odkaz nadpisu zprávy pro návratovou URL adresu na zprávu.
Je-li tedy odkaz z fotogalerie na detail ve tvaru /scripts/detail.php?id=4056&newsid=8731&listid=6 a Odkaz nadpisu volající zprávy je /cz/moje-zprava-609/, bude mít odkaz v detailu hodnotu /cz/moje-zprava-609/. Pokud je ale odkaz z fotogalerie ve tvaru /scripts/detail.php?id=4056&newsid=8731&listid=6&returnurl=%2Fscripts%2Fdetail.php%3Fid%3D8731%26tmplid%3D45, bude mít odkaz v detailu zdroje pro návrat na fotogalerii hodnotu /scripts/detail.php?id=8731&tmplid=45. Hodnota parametru returnurl musí být v URL encoded tvaru.