|
|
|
| Пробовал парсить html файл с переменными вида {TITLE} , но так и не смог добиться цикличности. Новости не выводятся =(
Подскажите какой-нибудь вариант.
Столько статей уже обчитался... | |
|
|
|
|
|
|
|
для: ChieFSS
(10.11.2007 в 14:32)
| | . | |
|
|
|
|
|
|
|
для: ChieFSS
(10.11.2007 в 14:32)
| | А как пробовали?
Вообще, нужно сначала запихать в массив те переменные, которые будут подставлятся в каждую итерацию цикла. Например,
<?php
$dynamic_block_vars = array();
$dynamic_block_vars = array('var' => 'value1');
$dynamic_block_vars = array('var' => 'value2');
//...
?>
|
Затем получить, допустим, регулярными выражениями динамический блок и в цикле вывести этот блок с заменными значениями из того же массива столько раз, сколько элементов в массиве $dynamic_block_vars.
Для создания вложенных динамических блоков нужно делать функцию рекурсивной. | |
|
|
|
|
|
|
|
для: Unkind
(10.11.2007 в 14:45)
| | Так пробовал. Но новости из БД не получается в цикле вывести.
index.php
require('core.php'); // Подключаем файл с классом
$tpl->get_tpl('template/template.tpl'); //Файл который мы будем парсить
$tpl->set_tpl('{TITLE}','Супер сайт'); //Установка переменной {TITLE}
$tpl->set_tpl('{BGCOLOR}','#F2F2F2'); //Установка переменной { BGCOLOR }
$tpl->set_tpl('{SOMETPLTAGS}','<font color=red>Это текст
обрамленый красным цветом</font>'); //Установка переменной {SOMETPLTAGS}
$tpl->tpl_parse(); //Парсим
print $tpl->template; //Выводим нашу страничку
|
core.php
class template
{
var $vars = array();
var $template;
function get_tpl($tpl_name)
{
if (empty($tpl_name) || !file_exists($tpl_name)) {
return false;
} else {
$this->template = file_get_contents($tpl_name);
}
}
function set_tpl($key,$var)
{
$this->vars[$key] = $var;
}
function tpl_parse()
{
foreach($this->vars as $find => $replace)
{
$this->template = str_replace($find, $replace, $this->template);
}
}
}
$tpl = new template;
|
template.html
<html>
<head>{TITLE}</head>
<body bgcolor={BGCOLOR}>
{SOMETPLTAGS}
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: ChieFSS
(10.11.2007 в 14:49)
| | Не понятно. А как Вы отличаете переменные для динамического блока (для цикла), и обычные ({TITLE}, например)? | |
|
|
|
|
|
|
|
для: Unkind
(10.11.2007 в 14:59)
| | Вот и пытаюсь додуматься как это лучше реализовать | |
|
|
|
|
|
|
|
для: ChieFSS
(10.11.2007 в 15:05)
| | Что тут думать? Выделите по-особому начало и конец блока.
Например, как в phpBB:
<!-- BEGIN block -->
...
<!-- END block -->.
Хотя сам класс там хреновенький. Лучше писать самому. | |
|
|
|
|
|
|
|
для: Unkind
(10.11.2007 в 15:09)
| | Щас попробую, а как его потом обрабатывать? | |
|
|
|
|
|
|
|
для: ChieFSS
(10.11.2007 в 15:11)
| | Я уже описал выше. Только паттерн сейчас не напишу, т.к. уже с мобильного сижу. | |
|
|
|
|
|
|
|
для: Unkind
(10.11.2007 в 15:15)
| | Ок. спасибо. Буду пробовать | |
|
|
|
|
|
|
|
для: ChieFSS
(10.11.2007 в 14:32)
| | XTemplate, Smarty | |
|
|
|