15. 11. 2009

PostNuke - Upravujeme xanthia motiv : konfigurace

Předpokládejme, že zvládnete aktivaci a deaktivaci xanthia motivu. Můžeme se tedy pustit do jeho konfigurace či změny nastavení výchozích hodnot.

Existují dvě možnosti - jedna je ale k ničemu ...

Chcete-li měnit základní parametry xanthia motivu existují sice dvě možnosti, ale jednu z nich doporučuji nevyužívat. Autoři modulu Xanthia pro verzi PostNuke .7 měli sice dobrý záměr - chtěli nabídnout úpravu motivu přes webové rozhraní. Zpočátku se i mě jevil tento pokus za zdařilý, ale s postupem času jsem zjišťoval, že mi neustále komplikuje práci a provedené úpravy často přišly vniveč. Budu konkrétnější ...
Jakmile aktivujete xanthia motiv, můžete si zvolit odkaz Upravit motiv. Následně se dostanete do rozhraní se záložkami s názvy Definice zón motivu, Obsah zón, Šablony, Barvy, Nastavení a Řídící blok. Správce webu tyto záložky svádí k úpravě hodnot, ať už jsou to vstupní proměnné, barvy či dokonce obsah šablon. Provedete-li jakékoliv změny, pak se ukládají do databáze, nikoliv do konfiguračních souborů a souborů se šablonami (dočtete se dále ...). To by nebylo až tak zlé, problém však nastane v momentě, kdy daný motiv deaktivujete - tento krok zapříčiní nenávratné vymazání záznamů z databáze a tím pádem i veškerých změn, které jste učinili. Při opětovné aktivaci motivu se tedy načtou výchozí hodnoty z konfiguračních souborů. A vše můžete nastavovat znovu :-(.
Že se nakonec jednalo o slepou uličkou dokládá skutečnost, že se xanthia ve verzi 3.0 (pro PostNuke .8) vrací k "čistým" konfiguračním souborům.

Konfigurace xaninit.php

Nejprve poznámka ... Chcete-li upravovat základní parametry motivu, pak ho nejprve deaktivujte. Potom otevřete soubor xaninit.php (v kořenu adresáře vašeho motivu). Postupně si popíšeme některé části kódu.
Najděte první řádek s funkcí CreateThemeVar( ... ). Tato funkce slouží k definování proměnných vašeho motivu, včetně výchozí hodnoty. Parametry funkce jsou vcelku zřejmé - první nás nezajímá, druhý obsahuje název funkce, třetí definuje její popis (v závislosti na zvoleném jazyce - podívejte se lang/ces/xaninit.php), čtvrtý parametr obsahuje výchozí hodnotu, poslední nás opět nezajímá.
Chcete-li pochopit význam proměnné, otevřete si šablonu templates/master.htm a přejděte na řádek 25. Ten obsahuje Smarty podmínku, využívající proměnnou righton (všimněte si, že v souboru xaninit.php nezačíná $, ale v šabloně ano). Mohli byste odhadnout, k čemu proměnná righton slouží - je-li 0, pak se při použití šablony master.htm nezobrazí pravé bloky. Obdobně jsou používány proměnné v souboru style/style.php. Je-li někde řetězec ' . $font_family . ', pak se při vytvoření příslušného css souboru nahradí hodnotou s příslušné proměnné.
Chcete-li si definovat vlastní proměnné, pak přidejte nový řádek s příslušnou syntaxí.

Vraťme se do souboru xaninit.php a najděme funkci CreatePalette( ... ). Tato definuje výchozí palety barev. Jejich pořadí a smysl je popsán v "zaremovaných" řádcích (poznámky) nad prvním použítím této funkce.
I zde si vysvětlíme jejich význam. Opět využijeme soubor master.htm. V třetím řádku najdete kód . Jakmile je tedy tato šablona použita, v daném místě se doplní barva3, definovaná právě v souboru xaninit.php. Ještě většího významu však nabývají barvy v rámci šablony pro css soubor (style.php). Zde naleznete například řetězec '.$colors['text1'].'. Jeho význam by již měl být zřejmý.
Nejdůležitější pasáží souboru xaninit.php jsou deklarace šablon. K tomu se využívají dvě úzce provázané funkce CreateThemeTemplate ( ... ) a CreateThemeZone ( ... ). Jelikož je jejich syntaxe velice podobná, vysvětlíme si je jako celek. V prvé řadě je třeba upozornit, že každá šablona musí mít i podobu htm souboru, uloženého v adresáři templates. Je-li uložena přímo v kořenu, pak má typ theme. Jedná-li se o blok, pak je uložena v adresáři blocks a je typu block. V ostatních případech musí být uložena v adresáři modules a je typu module, přičemž zvláštní význam mají soubory home.htm, admin.htm a user.htm (všimněte si, že mají u sebe hvězdičku). Podrobněji se budeme šablonami zaobírat v další části tohoto článku a ve zvláštním díle tohoto seriálu.
A teď důležité zjištění. Nejprve si však daný motiv aktivujte. Jakmile přejdete do úpravy motivu, najdete tam již dříve zmíněné záložky. Všimněte si, že záložka Nastavení obsahuje definované proměnné ze souboru xaninit.php pomocí funkce CreateThemeVar( ... ). Obdobně záložka Barvy obsahuje příslušnou paletu a po přechodu do její konfigurace se zobrazí i příslušné barvy - to vše definované pomocí funkce CreatePalette( ... ). A nakonec záložky Obsah zón a Šablony vycházejí z funkcí CreateThemeTemplate ( ... ) a CreateThemeZone ( ... ). Navíc vše je možné změnit (proměnné, barvy i šablony)!
POZOR však, jakmile byste provedli nějaké změny přes webové rozhraní, vše by fungovalo do momentu, kdybyste motiv deaktivovali. Jakmile tak totiž učiníte (a že se tak stane, to vám garantuji), pak přijdete o veškerá vámi změněná nastavení! Proto doporučuji všechny změny činit přímo v souboru xaninit.php!
A nakonec malá vsuvka - záložek Zóny a Řídící bloky si nevšímejte, přidělávali byste si jenom starosti. Navíc v nové verzi Xanthia pro PostNuke .8 je systém zón a řídících bloků řešen jinak a dle mého názoru mnohem názorněji a efektivněji.

Šablony v adresáři templates

Máme za sebou popis výchozích hodnot a to včetně použitých šablon. Nyní si popíšeme, k čemu která šablona slouží. Na následující díl seriálu ponecháme téma o smyslu šablon a jak se pomocí nich dá měnit vzhled webu.
Než se pustíme do vysvětlování, nejprve doporučuji, abyste si znovu prošli článek Upravujeme motiv - nová klasika z ExtraLite a konkrétně pasáž Šablony jako funkce v theme.php. Pokud jste pochopili význam těchto funkci, pak je vysvětlení většiny šablon triviální.
Funkce OpenTable() a CloseTable() jsou v šablonách zastoupeny souborem table1.htm a obdobně funkce OpenTable2() a CloseTable2() jsou nahrazeny šablonou table2.htm. Funkce themeheader() = šablona header.htm (tj.záhlaví stránky), funkce themefooter() = footer.htm (zápatí stránky), themeindex() = News-index.htm (seznam článků). Novinkou je pak šablona News-index2.htm, která má umožnit zobrazování seznamu článků ve dvou sloupcích (u některých web-designérů poměrně populární).

Funkce themesidebox() je pak nahrazena šablonami lsblock.htm (levý blok), ccblock.htm (centrální blok) a rsblock.htm (pravý blok), které jsou uloženy v adresáři blocks. Tyto šablony určují vzhled bloků dle jejich umístění.
Zbývá vysvětlit šablony master.htm, modules/home.htm, modules/admin.htm a námi nevyužívanou šablonu modules/user.htm. Jejich úloha je pro vzhled zásadní. Master určuje vzhled běžné stránky a pokud neexistují zbývající šablony, zastuje i jejich úlohu.  Šablona Home je určena pro úvodní stránku, šablona Admin pro administrační rozhraní šablona User pro osobní stránku (my ji nazýváme Můj účet).

Při této příležitosti malý výlet do budoucnosti (naštěstí již nedaleké). V PostNuke .8 by měl být celý systém modulů založený na šablonách a díky tomu bude možné vytvářet nepřeberné množství šablon a tím pádem upravovat vlastní vzhled pro jakýkoliv modul, nejen pro články, jak je tomu doposud.