[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Шаблонизатор
Jekel
Здравствуйте, пишу шаблонизатор.
Сами шаблоны php формата....все работает хорошо, кроме обработки php-скрипта в самом шаблоне.

Шаблон выглядит так:

[this:index]
<!
DOCTYPE html>
<
html lang="ru">
<
head>
<
meta charset="UTF-8" />
<
title>[var:page_title]</title>
</
head>
<
body>
[
com:head]
[
var:page_name]
<
br />
[
var:content]
<
br />
{banner:banner_name}
<?php
echo "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk";
?>
</body>
</
html>

теги типа [] и {} грузит зашибись)
загружаю шаблон через file_get_contents, ясен пень он грузит не обработаный шаблон...т.е код echo "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"; не обработан и не выводится в результате.

ясно, что можно грузить шаблон по url'у через file_get_contents...тогда вроде все ок, но эта операция достаточно длительная и так делать как-то через ж*пу)

Помогите справится с этой проблемой плз. Есть ли методы подгрузить уже обработаный шаблон. Либо сделать что-то вроде спец.тегов для php кода...что я уже пробовал, но eval впихнуть невозможно туда куда нужно)



Спустя 28 минут, 12 секунд (21.06.2012 - 17:52) Игорь_Vasinsky написал(а):
eval()

Спустя 10 минут, 13 секунд (21.06.2012 - 18:02) Jekel написал(а):
как мне eval всунуть туда куда надо?
его присвоить нельзя...без предобработки
была попытка:
function eval_php(){

preg_match_all('#\[php\](.+?)\[\/php]#is', $this->tpl_content, $this->php_code);
if(count($this->php_code)<1) return false;

foreach($this->php_code[1] as $key => $val){
$klo = eval($val);
$this->tpl_content = str_replace($this->php_code[0][$key], $klo, $this->tpl_content);
}

}



Спустя 6 минут, 33 секунды (21.06.2012 - 18:09) Игорь_Vasinsky написал(а):
echo eval(file_get_contents($file));



Спустя 4 минуты, 8 секунд (21.06.2012 - 18:13) alexbel2404 написал(а):
а не нужно использовать php код в шаблоне) формируй все до его вызова

Спустя 5 минут, 26 секунд (21.06.2012 - 18:18) alexbel2404 написал(а):
или
ob_start();
include 'file.php';
$html = ob_get_contents();
ob_end_clean();

а дальше уже изменяй свои тэги. Так кстати безопаснее будет, чем eval() юзать

Спустя 10 минут, 51 секунда (21.06.2012 - 18:29) Jekel написал(а):
Цитата

а не нужно использовать php код в шаблоне) формируй все до его вызова

неее, ну ясно-понятно, но хочется шаблоны гибкими сделать)
Цитата
ob_start();
include 'file.php';
$html = ob_get_contents();
ob_end_clean();

вот это то, что нужно! работает отлично, спасибо большое user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.