Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Шаблонизация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Beholder
Отправлено: 31 Марта, 2009 - 09:50:10
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




От Smarty Пришлось отказаться из за его большого веса 90% в него встроенного не требуется.

Нужен простой поиск и замена на подобие скрипта форума phpBB есть идеи но с реализацией туго Недовольство, огорчение

Думаю так прочитать файл потом выдрать из него все попадающие под маску переменные и тупо заменить их видом имя переменной бут в другой переменной и прост заменить ток как это все придумать чет путаюсь блин(((
И эт должно быть отдельным классом. Короче говоря что на это скажете давайте вместе придумывать
 
 Top
Stierus Супермодератор
Отправлено: 31 Марта, 2009 - 09:56:40
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




str_replace или регулярные выражения, в зависимоти от ТЗ. Улыбка Вцелом неинтересно, если нужно кэширование и прочие навороты - Smarty отлично справляется, если нужно что-то простенькое - сам php - отличный шаблонизатор, никакие классы не нужны, при нормальном проектировании инклудов простых и ob_start хватает слихвой. Вобщем баян.

(Отредактировано автором: 31 Марта, 2009 - 09:57:50)

 
My status
 Top
Beholder
Отправлено: 31 Марта, 2009 - 10:00:48
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Так кэширование не нужно однозначн) над попроще чем меньше код выйдет тем лучш) у меня сейчас вообще ужас сделан все шаблоны инклудом а в них статика с подстановкой вида <?=$somevar?>
(Добавление)
Ну так оно и есть))) Прост думаю класс сделать который это одстовлять бует скрипт прост для вапа а там одни лентяи все время чет натворят а так в ооп в этой сфере нета мало кто шарит Улыбка
 
 Top
Stierus Супермодератор
Отправлено: 31 Марта, 2009 - 10:09:12
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Ну а кто мешает перед инклудом все входящие сообщения проверить, не натворят ли они чего ?Улыбка (по идее, это первое, что ты должен сделать с приходящим от клиента контентом)
 
My status
 Top
Beholder
Отправлено: 31 Марта, 2009 - 10:14:09
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Нет это то понятно просто защититься от горекодеров))))
(Добавление)
Beholder пишет:
Нет это то понятно просто защититься от горекодеров))))
Скрипт то в паблик))) патом начнут переписывать себе присваивать))) а так 95% посмотрит и ничего не поймет остальные пять дядки сырьезные фигней страдать не будут)))
(Добавление)
Спасибо за помощь думаю тема себя изчерпала оставлю как есть с небольшими доработками)))
 
 Top
Stierus Супермодератор
Отправлено: 31 Марта, 2009 - 10:25:38
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Так и не поняв замысел автора, для защиты от горе-кодеров. напиши незаменимую функцию ruki_otorvu() - пусть боятся Улыбка
 
My status
 Top
Beholder
Отправлено: 31 Марта, 2009 - 10:51:21
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Не испугаются)))
(Добавление)
Просто запутать по принципу умный не спросит дурак не поймет)))
 
 Top
Roler
Отправлено: 31 Марта, 2009 - 11:08:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Да просто написать самому, там кода то - тьфу)
Я как-то начал писать шаблонизатор(для общего развития), сделал всё, что хотел, кроме циклов.
Вот у меня так заменяется
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $this->file = preg_replace('/\{(.*)\}/','<?=$this->get(\'\1\')?>',$this->file);
  4. ?>
  5.  


Это заменяет переменные вида {VAR} на
Функция get просто возвращает переменную из массива

(Отредактировано автором: 31 Марта, 2009 - 11:10:42)

 
 Top
Beholder
Отправлено: 31 Марта, 2009 - 11:13:11
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Roler пишет:
Да просто написать самому, там кода то - тьфу)
Я как-то начал писать шаблонизатор(для общего развития), сделал всё, что хотел, кроме циклов.
Вот у меня так заменяется
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $this->file = preg_replace('/\{(.*)\}/','<?=$this->get(\'\1\')?>',$this->file);
  4. ?>
  5.  


Это заменяет переменные вида {VAR} на

Функция get просто возвращает переменную из массива
Бррр... прост метод создать чтоле с такими действиями и путь к шаблону ему передать?
(Добавление)
эээ чет я запуталсо
 
 Top
Stierus Супермодератор
Отправлено: 31 Марта, 2009 - 11:16:01
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
эээ чет я запуталсо
Ты же этого и добивался, если я не ошибаюсь Улыбка
 
My status
 Top
Roler
Отправлено: 31 Марта, 2009 - 11:21:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ну, если классом, то:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. class template
  4. {
  5. var $content = array();
  6. var $path = 'templates';
  7. var $timelimit = 30;
  8.  
  9.         function set($what,$to)
  10.         {
  11.                 $this->content[$what] = $to;
  12.         }
  13.        
  14.         function get($var)
  15.         {
  16.                 return $this->content[$var];
  17.         }
  18.        
  19.         function load($tpl)
  20.         {
  21.                 if(file_exists("cache/".$tpl.".php") && filemtime("cache/".$tpl.".php")>(time() - $this->timelimit))
  22.                 {
  23.                         include("cache/".$tpl.".php");
  24.                 }
  25.                 else
  26.                 {
  27.                         if(file_exists("$this->path/$tpl.tpl"))
  28.                         {
  29.                                 // Loading template
  30.                                 $this->file = file_get_contents("$this->path/$tpl.tpl");
  31.                                
  32.                                 // Variables
  33.                                 $this->file = preg_replace('/\{(.*)\}/','<?=$this->get(\'\1\')?>',$this->file);
  34.                                
  35.                                 // Writing to cache-file
  36.                                 if($this->incfile = fopen("cache/$tpl.php","w"))
  37.                                 {
  38.                                         fwrite($this->incfile,$this->file);
  39.                                         fclose($this->incfile);
  40.                                 }
  41.                                
  42.                                 // Loading generated file
  43.                                 include("cache/".$tpl.".php");
  44.                         }
  45.  
  46.                 }
  47.         }
  48. }
  49. ?>
  50.  

Работает так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $tpl = new template;
  4.  
  5.         $tpl->set("MSG1","Сообщение один");
  6.         $tpl->set("MSG2","Сообщение два");
  7.        
  8.         $tpl->load("main");
  9. ?>
  10.  

Тут ещё сразу и кэширование сгенерированных шаблонов)

(Отредактировано автором: 31 Марта, 2009 - 11:22:23)

 
 Top
Beholder
Отправлено: 31 Марта, 2009 - 11:40:48
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Вот это мне и нужно было изначально просто не мог придумать как переменные записать((( и как их потом переставлять
(Добавление)
Roler превелико благодарен
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB