Podmínkové příkazy

Kromě klasických funkcí, které vykonají přímou akci podporuje Pub-Me CMS také podmínky. K tomu využívá příkazů if, else a endif. If definuje podmínku, else se provede v případě nesplnění podmínky a endif celou podmínku uzavírá. Narozdíl od ostatních funkcí musí stát podmínkové příkazy if, else a endif samostatně bez mezer v „závorkách“ <%...%>, tzn. <%if(podminka)%> ... <%else%> ... <%endif%>. Chcete-li použít více vložených podmínek je to možné, použijete-li následující konstrukci:

<%if("podminka1")%>
  1. podmínka splněna
  <%if("podminka2")%>
    2. podmínka splněna (else není definováno)
  <%endif%>
<%else%>
  1. podmínka nesplěna
  <%if("podminka3")%>
    3. podmínka splněna
  <%else%>
    3. podmínka nesplněna
  <%endif%>
<%endif%>

Podmínka s argumenty „typu boolean“ má formát <%if("podminka")%>, podmínka s argumenty, které porovnávají argument s hodnotou zadanou uživatelem mají formát <%if("podminka=hodnota")%>. Viz příklady.

<%if("comments")%>Podmínka splněna<%endif%> // Kladná podmínka (komentáře povoleny)
<%if("!comments")%>Podmínka splněna<%endif%> // Záporná podmínka (komentáře nejsou povoleny)
<%if("lang=cs")%>Podminka splněna<%endif%> // Kladná podmínka (aktuální jazyk je čeština)
<%if("!lang=cs")%>Podminka splněna<%endif%> // Záporná podmínka (aktuální jazyk není čeština)

Pozn.: Argumenty lze zadávat i bez uvozovek  - tedy např. <%if(comments)%> Povšimněte si, že hodnota porovnávaná se argumentem není sama uzavřena v uvozovkách. Na rozdíl od programovacích jazyků založených na syntaxi C (JS, PHP...) se pro porovnávání nepoužívá zdvojené rovná se (==), ale pouze jednoduché rovná se (=). Zápornou podmínku vytvoříme přidáním vykřičníku ! na začátek argumentu (nefunguje operátor !=).

Argumenty podmínkových příkazů

Pokud je napsán pouze argument (např. comments), znamená to, že se jedná o argument typu boolean (může být true nebo false) a nezadává se s žádnou hodnotou. Zápis argument=hodnota znamená, že podmínka je true v případě, že hodnota argumentu se rovná zadané hodnotě.

Jednotlivé argumenty jsou pro přehlednost popsány v tabulce na zvláštní stránce.

Jak na AND a OR

Pub-Me CMS nemá momentálně implementované vícenásobné či vnořené podmínky (A a B, A nebo B, (A a B) nebo C). Nicméně i toto chování lze nasimulovat.

Podmínka1 AND Podmínka2

<%if(podminka1)%>
  <%if(podminka2)%>
  Podmínka1 i Podmínka2 splněna
  <%endif%>
<%endif%>

Podmínka1 OR Podmínka2

V případě OR je to o něco složitější (výstup je potřeba zadat 2x - dvojnásobné vypisování delšího kódu můžete obejít např. pomocí vložené html šablony - pomocí funkce include):

<%if(podminka1)%>
  Podmínka1 nebo Podmínka2 splněna
<%else%>
  <%if(podminka2)%>
    Podmínka1 nebo Podmínka2 splněna
  <%endif%>
<%endif%>

(Podmínka1 AND Podmínka2) OR Podmínka3

Podobně lze vytvářet i komplikovanější podmínky.

<%if(podminka3)%>
  Podmínka1 a současně Podmínka2, nebo Podmínka3 true
<%else%>
  <%if(podminka1)%>
    <%if(podminka2)%>
     Podmínka1 a současně Podmínka2, nebo Podmínka3 true
    <%endif%>
  <%endif%>
<%endif%>

Další kombinace si jistě doplníte sami.

Poznámka závěrem

Mějte nicméně na paměti, že Pub-Me CMS je redakční systém, nikoliv programovací jazyk. Pomocí podmínek sice lze simulovat „programování“ poměrně dobře, nehledě na to, že zkušenější programátor může snadno rozšířit počet použitelných argumentů, nicméně to není účelem tohoto redakčního systému. Na stranu jedné se sice použítí podmínkových příkazů nemusíte bát, na straně druhé se snažte omezit počet příliš komplikovaných podmínek na minimum a raději používejte více šablon pro různé typy dokumentů. Dosáhnete tím vyšší přehlednosti i rychlosti.