Hlavní navigace

Šablony stránek pro Zope: syntaktická pravidla

Miloš Průdek 25. 4. 2003

Šablony ZPT mají jednoduchou, ale poměrně neobvyklou syntaxi. V této části seriálu uvidíte praktický příklad šablony, která dělá užitečnou činnost: automatickou tvorbu navigace pro web. Ale nejprve si přehledně popíšeme syntaktická pravidla šablon ZPT.

Syntaxe šablon ZPT

V minulém pokračování jsme viděli jednu z nejjednodušších značek ZPT, jak vypadá uvnitř jednoduchého kódu HTML:

<b tal:content="template/title">Název šablony</b>

Podívejme se na strukturu výše uvedené značky ZPT samotné, bez HTML:

 tal:content="template/title"

Značka jazyka ZPT se skládá ze tří prvků: povinného symbolu tal:, výrazu podle syntaxe TALES (například template/title) a příkazu jazyka šablon ZPT (například content).

  • Každá značka jazyka ZPT začíná na tal:. Tím je řečeno, že zbytek značky je ve jmenném prostoru XML. To v praxi znamená, že webové editory takové značce nerozumějí, a proto ji nebudou odstraňovat ani upravovat.
  • Zbytek šablony je podobný normálnímu přiřazovacímu příkazu. template/title je obsah položky content. Ani jedno z těchto tří slov není náhodné; naopak jsou to všechno klíčová slova.
  • template/title je výraz, a tento konkrétní výraz říká, že se použije položka title ze samotné šablony (template). Tomuto zápisu s lomítkem se výstižně říká cesta (path) a skutečně existují cesty s více než jedním lomítkem. V jazyce ZPT je definováno několik různých cest. Některé z nich si popíšeme později. Cesta oddělená lomítky je pouze jedním z celkem pěti různých typů přípustných výrazů.
  • content je příkaz ZPT. Tento konkrétní příkaz říká, že Zope vloží interpretovaný obsah výrazu (template/title) jako obsah původní značky HTML, což je v našem případě značka <b></b>. Kdybychom místo příkazu content použili příkaz replace, postará se Zope o to, aby původní značka HTML úplně zmizela a byla nahrazena pouze interpretovaným obsahem samotným. Kromě content a replace existuje jen šest dalších příkazů jazyka šablon ZPT.

Jak jsem uvedl výše, template/title je výraz typu cesta. Dalším přípustným typem výrazu je výraz typu python. Vyzkoušejte si zadat do šablony následující dva řádky, které demonstrují základní možnosti práce jazyka Python s řetězci:

<b tal:content="python:len('abcdef')">Délka řetězce</b><br>

<b tal:content="python:'abcdef'[1:4]">Část řetězce</b><br>

Jazyk Python je pro profesionální práci se Zope naprosto nezbytný. Naštěstí snad neexistuje jiný jazyk, který se dá naučit tak snadno jako Python. Pro aktuální verzi jazyka Python existuje kvalitní dokumentace. Pro začátek úplně postačí, když si přečtete o metodách pro zpracování řetězců.

Můžete si také přečíst překlad originální dokumentace Pythonu do češtiny a seriál Létající cirkus. Oba materiály jsou výborné. Autorem je Jan Švec.

Automatická navigace

Když teď znáte základní filozofii jazyka ZPT, můžeme zkusit něco praktického. Co třeba programování navigace po webových stránkách? V následujícím příkladu vytvoříme navigaci pro libovolně rozsáhlý web naprosto automaticky. Než se pustíme do samotného programování, bude nutné vytvořit jednoduchou infrastrukturu jako příklad rozsáhlého webu.

Nejprve ve složce test vytvořte následující strukturu složek:

t1

Do některých složek vložte 2–3 obrázky, jiné složky nechte prázdné. Například vložte obrázky do složek /test, /test/t1, a /test/t1/t11. Obrázky by měly být malé (nanejvýš 30×30 obrazových bodů), aby se vešly na obrazovku, kterou bude generovat šablona představená ve třetí části tohoto seriálu článků. Pak se vraťte do složky test a vložte novou šablonu ZPT (Page Template). Pozor na její název (Id): Id pro tuto šablonu musí být index_html. Obsah šablony bude následující:

<div tal:define="slozky
python:here.objectValues('Folder')">
  <ul tal:condition="slozky">

    <li tal:repeat="slozka slozky">
      <a href="slozka"
           tal:attributes="href slozka/absolute_url"

           tal:content="slozka/getId">ID slozky</a>
    </li>
  </ul>

  <p tal:condition="not:slozky"><b>Zde nejsou žádné složky.</b></p>
</div>

Můžete rovnou klepnout na záložku Test a vyzkoušet si, že tato šablona umožňuje procházet složky, protože automaticky generuje potřebné kotvy HTML, neboli odkazy <A HREF=…>.

Našli jste v článku chybu?

28. 4. 2003 9:20

Marcel Svitalský (neregistrovaný)

Tohle úplně nechápu - pro designera je to jen nic neříkající atribut, o kterém v zásadě nepotřebuje vědět více, než že si jej nemá všímat, no a nějak tu business logic s tou presentační vrstvou spojit musíte, ne? Oddělit je úplně, tj. tak, aby presentační vrstva presentovala jen sama sebe a logika sice fungovala, ale bez presentace, to asi není úplně ten pravý účel dynamického webu ... :-)))

26. 4. 2003 0:08

Cohen (neregistrovaný)

Ja mam jenom poznamku k tomu "python:blablabla". Jako ukazka je to hezke, ze to ZPT umi, ale v dobre navrzenem projektu by se neco takoveho rozhodne objevit nemelo. Jde nam prece o maximalni oddeleni prace webdesignera od prace programatora.

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Často čůrá a má žízeň? Příznaky dětské cukrovky

Často čůrá a má žízeň? Příznaky dětské cukrovky

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Podnikatel.cz: Hledáte investora? Neunáhlete se

Hledáte investora? Neunáhlete se

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Drahé i levné. Tyhle potraviny nosili na charitu

Drahé i levné. Tyhle potraviny nosili na charitu

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“