16:16
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: Kievskiy, Dima-kun  
[Решено] Шаблонизатор DLE
uDenXДата: Вторник, 02.04.2013, 15:51 | Сообщение # 1
Группа: Media-ProGroup
Сообщений: 1193
Награды: 23
Город: Салават
Репутация: 1301
Замечания: 0%
Статус:
На мой взгляд у DLE хороший шаблонизатор. Вот решил выложить, может кому понадобится

Код index.php :)

Код
<?  

include("templates.class.php"); //подключение class  

$tpl    = new Template; //инициируем класс  
$tpl->dir = 'template/'; //задаём местоположение папки с шаблонами  
$tpl->load_template('main.tpl'); //загружаем каркас  
$tpl->set('{sub_templ}', $tpl->sub_load_template('sub.tpl')); //подключаем код блока  

//подставляем значения переменных  
$tpl->set('{var1}', 'блок2');  
$tpl->set('{var2}', 'блок3');  

$tpl->compile('main'); //собираем шаблон  
eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php '); //выводим результат работы, с возможностью вставки пхп кода в tpl  
$tpl->global_clear(); //очищаем все переменные для возможно следующего шаблона  

?>  


Код templates.class.php

Код
<?php  

class Template {  

     public  $dir = '.';  
     public  $template = null;  
     public  $copy_template = null;  
     public  $data = array();  
     public  $block_data = array();  
     public  $result = array('info' => '', 'content' => '');  
     public  $template_parse_time = 0;  

//задаём параметры основных переменных подгрузки шаблона  

     public function set($name , $var) {  
         if (is_array($var) && count($var)) {  
             foreach ($var as $key => $key_var) {  
                 $this->set($key , $key_var);  
             } } else $this->data[$name] = $var;  
     }  

//обозначаем блоки  

     public function set_block($name , $var) {  
         if (is_array($var) && count($var)) {  
             foreach ($var as $key => $key_var) {  
                 $this->set_block($key , $key_var);  
             } } else $this->block_data[$name] = $var;  
     }  

//производим загрузку каркасного шаблона  

     public function load_template($tpl_name) {  
     $time_before = $this->get_real_time();  
         if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}  
         $this->template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);  
         if ( stristr( $this->template, "{include file=" ) ) {  
             $this->template = preg_replace( "#\\{include file=['\"](.+?)['\"]\\}#ies","\$this->sub_load_template('\\1')", $this->template);  
         }  
         $this->copy_template = $this->template;  
     $this->template_parse_time += $this->get_real_time() - $time_before;  
     return true;  
     }  

// этой функцией загружаем "подшаблоны"  

     public function sub_load_template($tpl_name) {  
         if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}  
         $template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);  
         return $template;  
     }  

// очистка переменных шаблона  
     public function _clear() {  
     $this->data = array();  
     $this->block_data = array();  
     $this->copy_template = $this->template;  
     }  

     public function clear() {  
     $this->data = array();  
     $this->block_data = array();  
     $this->copy_template = null;  
     $this->template = null;  
     }  
//полная очистка включая результаты сборки шаблона  
     public function global_clear() {  
     $this->data = array();  
     $this->block_data = array();  
     $this->result = array();  
     $this->copy_template = null;  
     $this->template = null;  
     }  
//сборка шаблона в единое целое  
     public function compile($tpl) {  
     $time_before = $this->get_real_time();  
     foreach ($this->data as $key_find => $key_replace) {  
                 $find[] = $key_find;  
                 $replace[] = $key_replace;  
             }  
     $result = str_replace($find, $replace, $this->copy_template);  
     if (count($this->block_data)) {  
         foreach ($this->block_data as $key_find => $key_replace) {  
                 $find_preg[] = $key_find;  
                 $replace_preg[] = $key_replace;  
                 }  
     $result = preg_replace($find_preg, $replace_preg, $result);  
     }  
     if (isset($this->result[$tpl])) $this->result[$tpl] .= $result; else $this->result[$tpl] = $result;  
     $this->_clear();  
     $this->template_parse_time += $this->get_real_time() - $time_before;  
     }  
//счётчик времени выполнения запросов сборки  
     public function get_real_time()  
     {  
         list($seconds, $microSeconds) = explode(' ', microtime());  
         return ((float)$seconds + (float)$microSeconds);  
     }  
}  

?>  


Вот и всё. :)



DeklanДата: Вторник, 02.04.2013, 16:34 | Сообщение # 2
Постоялец
Группа: I'm V.I.P.
Сообщений: 352
Награды: 4
Город: Киев
Репутация: 678
Замечания: 0%
Статус:
Спасибо, попробую юзать его. :)
_____________________
Все отлично работает, теперь буду юзать его, еще раз спасибо!:)



My Skype: nazaret.su

Сообщение отредактировал Deklan - Вторник, 02.04.2013, 16:58
Dima-kunДата: Вторник, 02.04.2013, 23:04 | Сообщение # 3
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
пф. это все можно сделать гораздо проще и легче кодом в 32 строки, с комментариями и пробелами. Этот шаблонизатор, на мой взгляд, слишком много требует телодвижений.


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
uDenXДата: Среда, 03.04.2013, 11:17 | Сообщение # 4
Группа: Media-ProGroup
Сообщений: 1193
Награды: 23
Город: Салават
Репутация: 1301
Замечания: 0%
Статус:
Dima-kun, Надеюсь сделаешь и выложишь :)


Dima-kunДата: Среда, 03.04.2013, 12:34 | Сообщение # 5
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
uDenX, уже давно сделано.
Прикрепления: simple.rar (1.1 Kb)


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua