2007. január 20.

Pklapgen - weblap generátor

Statikus weblap css menüvel
Legújabb verzió:
Az okos programok között eddig olyanokat igyekeztem bemutatni, amiket mindenki használhat. Ez most itt nem olyan, ennek csak az veszi hasznát, aki időnként weblapokat szerkeszt.
Mielőtt elmesélem mit csinál a program, hadd mondjam el, hogy mért jó egyáltalán egy statikus weblap ma, a rengeteg dinamikus CMS, blog- és portálmotor korában.

Először is mert, ha a tartalom statikus akkor azt felesleges dinamikusan előállítani, és a motor telepítésével, folyamatos frissítésével (biztonsági hibák javítása!) foglalkozni, sokkal egyszerűbb egy sima FTP feltöltés.
Másodszor, igaz ugyan, hogy egy statikus weblapon nem lesz hozzászólás, meg ilyen interaktív web 2.0-ás micsodák, (félreértés ne essék, a web 2.0 és az interaktív micsodák nagyon jó dolgok, csak nem mindig célszerű a használatuk) de sokan vannak úgy, hogy van valami értelmes mondandójuk amit kitennének egy weblapra, de a napi babusgatásra már nincs idejük. És manapság bizony egy blogot nem lehet hetekre magára hagyni, mert "jóindulatú" emberek és botok tömege les rá, hogy teleszemetelje.
Harmadszor vannak olyan esetek, amikor jó, ha egy weblap nem csak weben keresztül, hanem egy gépre felmásolva is elérhető. Például oktató anyagok, termék és program leírások lehetnek ilyenek. Azt azért lássuk be, hogy ilyenkor a gépre telepíteni egy webservert nem egy kényelmes megoldás, és az egyszeri felhasználó esetén nem is igazán kivihető.

Rendben, most, hogy ilyen szépen beleszerettünk a statikus weblapokba, hol a gond? Fogunk egy editort, megírjuk az oldalakat, CSS-sel szépen megformázzuk és már dőlhetünk is hátra. Ez így is van, csak hát a lustaság ugye! A minden oldalon ismétlődő részek (head meg ilyenek) még hagyján (egy kis replace és semmi gond), de a menü, ha CSS-sel csináljuk akkor oldalanként más és más, ezt meg nagyon utálatos kézzel írogatni. A javascript menüt meg nem annyira szeretjük, mert, ha ki van kapcsolva a javascript engedélyezés akkor nem fut, és olyankor illik neki valami tartalék megoldást csinálni, ami vagy csökött vagy ott vagyunk ahonnan indultunk (vö. mádi zsidó esete).
Mi kell akkor nekünk? Egy olyan program ami a menüfa és a tartalmak alapján generálja az oldalakat. Pont ezt tudta az eXe eLearning, amit eddig használtam, sőt csomó mást is, ami egy oktató programnak kell (tesztek, kérdés-felelet). Ami nem kellett azt nem használtam, megadtam a menüstruktúrát, az egyes menüpontokhoz a tartalmat, és a program generálta az oldalakat CSS menüstül, szőröstül-bőröstül.
Csak sajna semmi sem tökéletes, itt is volt egy kis probléma ami megkeserítette a weblap írást. Ez pedig a tartalom szerkesztése volt, ez egy böngészőben futó, wysiwyg szerkesztővel történt, kb. olyannal mint a portálmotoroknál. És sajna ugyanazzal a nyűggel is, nevezetesen, hogy néha komoly közelharcot kellett vívni a szerkesztővel, hogy például egy köz a bekezdések között akkora legyen mint szeretném. Vissza akartam kapni a jó kis editoromat (én a PSPAD-ot szeretem) és azt akartam, hogy az evvel megírt tartalmakra fusson a generálás.
Gondolom rengeteg ilyen program van, de valahogy egy rövid keresgéléssel nem találtam rájuk. Találtam egy Webgen nevűt, de az statikus portálokat generál egy programszerű forrásból. Ennél én sokkal kevesebbet és egyszerűbbet akartam, ezért megírtam a Pklapgen nevezetű programocskát és mostmár ezzel generáltatom a weblapom oldalait. De nem vagyok irigy, ha neked is kell egy ilyen, itt van vigyed és használd!
Következzék egy kis program leírás, hogy mit csinál és hogyan a Pklapgen. Röviden: egy menüfát leíró fájlból, egy (vagy több) oldalsablonból és a tartalom fájlokból generálja a html oldalakat, amit aztán csak feltöltünk a webre és már lehet is nézegetni (sőt feltöltés nélkül is!).

ennyi az egész: néhány paraméter és mehet a generálás

futási paraméterek:

projekt ezt nem muszáj megadni, de ha több weblapot is akarunk generálni, akkor az egyes oldalakhoz tartozó beállításokat célszerű elnevezni és elmenteni, hogy később gyorsan visszahívhassuk
pkl fájl és sablonok az oldalam.pkl fájl, ugyanebben az alkönyvtárban kell lenni a sablonoknak is
szöveg fájlok könyvtára az oldalak szövegei, a tényleges tartalom
éles célkönyvtár ide generálja a html oldalakat, amik a ***inc(!valami)*** includokat is tartalmazzák
teszt célkönyvtár ide generálja a html oldalakat, de a ***inc(!valami)*** includok nélkül, így lehet pl. a Google Analitics javascritjét a teszt oldalon kihagyni (ha nincs megadva vagy azonos az éles célkönyvtárral, akkor csak az éles lapokat generálja)

a pkl fájl szerkezete (a menüfa):

> főmenüpont ###cim:kiírt_cím ###sbl:sablon
>> almenüpont ###cim:kiírt_cím ###sbl:sablon
>! néma menüpont ###cim:kiírt_cím ###sbl:sablon

az első főmenüpont lényegében az oldal nevének is tekinthető és az index.html fájl-t hozza létre, a többi menüpont a saját nevét viselő html fájlt generál, de csupa kisbetűvel, ékezetek nélkül és a szóközöket alulvonással (_) helyettesítve
a néma menüpont a menüben nem jelenik meg, de a hozzá tartozó oldalt a program legenerálja, így lehet 404-es hibaoldalt létrehozni, vagy egyéb olyan oldalt aminek nem akarunk önálló menüpontot csak majd valamelyik oldalról hivatkozzuk meg (a ? hatása ugyanaz mint a !-é, de akkor a sitemapba se írja bele az oldalt)
###cim:kiírt_cím nem kötelező megadni, ezt írja az ###oldalcim### token helyére, ha nincs megadva akkor a menüpont nevét írja ki címként
###sbl:sablon a sablonok megadása nem kötelező, amelyik oldalhoz nincs megadva ott az alapértelmezettet használja; az enoldalam.pkl fájl alapértelmezett sablonja az enoldalam.sbl.html
példa:
> Pklapgen minta oldal
> A programról
>> a pkl fájl
>> a sablonok
>> tervezett dolgok
> Harmadik főmenü
>> harmadik főmenü első almenüpontja
>> harmadik főmenü második almenüpontja
> Negyedik főmenü
>! impresszum

a sablon fájl szerkezete:

a sablon egy html fájl ahol a változó részeket tokenek jelölik ezeket fogja a generátor a megfelelő tartalommal feltölteni
a jelenleg használható tokenek:
###oldalcim### a fő- vagy almenü szövege, vagy, ha megadtuk akkor a ###cim: paraméterrel megadott oldalcím (ez akkor jó, ha menüpont rövid neve nem elég oldalcímnek, oda hosszabb megnevezés kívánkozik)
###menu### ide kerül a menü az adott oldalon éppen szükséges kibontási állapotban, tulajdonképpen ennek a létrehozása a program fő célja, hiszen a többi szinte sima szövegcsere
###szoveg### az oldal szövegét írja be ennek helyére, ez egy html fájl a header és minden egyéb ismétlődő rész nélkül mert azokat a sablonba tehetjük, inc-cel is megoldható, de így nem kell fájlnevet írni, az alulvonás (_)+oldalnev.html fájlt olvassa be; azaz a példában a második főmenüpont esetén az "a_programrol.html" generálásához "_a_programrol.html"-t
###kovetkezo### a következő menüpont oldalára mutató link, egyelőre mindig jobbra nyilacskákkal kijelezve
###elozo### az előző menüpont oldalára mutató link, egyelőre mindig balra nyilacskákkal kijelezve
###inc(valami.inc)### a sablon megjelölt pontján a hivatkozott fájlból (valami.inc) olvassa be a tartalmat, az include fájlokat először a szöveg fájlok könyvtárában, ha ott nincs a pkl fájl könyvtárában keresi
###inc(!valami.inc)### ugyanaz mint a fentebbi inc de csak az éles oldalra olvassa be, így lehet pl. megoldani, hogy a webstatisztika javascritjei csak az éles oldalokon legyenek bent, és így a teszteléssel nem zavarjuk össze a statisztikát

majd (ha időm engedi és szükségem is lesz rá):

  • rss fájl automatikus generálás KÉSZ v0.8
  • Google sitemap és Yahoo urllist automatikus generálása KÉSZ v0.23
  • a headerbe az oldalanként változó meta tagek megadása KÉSZ v1.0
  • blogszerű nyitó híroldal generálása KÉSZ v0.8
  • oldalról nyíló oldal azonos menüvel (pl. nagyított kép)
  • ne csak a sablonban lehessen include, hanem a szöveg fájlban is
  • soron belüli helyettesítések vagy soron belüli include KÉSZ v1.0
A program legújabb verziója innen tölthető le:
pklapgen.zip
Telepíteni nem kell, csak a zipet kell kibontani egy könyvtárba. A program mellett egy kis példa weblap is van, ami a leírást tartalmazza.