Создание шаблона для оформлеиня сайта

vxc

Новичок
Создание шаблона для оформлеиня сайта

Помогите решить одну проблемку.Решил отделить php код от html в своей ЦМС.

есть html шаблон новости(news.tpl) с вставочками типа <?=$title;?>
ecnm оснвоной html шаблон(main.tpl) где описан общий вид старницы.В этом шаблоне есть <?=$mod_data;?>
В мод дата как раз должна записаться динамически меняемая информация.

Например ленда новостей.
В цикле получаю информации о новости,вставляю ее в шаблон news.tpl и дописываю в $mod_data
Когда я записываю данные о новости в шаблон,то сам шаблон получаю с помощью
$mod_data.= @file_get_contents("tpl/news.tpl");
И в самом конце вывожу
include("tpl/main.php");

Проблема в том что при просмотре страницы те php вставки что были в news.tpl так и выводится,т.е. выводит <?=title;?> вместо "Новость номер раз".
Т.е. нужно что-то вроде $mod_data.= include("tpl/news.tpl"); чтобы данные не выводились сразу а писались в переменную


Как это можно исправить?
Прошу прощеиня за такое плохое объяснение ситуации.Вариант с готовыми шаблонизаторами мне не подходит:(
 

Фанат

oncle terrible
Команда форума
вместо
<?=$mod_data;?>
написать
<? include("tpl/news.tpl") ?>

по-моему, это ОЧЕВИДНО

-~{}~ 20.09.09 16:21:

<? include("tpl/$mod_data_tpl.tpl") ?>
для совсем непонятливых
 

vxc

Новичок
Автор оригинала: *****
вместо
<?=$mod_data;?>
написать
<? include("tpl/news.tpl") ?>

по-моему, это ОЧЕВИДНО
И он мне вставит ОДИН раз шаблон для ОДНОЙ новости,а мне то ленту нужно вывести,поэтому и писал что набираю данные в переменную $data_mod в цикле.

Буду пробовать вариант с буфером от Beavis:)
 

fixxxer

К.О.
Партнер клуба
не надо набирать ничего ни в какую переменную!

допустим есть у тебя массив $newslist в котором у тебя
PHP:
array(
  array('id' => 1, 'text' => 'Новость 1'),
  array('id' => 2, 'text' => 'Новость 2'),
  //...
)
делаешь примерно такой шаблон
PHP:
<? if (!empty($newslist)): ?>
Новости:
<ul>
<?    foreach ($newslist as $news): ?>
    <li>(# <?=$news['id']?>) <?=htmlspecialchars($news['text'], ENT_QUOTES)?></li>
<?    endforeach; ?>
</ul>
<? else: ?>
Нет новостей!
<? endif; ?>
при желании, выносишь в include
 

Фанат

oncle terrible
Команда форума
если у тебя в news.tpl шаблон единственной строки, то ты повесишься работать с такими шаблонами.
почитай что-нибудь о нормальных.
 

vxc

Новичок
*****, в news.tpl не единственная строка,там строк 40 html кода.Там полностью описан вид новости - загоолвки,даты,разделы,сам текст и прочее.

fixxxer ,как вывести в цикле я и так отлично знаю!Я пытаюсь отделить php от html и вынести html в отдельный файл.
 

Фанат

oncle terrible
Команда форума
как я уже говорил, ты повесишься, вынося отдельные блоки шаблона в отдельный файл. их у тебя будут тыщи.

почитай что-нибудь про настоящие шаблоны
 

vxc

Новичок
почему тысячи то???
Вы видели как шаблоны реализованы в том же DLE? несколько десятков файлов.
Один описывающий общий вид + по несколько файлов на каждый модуль.
 

Фанат

oncle terrible
Команда форума
вот именно что на модуль.
а не на одну строчку в модуле.
ты бы поменьше спорил-то. вас тут таких, изобратеталей, тыщи бегают. и каждый думает, что умнее всех.
 

vxc

Новичок
Я просто не могу понять с чего вы взяли что я собрался это делать на каждую строчку в модуле?
 

Фанат

oncle terrible
Команда форума
С твоих слов.
Если слово строка тебя ТАК пугает, а представить новость строкой таблицы у тебя не хватает воображения, то, если ты вдруг не заметил, я давно уже употребляю слово "блок"
 

vxc

Новичок
Тогда еще раз повторюсь - разработчики DLE не запарились же выносить каждый блок отдельно.Потому что их не так уж и много,по несколько на каждый модуль.

Что-то более элегантное для записи данных в переменную данных в цикле чем этот код предложить можете?
ob_start();
include("tpl/news.tpl");
$content = ob_get_contents();
ob_end_clean();
 

Фанат

oncle terrible
Команда форума
еще раз.
ты не понимаешь отличие функционального блока от шаблона.
во всех шаблонизаторах блок итерируется внутри шаблона.
это и есть более элегантное решение, чем в include в цикле

я не видел твоего dle. но если оно тебя так привлекает, то почему бы тебе не взять интересующий код оттуда и перестать морочить нам голову?

-~{}~ 20.09.09 23:20:

блоки в dle описываются внтури файла, дятел
причем самым уродливым образом из всех возможных.
только время зря потратил, рассматривая эту говноподелку
 

vxc

Новичок
Я приводил DLE исключительно в качестве примера что на каждый модуль всего несколько файликов описывающих их внешний вид.А где и как генерируется сам код это уже другой разговор.

Вы на правах "местного" себя так некрасиво ведете?
 

Фанат

oncle terrible
Команда форума
я на правах человека, который задолбался в тысячный раз объяснять одно и то же.

вопросы еще остались?
 

vxc

Новичок
задолбались - не отвечайте, найдутся те кто не задолбались.

Вопросов нет.
 

Фанат

oncle terrible
Команда форума
несбыточные надежды
других ответов на этот свежеизобретенный велосипед все равно нету :)

проблема не в отвечании. проблема в понимании.
некоторые хотят понимать, а некоторые - нет.
 
Сверху