|
|
|
| Здравствуйте!
Счас играюсь с шаблонизатором и пробую разные идеи.
Такой вопрос
есть функция которая получает массив данных и возвращает нтмл шаблон с этими данными
function html_array ($m,$q) {
ob_start(); // echo to buffer, not screen
include (ROOT_DIR.'includes/'.$m.'.php');
return ob_get_clean(); // get buffer contents
}
|
например на странице выводится список 10 новостей, получается include делается 10 раз
есть ли решение чтобы include (или что-то другое) делать один раз и в функцию передавать и его значение?
к примеру пробовал
eval(file_get_contents(ROOT_DIR.'includes/'.$m.'.php'))
но тогда <?php надо в шаблонах убирать что делает его очень неудобным и негибким
кстати вот на личном опыте убедился что если сайт небольшой и шаблонов мало то лучше их всех загнать в одну функцию и вызывать через case или ifelse
(по цифрам у меня общий вес шаблонов был до 30 килобайт и их количество до 30 - это работает быстрее чем разбить шаблоны на 30 файлов и нужные инклудить) | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(02.07.2010 в 00:20)
| | > но тогда <?php надо в шаблонах убирать что делает его очень неудобным и негибким
//<?
eval('?>'.file_get_contents(ROOT_DIR.'includes/'.$m.'.php'))
|
| |
|
|
|
|
|
|
|
для: sms-send
(02.07.2010 в 00:29)
| | да не
у меня шаблоны такого плана
<div class="page_text">
<h1><?=$q['name']?></h1>
<?=$q['text']?>
</div>
|
получается при вызове функции оно их сразу на экран выводит а я же в переменную сохраняю
поэтому счас при инклуде ob_start(); использую | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(02.07.2010 в 00:34)
| |
<?
function html_array ($m,$q, $template) {
ob_start(); // echo to buffer, not screen
eval('?>'.$template);
return ob_get_clean(); // get buffer contents
}
$template = file_get_contents(ROOT_DIR.'includes/'.$m.'.php');
$html = html_array ($m,$q, $template);
|
UPD.
Или $m это имя шаблона... тогда в функции оно уже не нужно.
А зачем нужно сохранять результат обработки шаблона в переменную? | |
|
|
|
|
|
|
|
для: sms-send
(02.07.2010 в 00:40)
| | спасибо за ответ, завтра уже буду пробовать
да $m это имя шаблона а $q - массив данных (почти всегда из скл запроса, но не всегда)
вообще у меня была мысль не сохранять результаты шаблона в переменную а сразу выводить на экран, но есть много но
к примеру шаблон с метатегами вызывается самым последним, надо выдумывать как его первым вызывать
так же одновременно с некоторыми шаблонами у меня формируются некоторые переменные которые тоже будут в конечном шаблоне находится
поэтому счас пока все в переменные загоняю а когда уже все переменные есть и шаблоны то вызываю основной шаблон сайта на экран куда все вставляется | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(02.07.2010 в 00:20)
| | а что может ваш шаблонизатор? | |
|
|
|