![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 7.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Zaczalem czytac o Smarty i sie zastanawiam czy to jest wogole potrzebne. Na pierwszy rzut oka to tylko komplikuje zycie. Po co mam sie meczyc z templatami jak moge dac zamiast <title>{title}</title> <title><? echo $title; ?></title> Czy to sie Wam przydaje? Zastanawiam sie nad jego uzywaniem. Przekonajcie mnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Skoro mnie krytykujesz w takim razie zoabcz to:
[php:1:01ca64839e]<?php class template { var $file; var $inc = array("default" => ""); var $blocks = array("default" => ""); var $moduls = array("default" => ""); function load($file){ $file = "templates/".$file.".tpl"; if(file_exists($file)){ $plik = fopen($file, 'r'); $unparsed = fread($plik, filesize($file)); fclose($plik); }else{ die("brak pliku $file"); } // wylapuje moduły preg_match_all( "#[INCLUDE:(.+?)]#is", $unparsed, $include); $unparsed = preg_replace("#[INCLUDE:(.+?)]#is","{INCLUDE:$1}", $unparsed); $unparsed = str_replace("n", "|ent|", $unparsed); preg_match_all( '/[MODUL.*](.+)[/MODUL.*]/Uise', $unparsed, $znalezione); // zamienia moduły na ich odpowiedniki $unparsed = preg_replace('/[MODUL:(.*?)](.*?)[/MODUL:(.*?)]/i','{MODUL:$1}', $unparsed); $unparsed = str_replace("|ent|", "n", $unparsed); $znalezione[0] = str_replace("|ent|", "n", $znalezione[0]); $znalezione[1] = str_replace("|ent|", "n", $znalezione[1]); $mod = array(); foreach ($znalezione[0] as $i_parser){ preg_match("/[MODUL:(.*?)]/i",$i_parser, $znal); $pref = $znal[1]; $m = preg_replace('/[MODUL:(.*?)]/i','', $i_parser); $m = preg_replace('/[/MODUL:(.*?)]/i','', $m); $mod["$pref"]=$m; } foreach ($include[0] as $i_parser){ preg_match("/[INCLUDE:(.*?)]/i",$i_parser, $znal); $in = preg_replace("#[INCLUDE:(.+?)]#is","$1", $i_parser); $pref = $znal[1]; $prefix = $znal[1]; $pref = "templates/".$pref.".tpl"; if(file_exists($pref)){ $plik = fopen($pref, 'r'); $inc[$prefix] = fread($plik, filesize($pref)); fclose($plik); }else{ die("brak pliku $file"); } } $this -> moduls = $znalezione[1]; $this -> mods = $mod; $this -> unparsed = $unparsed; $this -> inc = $inc; return $this -> moduls; return $this -> inc; return $this -> mods; return $this -> unparsed; } function parse($unparsed,$blocks = array()){ if(preg_match_all('#{(.+?)}#is', $unparsed, $found)){ $parsed = $unparsed; foreach($found[1] as $block){ $parsed = str_replace('{'.$block.'}', $blocks[$block], $parsed); } } return $parsed; } } class modul { var $file; var $mod; var $blocks = array("default" => ""); var $moduls = array("default" => ""); function parse($unparsed,$blocks = array()){ if(preg_match_all('#{(.+?)}#is', $unparsed, $found)){ $parsed = $unparsed; foreach($found[1] as $block){ $parsed = str_replace('{'.$block.'}', $blocks[$block], $parsed); } } return $parsed; } } ?>[/php:1:01ca64839e] szablon wygląda tak: Kod [INCLUDE:header]
<table align="center" width="60%" style="border:1px solid #000000"> <!--- [MODUL:z] gorna czesc--> <tr> <td class="forum1">{z:czas}</td> <td class="forum1">{z:cos}</td> <td class="forum2">{z:ile} </td> </tr> <!--- [/MODUL:z] gorna czesc--> <!--- [MODUL:ass] dolna czesc--> <tr> <td class="forum1">{ass:czas}</td> <td class="forum1">{ass:cos}</td> <td class="forum2">{ass:ile} </td> </tr> <!--- [/MODUL:ass] dolna czesc--> </table> <br><br><br> [INCLUDE:footer] Nie uznaje siebie za eksperta w smartach bo nawet ich nie używałem. Jedynie wziąłem sie za pisanie właśnego parsera. przy okazji mam prozbe jeżeli ktoś potrzafi poprawić mój kod wyrażeniami regularnymi bo niestety z tym mam problem. I słowa krytyki czy taki system jest dobry. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 02:09 |