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

 



 
        
[Include] RemoveBuilding (2)
JasonGordon 24.05.2017 23:48
[SA-MP] Hosted Tab (116)
DieSeL 17.05.2017 17:33
Физрук (15)
Lanablogger1 16.05.2017 16:00
 





Рекомендуем:
Добавить IP: 95.172.59.51:7777





Последние Файлы 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
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
Скачать GTA SAMP 0.3.7 - Кл... 20.07.2015
Страница 1 из 11
Модератор форума: Kievskiy, Dima-kun 
Форум SAMP о мультиплеерах для GTA. » Обсуждения других тем » Системы и Сети » [Решено] Шаблонизатор DLE
[Решено] Шаблонизатор 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
Группа: Разработчики
Сообщений: 6242
Награды: 72
Репутация: 3339
Замечания: 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
Группа: Разработчики
Сообщений: 6242
Награды: 72
Репутация: 3339
Замечания: 0%
Статус:
uDenX, уже давно сделано.
Прикрепления: simple.rar(1Kb)


Мои работы:
[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
Форум SAMP о мультиплеерах для GTA. » Обсуждения других тем » Системы и Сети » [Решено] Шаблонизатор DLE
Страница 1 из 11
Поиск:





 


 


 
Хостинг от uCoz SAMP-RUS.COM