www.ruxesoft.net - Сайт разработчика программного обеспечения Ахрамеева Дениса

Логин:
Пароль:
 


          Форум RuxeSOFT.net



[ Новые сообщения · Участники · Правила форума · Поиск ]

Страница 1 из 11
Модератор форума: hulc, oleg, jevgensem 
Форум RuxeSOFT.net » Терабайт оффтопа » Программирование, софт и железо » Шаблоны TMP - PHP (Учимся вместе)
Шаблоны TMP - PHP
НиколайДата: Понедельник, 11.08.2008, 14:05 | Сообщение # 1
Модостроитель
Группа: Пользователи
Сообщений: 165
Статус: Offline
И так учился я тоже по этой статье и у меня вышло а раз у меня вышло то у вас 110% выйдет!
Статья взята с php.su (вроде от сюда =) )

Code
<?php  

class template # создали класс  

{ # зададим переменные  

var $data = array(); # переменная для шаблонов  

var $root = '.'; # каталог для шаблонов  

var $ext = '.tpl'; # расширение для шаблонов  

var $da_vr = array(); # переменная для преобразованых шаблонов  

// Класс создан, далее формируем функции:  

function template($dir,$ext)  

{  

if(is_dir($dir)){$this -> root = $dir;}  

else{die('Ошибка! <b>'.$dir.'</b> - это не директория!');}  

$this -> ext = $ext;  

}  

// Эта функция выполниется сразу после создания класса, поэтому при создании надо

// указывать директорию и расширения шаблонов (см. ниже). Далее надо загрузить шаблон:

function load($name)  

{  

$nn = $name;  

$dir = $this -> root;  

$ext = $this -> ext;  

$name = $dir.'/'.$name.$ext;  

if(!is_file($name)) {die('Ошибка <b>'.$name.'</b> - это не файл!');}  

$fp = fopen($name,'r');  

$data = fread($fp,filesize($name));  

fclose($fp);  

$this -> data[$nn] = $data;  

$this -> da_vr[$nm] = $data;  

}  

// В этой функции мы считали шаблон через fread и запихнули его в две переменных:

// da_vr и data. При загрузке шаблона надо указывать имя шаблона без расширения

// (см.ниже). Далее преобразовываем переменные:  

function vars($nm,$vars = array())  

{  

$data = $this -> data[$nm];  

while(list($id,$var) = each($vars))  

{  

global $$vars[$id];  

$data=str_replace('{'.$vars[$id].'}',$$vars[$id],$data);  

}  

$this -> da_vr[$nm] = $data;  

}  

// Тут мы преобразовали переменные и загнали в переменную da_vr. И осталось вывести

// шаблон:

function out($name)  

{  

$ret = $this -> da_vr[$name];  

$this -> da_vr[$name] = $this -> data[$name];  

return $ret;  

}  

}
?>

После вывода шаблона, все переменные в нём уничтожились, их надо задавать заново. А теперь весь код, чтобы небыло проблем (без комментов):
Code
<?php  

class template # создали класс  

{ # зададим переменные  

var $data = array(); # переменная для шаблонов  

var $root = '.'; # каталог для шаблонов  

var $ext = '.tpl'; # расширение для шаблонов  

var $da_vr = array(); # переменная для преобразованых шаблонов  

function template($dir,$ext)  

{  

if(is_dir($dir)){$this -> root = $dir;}  

else{die('Ошибка! '.$dir.' - это не директория!');}  

$this -> ext = $ext;  

}  

function load($name)  

{  

$nn = $name;  

$dir = $this -> root;  

$ext = $this -> ext;  

$name = $dir.'/'.$name.$ext;  

if(!is_file($name)) {die('Ошибка <b>'.$name.'</b> - это не файл!');}  

$fp = fopen($name,'r');  

$data = fread($fp,filesize($name));  

fclose($fp);  

$this -> data[$nn] = $data;  

$this -> da_vr[$nm] = $data;  

}  

function vars($nm,$vars = array())  

{  

$data = $this -> data[$nm];  

while(list($id,$var) = each($vars))  

{  

global $$vars[$id];  

$data=str_replace('{'.$vars[$id].'}',$$vars[$id],$data);  

}  

$this -> da_vr[$nm] = $data;  

}  

function out($name)  

{  

$ret = $this -> da_vr[$name];  

$this -> da_vr[$name] = $this -> data[$name];  

return $ret;  

}  

}  

?>

Обясню как работать с классом. Допустим у нас есть шаблон body.tpl в директории data. Его содержимое:
Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  

<html>  

<head>  

<title> {title} </title>  

</head>  

<body bgcolor={bgcolor}>  

{text}  

</body>  

</html>

Работа с классом:
include('template.php'); # включили класс

# Зададим переменные #

Code
$bgcolor = '#CCFFCC';  

$text = 'Тест класса!';  

$title = 'ТЕСТ!';  

$tpl = new template('./data','.tpl'); # создали объект, задали каталог и расширение  

$tpl -> load('body'); # зашрузили шаблон  

$tpl -> vars('body',array('text','title','bgcolor')); # указали какие переменные преобразовать, они должны быть заданы зарание  

echo $tpl -> out('body'); # вывели шаблон

Так ну вроде всё!!! Пример очень хороший и ясен! Учимся ;)




 
zelorasДата: Вторник, 12.08.2008, 07:30 | Сообщение # 2
Гигабайт
Группа: Пользователи
Сообщений: 153
Статус: Offline
МММ...спасибо...думаю если это все пойму то в обновлении кмс это прикручу =)



 
olegДата: Воскресенье, 17.08.2008, 15:45 | Сообщение # 3
Мегабайт
Группа: Модераторы
Сообщений: 76
Статус: Offline
Есть хороший готовый класс с примерами FastTemplate


Desktop:
Linux dektop 2.6.24-1-686 #1 SMP Thu May 8 02:16:39 UTC 2008 i686 GNU/Linux
Server:
Linux home-server 2.6.24-1-486 #1 Thu May 8 01:29:10 UTC 2008 i686 GNU/Linux
 
Форум RuxeSOFT.net » Терабайт оффтопа » Программирование, софт и железо » Шаблоны TMP - PHP (Учимся вместе)
Страница 1 из 11
Поиск:


Дизайн: Ахрамеев Денис. Все права защищены (©) 2005 - 2008
Сайт проверен в браузерах Opera 9.27, Internet Explorer 6.0 и Mozilla FireFox 3.0 RC2
Рекомендуемое разрешение экрана: 1024x768

Rambler's Top100 be number one Рейтинг Сайтов YandeG
Хостинг от UcoZ