Автор Тема: на тему шаблонизаторов  (Прочитано 2196 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
на тему шаблонизаторов
« : 23 Июня 2003, 14:38:34 »
давно пользую две функции:


function template($name) {
	
global 
$abspath$templatesdir$templatescache;
	
if(isset(
$templatescache[$name])){
	
	
return 
$templatescache[$name];
	
}else{
	
	
if( 
file_exists($abspath."/templates/$templatesdir/".$name.".html")){
	
	
	
$gettemplate=r_file($abspath."/templates/$templatesdir/".$name.".html");
	
	
	
$template$gettemplate;
	
	
	
$template=addslashes($template);
	
	
	
$template=str_replace("\\\\\'","\'",$template);
	
	
	
if(
$name != "phpinclude") {
	
	
	
	
$template "<!--Begin Template: $name -->\\n$template\\n<!-- End Template: $name -->";
	
	
	
	
$template $template."\\n";
	
	
	
}
	
	
	
$templatescache[$name]=$template;
	
	
	
return 
$template;
	
	
}else{
	
	
	
return 
"No such template: $name";
	
	
}
	
}
}

function 
loadtemplates($name){
	
global 
$templatescache$abspath$templatesdir;
	

	
foreach(
$name as $tname){
	
	
if(
file_exists($abspath."/templates/$templatesdir/".$tname.".html")){
	
	
	
$gettemplate=r_file($abspath."/templates/$templatesdir/".$tname.".html");
	
	
	
$templatescache[$tname]=$gettemplate;
	
	
	
$templatescache[$tname]=addslashes($templatescache[$tname]);
	
	

	
	
	
$templatescache[$tname]=str_replace("\\\\\'","\'",$templatescache[$tname]);
	
	
	
if(
$tname != "phpinclude") {
	
	
	
	
$templatescache[$tname] = "<!--Begin Template: $tname -->\\n$templatescache[$tname]\\n<!-- End Template: $tname -->";
	
	
	
	
$templatescache[$tname] = $templatescache[$tname]."\\n";
	
	
	
}
	
	
}
	
}
	
return 
$templatescache;


}


function 
r_file($fname){
	
$fp fopen ($fname"r"); 
	
$content fread ($fpfilesize ($fname)); 
	
fclose($fp);
	
return 
$content;
}
ну, будем исповедоваться?

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
на тему шаблонизаторов
« Ответ #1 : 23 Июня 2003, 14:48:11 »
используются они следующим образом.
файлы .html располагаются по адресу $abspath/templates/$templatesdir
$templatesdir - нужен мне, чтобы в зависимости от пользователя иметь возможность менять набор шаблонов.

файлы .html выглядят примерно так:



$title

$body




перед началом работы скрипта загружаются наиболее часто используемые:
loadtemplates( array(\'main\',\'category\', \'header\', \'footer\') );

обработанный шаблоном вывод я сохраняю в переменные

$title
="title";
$body="body";
eval(
"\\$out .= \\"".template("main")."\\";");


а когда мне  надо - вывожу
echo $out;

по-моему просто и вполне удобно.
ну, будем исповедоваться?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
на тему шаблонизаторов
« Ответ #2 : 23 Июня 2003, 16:04:22 »
я отказался от такого кода (насколько я помню на этом основан шаблонизатор Britva-ы) по следующим причинам:
1. Считаю что пространство переменных скрипта не должно пересекаться с пространством меток шаблонизатора (то есть нужно прямо регистрировать те переменные, которые ты хочешь использовать в скрипте)
2. Неудобно работать с блоками (для создания блока в твоем млучае нужно 2 шаблона, а в шаблонизаторах с поддержкой блоков - один шаблон)
3. Нечитабельный код получается

Все ИМХО
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
на тему шаблонизаторов
« Ответ #3 : 23 Июня 2003, 17:36:05 »
AliMamed
Сам пользуюсь подобным шаблонизатором, но меня стали очень раздражать те самые "отдельные шаблоны для каждой строчки таблицы".
Попробую найти для себя шаблонизатор с хоть какой-то внутренней логикой...
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28