znalazłem w necie prosty system szablonów. Po małych przeróbkach klasa wygląda tak:
<?php class Lay { public $render; public function render($plik, $tablica) { foreach($tablica as $t => $content) { } $this->render=preg_replace('({(.*?)})', "", $this->render); //Usuwanie wszystkich słów kluczowych, które nie zostały podmienione return $this->render; } public function __desctruct() { } } ?>
Natomiast wywołanie wygląda tak:
<?php include_once "klasa.php"; $szablon = new Lay(); $dane2=$szablon->render("logowanie", $dane1); ?>
A plik index.tpl wygląda tak:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> </head> <body> <div id="strona"> <div id="nawigacja"> {logowanie} ... </div> <!--nawigacja--> <div id="naglowek"> ... </div><!--nagłówek--> <div id="zawartosc"> <div id="lewa_kolumna"> <div class="margines"> <div class="menu_left"> {menu_lewe} </div><!--menu_left--> </div><!--margines--> </div><!--lewa_kolumna--> <div id="tresc_strony"> <div class="margines"> {content} </div><!--margines--> </div><!--tresc_strony--> <div id="prawa_kolumna"> <div class="margines"> <div id="modul"> {menu_prawe} </div><!--modul--> <div class="modul"> </div><!--margines--> </div><!--prawa kolumna--> </div><!--zawartosc--> <div id="stopka"> ... </div><!--stopka--> </div><!--strona--> </body> </html>
Czyli sprawa wygląda tak, że wczytywany jest plik .tpl, następnie tworzona jest zmienna w której zostają podane dane które mają zostać podmienione za {} w innym pliku(w zmiennej $dane2 jest to plik logowanie.tpl). Do tego momentu wszystko jest ok. Jednak chciałbym zrobić żeby w miejsce {content} zamiast kolejnego pliku *.tpl wczytywało mi jakiś plik php w którym umieszcze switch, sterujący zawartością. I tu mam problem bo nie wiem jak to zrobić. Próbowałem:
public function rend($plik) { return $this->rend; }
Czyli analogicznie tylko że plik php. Jednak to nie działa. Nie wyskakuje błąd, ale też nic się nie dzieje.
Próbowałem też:
public function rend($plik) { require ("template/".$plik.".php"); //Wczytanie zawartości pliku return $this->rend; }
No i to działa ale wczytuje mi zawartość strony zamiast w {content}, to na samej górze.
Jak sobie z tym poradzić? Może ktoś pomóc, naprowadzić na rozwiązanie tego problemu??