Postanowilem wykorzystac w projekcie proste szablony php, wykorzystujace uproszczona skladnie. Wszystkie zmienne dla szablonu sa w nim dostepne w tablicy $tpl.
A to przyklad pliku szablonu:
<head> <title> <?=$tpl['tytulStrony'];?> </title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> </head> <body> <h3> <?=$tpl['tytul'];?> </h3> <? require_once('inny_plik_szablonu.php'); ?> i tak dalej
Wymyslilem sobie klase, ktora pozwala na ustawienie tablicy wartosci przekazywanych do szablonu oraz wyswietlenie szablonu:
<?php class Renderer{ // tu jeszcze troche innego kodu function setTpl($index, $data){ $this->tpl[$index]=$data; } function execute(){ $tpl=$this->tpl; require_once('plik_szablonu.php'); } } ?>
Mniej wiecej dziala, ale brak mi pomyslu na rozwiazanie kwestii sciezki dostepu do plikow.
Wszystkie odwolania do zewnetrznych plikow umieszczone w szablonie (np. pliku CSS, includowanie dodatkowego szablonu) sa przez php interpretowane jako linki z poziomu glownego kontrolera aplikacji (index.php), a nie jako pliki w tym samym katalogu co szablon.
Na przylkad:
w pliku /szablon/default/index.php
mam: include('inny_szablon.php');
No i php zamiast includowac plik /szablon/default/inny_szablon.php probuje znalezc /inny_szablon.php, bo glowny kontroler aplikacji to /index.php.
Jak moge to mozliwie prosto rozwiazac?