5. 11. 2009

PostNuke - Upravujeme motiv : pár slov na úvod

Asi nemálo čtenářů tohoto seriálu čeká na články tohoto obsahu. Než se pustíme do tohoto tématu, přece jen trocha teorie.

Tři typy motivů

Začněme tím, s jakými motivy se v rámci systému PostNuke můžeme setkat.
  • Klasický motiv
    je nejstarší typ motivu s nejomezenějšími možnostmi. Na druhou stranu je nejjednodušší pro úpravu a postačí minimální znalosti HTML a PHP. Uživatel se na něm může naučit nové techniky tvorby vzhledu a přitom vrácení motivu do původního vzhledu je jednoduché.
    Klasickým zástupcem tohoto motivu ExtraLite, který také budeme používat jako základ při "výuce".
  • Automatizovaný motiv
    je víceméně zdokonalená verze motivu klasického. Chce-li uživatel nahrát tento motiv, musí nejprve projít "instalační" procedurou. Upřímně, s tímto typem motivu nemám moc zkušeností, protože jsem od klasických motivů ihned přešel na xanthia motivy
  • Xanthia motiv
    je nejvýkonnější nástroj pro tvorbu a úpravu vlastního vzhledu. Za rozsáhlé možnosti těchto motivů však uživatel musí zaplatit poměrně vysokými znalostmi nejen na úrovni HTML, ale i PHP a to včetně tzv. technologie Smarty (ještě se k ní dostaneme).
    Tento typ motivu bude také v budoucích verzích mnohem významněji podporován a vývojáři různých modulů budou tlačeni k tomu, aby byl jejich programový kód s tímto typem motivu plně kompatibilní... Koneckonců, sledujete-li dění v PostNuke, tak víte, že se tak již děje a nekompatibilní moduly se dostávají na okraj zájmu. Nicméně je nutné podotknout, že nové moduly si s motivy předchozích dvou typů poradí, takže žádné obavy z promarněného času...
    Při výuce práce s tímto motivem si vezmeme za základ motiv sweb-xanthia (dříve admin-xanthia).
Poznámka na okraj, existuje poměrně velké množství volně přístupných motivů. O některých zdrojích se zmiňoval kolega Kunčický ve svém článku Xanthia - motivy pro školní web.

Kde jsou motivy uloženy?

V kořenovém adresáři vašeho webu máte podadresář themes. Každá složka v tomto webu je samostatným motivem. Chcete-li si tedy nahrát nějaký nový motiv, pak si jej musíte rozbalit právě na tomto místě.
Pozor však, toto není jediné místo, které motivy využívají pro svou činnost. V souvislosti s využíváním technologie Smarty, potřebuje každý motiv prostor s možností zápisu. Pro tento účel je k v kořenovém adresáři podadresář pnTemp a v něm další složky:
  • pnRender_cache a pnRender_compilated slouží pro odkládání vygenerovaného kódu pro všechny motivy, přesněji řečeno moduly
  • Xanthia_cache, Xanthia_compilated a Xanthia_Config využívají xanthia motivy pro odkládání vygenerovaného kódu určitých částí stránek (záhlaví, levé bloky apod.), který tvoří následně celkový vzhled.
Vraťme se však do podadresáře themes a zkusme si otevřít nějaký motiv. Pak bychom se mohli setkat s těmito objekty:
  • složka images by měl obsahovat obrázky, které jsou charakteristické právě pro daný motiv (obrázky v záhlaví, zápatí a pod.)
  • složka style je určena pro soubory, generující kaskádní styl celého motivu
  • složka lang pro změnu obsahuje jazykové soubory - ty jsou navíc uleženy ve vnořené složce, jejíž název je pro každý jazyk specifický (ces = čeština, eng = angličtina apod.)
    Poznámka: O počešťování stažených motivů si řekneme v jednom z následujících dílů.
  • složka tempates má pro xanthia motivy zásadní význam, nicméně se s ní setkáte i u zbývajících dvou typů motivů. Obsahuje totiž tzv. šablony, které u xanthia  motivů tvoří základ celého vzhledu a to včetně případných úprav vzhledu u modulů kompatibilních s motivy xanthia.
  • s dalšími složkami jako plugins či scrits se setkáte v závislosti na typu motivu a potřeb jeho tvůrce
  • soubor theme.php je povinný u všech typů motivů, u klasického motivu má však zásadní význam, protože tvoří základ jeho vzhledu. Tudíž bude předmětem našeho testování a úprav.
  • soubory xaninit.php a xaninfo.php jsou používáné pouze u xanthia motivů a zvláště ten první z nich je důležitý při jeho instalaci.

Smarty, pnRender a Xanthia - to mi nic neříká ...

Všechny tři pojmy však mají společného jmenovatele - systém šablon pro jazyk PHP, který lze vkládat přímo do html souborů. Chcete-li si danou problematiku nastudovat přímo u zdroje, pak zvlote stránky http://smarty.php.net. Pro základní orientaci postačí zdařilý článek na blogu Antonína Daňka pod názvem Smarty - šablonovací systém pro náročné, či poněkud starší článek na intervalu.cz podobného názvu.
Může se však stát, že někteří s vás se budou i tak v těchto informacích ztrácet, případně nestojí "teoretické bláboly ;-)". Pro ně stačí následující:
  • naleznete-li někdy v šabloně (soubor ve složce tempates) kód , pak se jedná o funkci v šabloně, která je nahrazována právě pomocí technologií Smarty.
  • naleznete-li v šabloně kód , pak se jedná o proměnnou, která je pak nahrazována konkrétní hodnotou.
  • používané funkce se ukládají do adresáře plugins, které najdete:

    • includes\classes\Smarty\plugins, kde je jádro celého systému Smarty
    • modules\pnRender\plugins, kde jsou funkce využívané jádrem systému PostNuke
    • modules\nazev_modulu\templates\plugins, kde si ukládá příslušné funkce autor příslušného modulu
    • themes\plugins, kde jsou uloženy funkce pro příslušný motiv a kam si možná časem dopíšete své vlastní funkce pro svůj motiv


Mělo by přitom platit to, že pro , existuje soubor function.neco.php, umístěný v jednom z výše uvedených adresářů. Například je funkce, kterou najdete v modules\Xanthia\plugins\function.themestylesheet.php - znalci PHP pak z obsahu daného skriptu snadno zjistí, co znamená parametr xhtml=true.