Přeskoč navigaci

Zde hledá Jyxo.

Jyxo

PPWizard - univerzální preprocesor i pro html

Marek Prokop, vydáno/aktualizováno: 27.8.2001/02.03.2002

Jistě to znáte také. Na všech třiadvaceti stránkách svého webu chcete mít stejné záhlaví i zápatí, pravý pruh, levý pruh, atd. A pak je najednou potřeba změnit telefonní číslo v zápatí, logo v záhlaví přesunout doprava, přidat odkaz do menu v levém pruhu.

Tradičně si webmasteři usnadňují práci na rozsáhlejších webech dvěma způsoby:

  1. Rámce. Pomocí rámců lze snadno dosáhnout toho, aby se určité prvky (například záhlaví, či boční navigační menu) opakovaly neměně na všech stránkách. Použití rámců však má většinou více nevýhod než výhod, o čemž jsem už ostatně jednou v Sově psal v článku Výhody a nevýhody rámců.

  2. SSI, neboli vkládání na straně serveru. Pro tuto techniku je však zpravidla nezbytné mít k dispozici server/webhosting s PHP, či ASP a to nemá každý. Navíc SSI představují pro server určitou zátěž, která u hodně navštěvovaných webů může být nežádoucí.

Když tyto způsoby nejsou možné, či vhodné a pominu-li pár dalších, více méně okrajových metod (klientský JavaScript, Shared Borders v MS FrontPage), zdálo by se, že nezbývá nic jiného než pečlivá ruční práce a snad ještě dobrý textový editor se silnou funkcí "Najdi a nahraď". Není to však pravda. Jsou zde HTML preprocesory a jeden z nich, PPWizard, vám dnes představím.

PPWizard pochází z Austrálie a jeho autorem je Dennis Bareis. Program ve verzích pro většinu myslitelných operačních systémů i jeho obsáhlou dokumentaci naleznete na www.labyrinth.net.au/~dbareis/ppwizard.htm. Jak URL napovídá, program si ještě nevydělal ani na vlastní doménu -- je totiž zcela zdarma. Přesto jsou jeho možnosti naprosto mimořádné.

Přiznám se, že nevím, čím začít. PPWizard toho umí tolik, že všechny jeho funkce pravděpodobně nikdy nevyužijete. Na druhou stranu, to nejužitečnější se určitě naučíte během pár hodin a během dalších pár hodin se vám tato časová investice vrátí. Zkusme malý příklad přímo ze Sovy v síti, na kterou PPWizard také používáme.

Zdrojový kód stránky archivu pro PPWizard vypadá nějak takto:

#define DocTitle Odkazy pro webmastery
#define Sidebar \
  #include "box_regform_2.ih" \
  #include "box_feedbackprompt.ih" \
  #include "box_recommendsite.ih" \
  #include "box_playagame.ih"

#include "template_top.ih"
<h1><a name="top"></a><$DocTitle></h1>
<p>Na této stránce jsme pro vás připravili přehled těch nejlepších odkazů pro webmastery. Seznam jsme teprve začali budovat, takže prosím omluvte ...
...

#include "template_bottom.ih"

Jak vidíte, kód začíná příkazy #define, kterými se definují hodnoty proměnných. Například příkazem

#define DocTitle Odkazy pro webmastery

se do proměnné DocTitle přiřadí řetězec "Odkazy pro webmastery". Proměnné pak mohou být v následujícím zdrojovém kódu kdekoli použity, a to i tehdy, je-li zdrojový kód rozdělen do více souborů. Příklad použití proměnné DocTitle vidíte zde:

<h1><a name="top"></a><$DocTitle></h1>

Dalším příkazem je #include, který do aktuálního souboru vkládá obsah jiného souboru. V našem příkladu tedy příkaz

#include "template_top.ih"

způsobí, že se na jeho místo vloží obsah souboru template_top.ih. Pokud template_top.ih bude obsahovat další příkazy define či include, bude jejich zpracování rekursivně pokračovat. To vše ale až v okamžiku kompilace. PPWizard totiž pracuje offline. Nejprve musíte připravit zdrojové soubory, spustit kompilátor (s případnými parametry) a ten vám již vygeneruje konečné HTML dokumenty.

Kromě těchto dvou jednoduchých příkazů include a define, toho umí PPWizard ještě mnoho. Alespoň namátkou:

  • Větvení zpracování na základě logických podmínek. V logických podmínkách lze využít jak vlastní proměnné, tak proměnné systémové, např. jméno výsledného dokumentu. Na Sově tak jeden a tentýž zdrojový kód generuje navigační menu na levém okraji, ačkoli je toto menu na každé stránce jiné (aktuální stránka není odkaz).

  • Cykly a import dat z databází. Tímto způsobem je na Sově generován archiv vydaných čísel.

  • Převod prostého textu na HTML. Pomocí této funkce by šlo články Sovy převádět z emailové podoby do běžného HTML. Zatím jsem to však nezkoušel.

  • Zároveň však PPWizard není s HTML nijak svázán. Stejně dobře s ním můžete generovat PHP či ASP skripty, zdrojové texty ve vyšších programovacích jazycích a třebas i milostné dopisy.

Podstatné je, že cokoli, co se ve výsledném textu několikrát opakuje, napíšete pouze jednou. Delší texty do samostatných souborů, kratší můžete definovat jako proměnné v jednom souboru. Jakoukoli opravu či změnu opět provedete pouze na jednom místě.

Jednoduchým příkazem pak vygenerujete buď jednotlivý výstupní soubor, nebo všechny soubory celého, předem nadefinovaného projektu. V druhém případě PPWizard dokonce automaticky pozná, které soubory je potřeba vygenerovat znovu a které nikoli, protože se jejich zdrojový kód nezměnil.

Pokud máte na starosti víc než jen pár stránek, určitě PPWizard vyzkoušejte. Zároveň budu rád, když se s námi o své zkušenosti podělíte.

Tato stránka je přístupná libovolným prohlížečem, nejlépe však vypadá v prohlížeči, který podporuje HTML 4.0 a CSS 2 (Internet Explorer od verze 5, Mozilla, Opera a další). Pokud čtete tuto zprávu, váš prohlížeč zřejmě dostatečně nepodporuje CSS. Stránku sice vidíte bez pokročilejšího formátování, avšak veškerý obsah je plně přístupný i pro vás.