Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Šablony stránek pro Zope: syntaktická pravidla

Š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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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:

davame_internetu_obsah
       

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=…>.

Školení: Linux – Zálohování, Vysoká dostupnost, SNMP dohled

Na třídenním školení se naučíte nainstalovat a spravovat systém zálohování, replikace dat a vysoké dostupnosti dat. Dále také pracovat s RAID a LVM poli a nainstalovat a spravovat si vlastní dohledový systém.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,83

Přehled názorů

...a ten vlozeny obrazek to asi nezobrazuje ze?
pajis 25. 4. 2003 08:46
Nový
└ 
Re: ...a ten vlozeny obrazek to asi nezobrazuje ze
martin hassman 25. 4. 2003 10:18
Nový
 
├ 
Re: ...a ten vlozeny obrazek to asi nezobrazuje ze
pajis 25. 4. 2003 10:59
Nový
 
│
└ 
Re: ...a ten vlozeny obrazek to asi nezobrazuje ze
martin hassman 25. 4. 2003 12:44
Nový
 
└ 
Re: ...a ten vlozeny obrazek to asi nezobrazuje ze
Milos Prudek 25. 4. 2003 11:37
Nový
je opravdu k Zope nutny Python?
martin hassman 25. 4. 2003 10:14
Nový
├ 
Re: je opravdu k Zope nutny Python?
Marcel Svitalský 25. 4. 2003 10:45
Nový
├ 
Re: je opravdu k Zope nutny Python?
Milos Prudek 25. 4. 2003 11:49
Nový
└ 
Re: je opravdu k Zope nutny Python?
David Pravec 25. 4. 2003 22:39
Nový
oddeleni dat a rizeni
kokot 25. 4. 2003 10:23
Nový
└ 
Re: oddeleni dat a rizeni
Marcel Svitalský 25. 4. 2003 10:57
Nový
 
└ 
Re: oddeleni dat a rizeni
tdc 25. 4. 2003 11:53
Nový
 
 
└ 
Re: oddeleni dat a rizeni
Marcel Svitalský 25. 4. 2003 14:24
Nový
 
 
 
└ 
Re: oddeleni dat a rizeni
David Pravec 25. 4. 2003 23:18
Nový
python v ZPT
Cohen 26. 4. 2003 00:08
Nový
└ 
Re: python v ZPT
Marcel Svitalský 28. 4. 2003 09:20
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem