Ako ste si iste všimli, phpBB je ako správna stránka rozdelená na tri vrstvy a tými sú: Programová(kód), dataabázová a grafická(templaty). Je to teraz už štandartné delenie pokročilých stránok pre ich flexibilnosť.
Tento článok bude určený najmä pre tých, ktorí si chcú dynamicky upravovať svoje vzhľady, teda napríklad vpisovať rôzne informačné texty a podobne. Napíšem, ako sa robia jednoduché výstupy, blokove výstupy (zoznamy a podobne) a taktiež aj výstup iba pri určitej udalosti.
Jadro celého templatovacieho systému je v súbore includes/template.php. Pre tých, ktorí vedia programovať v PHP je už na prvý pohľad v kóde zrejmé, čo robí. Pre tých, ktorí to nevedia. V tomto súbore nájdete všetky funkcie, pomocou ktorých phpBB vpisuje takmer všetko, čo je na stránke do HTML výstupu stránky, teda do toho, čo vidíte na monitore. Všetky tieto funkcie sa nachádzajú v jednej triede. Je to veľmi prehľadné a zjednodušuje to prácu.
Designová časť systému:
Čo je vlastne {ORAZOK} v priklad.tpl?
Aby systém phpBB vedel rozlíšiť, či sa jedná o premennú, ktorá sa vyťahuje z php súboru, alebo či je to prostý text sa premenné uvádzajú do takýchto zloženych zátvoriek.
Niekde vidím {L_NIECO} a niekde {U_NIECO}. Prečo?
Pre zachovanie poriadku a zamedzeniu chaosu v kóde, keďže sú tých premenných stovky, možno aj tisíce sa odlíšili podľa ich charakteristiky. L – Lang, teda jazyk. Jazykový výstup. U – URL, alebo data, teda odkaz na stránku. Samozrejme typy si môžete pridávať aj vy, je to len na vás, čo tam date, môžete aj nič.
V tpl súboroch sa nachádzajú komentáre, ale neni ich na výstupe stránky vidno. Čo znamenajú?
Komentáre typu <!-- BEGIN novinky --> začínajú, alebo ukončujú blokový výstup, teda napríklad tento začiatok bloku by zobrazil novinky. Bloky sa zakončujú <!-- END novinky -->. Teda na začiatku sa nahádza BEGIN, na konci END.
Druhý typ komentáru je <!-- BEGIN switch_user_logged_in -->. Toto je komentár, ktorý označuje, že pri udalosti, ktorá je niečim podmieňená z programovej časti sa zobrazí kód medzi <!-- BEGIN switch_user_logged_in --> a <!-- END switch_user_logged_in -->. Využíva sa to napríklad zobraz, pokiaľ je užívateľ prihlásený, čo robí predchádzajúca ukážka.
Niekde vidím {NIECO} a niekde {nieco.NIECO}. Čo je to pred bodkou?
Na to, aby systém vedel, do ktorého bloku, čo sme si už spomínali vyššie má danú premennú zaradiť sa pred ňu uvádza aj jeho názov. {novinky.TEXT}. Tento blokový výstup musí byť umiestnený medzi začiatkom a koncom bloku.
V tejto časti sme si vysvetlili, ako sa vlastne zobrazujú premenné, ktoré sme si stanovili v programovej časti. Teraz si ukážeme, ako spraviť to, aby tieto designové premenné aj niečo obsahovali.
Programová časť systému:
Ako súbor napríklad index.php vie, že má načítať index_body.tpl?
V súbore index.php si systém zavolá funkciu z už skorej spomínaného templates.php. Presnejšie funkciu set_filenames. Táto funkcia priradí meno tpl súboru ku danému php súboru. Používa sa takto:
[php]$template->set_filenames(array(
'body' => 'index_body.tpl')
)[/php]
Teraz sme si zadali, aký súbor má načítať, teraz ho tam ešte potrebujeme vložiť. To systém vykonáva prostredníctvom funkcie pparse. Použítie:
[php]$template->pparse('body');[/php]
Ako ste si určite všimli, v poli (array) pri funkcii set_filenames sme priradili meno body ku súboru index_body.tpl, ktoré sme teraz vložili.
Klasické vloženie výstupu:
Klasickým vložením výstupu som označil, že chceme vypísaťistý text do stránky bez toho, aby sa opakoval, teda nie o blokového výstupu. Toto umožňuje funkcia assign_vars. Použitie:
[php]$template->assign_vars(array(
'TITULOK_SPRAVY' => $titulok,
'TEXT_SPRAVY' => $text)
);[/php]
Táto funckia, ktoráobsahuje pole priraďuje PHP premennú ($titulok) ku designovej premennej TITULOK SPRAVY. Tento výstup dáme klasickou metódou, ktorú sme si už spomínali, teda {TITULOK_SPRAVY}.
Počet premenných v tomto poli môže byť neobmedzený. Takže pokiaľ si date
[php]$template->assign_vars(array(
'TITULOK_SPRAVY' => $titulok,
'test' => $aa,
'test2' => $bb,
'test3' => $cc,
'TEXT_SPRAVY' => $text)
);[/php]
Tak to tiež bue fungovať, kaďzá premenná bude v tpl súbore vyzerať takto:
- Kód: Vybrať všetko
{TITULOK_SPRAVY}. {test}, {test2}, {test3}, {TEXT_SPRAVY}
Blokové vloženie výstupu:
Blokové vloženie výstupu sa používa v cykloch. Pre tých, ktŕi nevedia, čo sú to cykly. Je to opakovanie tej istej udalosti, alebo funkcie, zobrazenia, alebo čohokoľvek iného do určitého intervalu. Blokové výstupy vkladáme pomocou funkcie assign_block_vars. Skladbu má rovnakú, avšak je tam doplnené meno daného bloku. Vyzerá takto:
[php]$template->assign_block_vars('novinky', array(
'L_DATUM' => $novinka_time,
'L_NOVINKA' => $novinka_title,
'U_NOVINKA' => $novinka_url)
);[/php]
Za funkciou assign_block_vars si všimnite názov bloku. V poli vo vnútri funkcie sa blok nevypisuje, ale vo výstupe ho napísať musíte. Použitie:
- Kód: Vybrať všetko
<!-- BEGIN novinky -->
{L_DATUM} …
<!—END novinky -->
Namiesto tých troch bodiek si tam dáte text, obrázok, inú premennú v tomto bloku, alebo hocičo iné. Do týchto blokových premenných sa taktiež môžu vkladať aj klasické a to normálne, ako keby tam ten blok nebol
- Kód: Vybrať všetko
<!-- BEGIN novinky -->
{DATUM}: {L_DATUM} …
<!—END novinky -->
Zoberme si, že premenná DATUM je v PHP zadefinovaná ako slovo „Dátum“ a L_DATUM je daný dátum tej novinky.
Výsup na základe podmienky:
Často krát zrejme chcete zobraziť určitý text, obrázok, alebo hocičo iné iba určitej skupine užívateľov, alebo pri nejakej príležitosti. Na to phpBB využíva taktiež funkciu assign_block_vars, avšak použitie je iné. Nevkladajú sa do nej žiadne premenné, ale iba prázdne pole.
[php]$template->assign_block_vars('je_administrator', array());[/php]
V tejto funkcii si môžete všimnúť slova, alebo ako to nazvať, teda názvu bloku je_administrator.
Toto zapríčiní, že pokiaľ niečo umiestnite medzi <!-- BEGIN je_administrator --> a <!-- END je_administrator -->, zobrazí sa to len, ak je daný užívateľ administrátor. Avśak toto nieje všetko. Túto funkciu musíte podmieniť. Na to musíte mať aspoň malé skúsenosti s PHP. Pre toto sa používa funkcia php nazvaná if. Teda po slovensky keď. Do nej vložíte podmienku. Príklad pre zobrazenie textu iba pre administrátorov.
Programová časť:
[php]if ( !$userdata['user_level'] == ADMIN )
{
$template->assign_block_vars('je_administrator', array());
$text = ‘Text len pre administrátorov’;
$template->assign_vars(array(
'ADMIN_TEXT' => $text)
);
}[/php]
A výstup bude vyzerať takto:
- Kód: Vybrať všetko
<!-- BEGIN je_administrator -->
{ADMIN_TEXT}
<!-- END je_administrator -->
Toto je asi tak všetko, čo by som napísal ku templatovaciemu system phpBB. Ak budete mať nejaké otázky, nápady, čo sem mám eśte pridať, tak to napíšte do komentára, ja na tom popracujem. Dúfam, že sa vám tento članok páčil a bude vám na niečo dobrý.





News
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://validator.w3.org/feed/images/valid-atom.png)