простейший класс работы с шаблонами:
<?
class template {
var $template_dir
=
\'./templates/\';
var $ext
=
\'.html\';
var $template
=
array();
var $templates
=
array();
function load($names) {
$names = explode("|", $names);
foreach($names as $name) {
$fl = file($this->template_dir.$name.$this->ext);
$this->templates[$name] = implode("", $fl);
}
}
function add($id_tpl, $name_tpl, $data_tpl) {
extract($data_tpl);
if(isset($this->template[$id_tpl])) { $p = "."; } else { $p = " "; }
eval(\'$this->template[$id_tpl]\'.$p.\'= "\'.addslashes($this->templates[$name_tpl]).\'";\');
$this->template[$id_tpl] = str_replace("\\\'", "\'", $this->template[$id_tpl]);
}
}
?>
переменные:
$template_dir - каталог с файлами шаблонов
$ext - расширение файлов шаблонов
функции:
load(names) - загружает шаблон(ы) в массив $template из файлов.
Если загружается один шаблон, $names = "001". Если несколько, они разделяются
символом "|" - $names = "001|002|005|006". Сделано для того, чтобы загружать
определенные файлы шаблонов.
add(id, name, data) - производит замену переменных в шаблоне на данные и размещает результат
в массив $templates. Причем, если функцию повторить для уже использованного ключа, то
полученные данные прибавляются.
id - имя ключа.
name - название шаблона (обращается к $template).
data - массив переменных для замены в шаблоне. Вид: array("variable" => "value");
пример:
<?
$t->add("links", "003", array(
"namelink"
=> "test link",
"link"
=> "/test");
$t->add("output", "002", array(
"title"
=> "test page",
"charset"
=> $charset,
"links"
=> $t->template["links"]));
echo $t->template["output"];