Приветствую! Пытаюсь писать что-то в стиле CMS, что-то в стиле Joomla!. Встретил проблему сборки окончательного HTML и выдачу его в браузер. Что имеем: 1. Файл template.php с HTML-кодом, который с PHP-вставками - каркас отображения сайта 2. Файл view.php, который шаблон компонента тоже с PHP-вставками 3. Сборочную фабрику (в разработке, как раз насчет нее и тема). Дык вот, в шаблоне есть вставка к примеру <component />, на ее место должен встать уже пропущенный через интерпретатор php html-код из файла view.php. Потом весь этот код должен быть пропущен через интерпретатор и отдан браузеру. Просто сам алгоритм сборки не могу додумать. К примеру возьмем так - читаем шаблон построчно, если находим элемент component, инклюдим туда view.php. Получаем собранный код с php-вставками. Как теперь его сынтерпретировать и отдать в браузер? Может как-то по другому? Знаю что непонятно объяснил, но понятней чего-то не получается(( Т.к. все мысли заняты решением этой задачи
Объясню: К примеру есть такой template.php PHP: <html> <head> <title><?php echo $title; ?></title> </head> <body> <content /> </body> </html> И такой view.php PHP: <div> <?php echo $content; ?> </div> Нам нужно интерпретировать код в нужном месте, т.к. там уже создано рабочее окружение для правильной интерпретации. Можно сделать так PHP: <?php $template = file('temlpate.php'); replace_my_tag('<content />', 'view.php'); // Заменяем тэг содержимым файла view.php Теперь в $template у нас лежит HTML-код с PHP-вставками. Вот тут задача, как его заинтерпретировать перед тем как отдать пользователю? С помощью eval()? Не вариант. Есть еще один бредовый способ, который взбрел в мою больную голову: Пишем $template в файл, и делаем редирект на него. Но это крайне бредовый вариант. Вот примерно такая задачка
Мне не нужен комбайн. Всего лишь одна конкретная задача. Знаете - подскажите, не знаете - не надо умничать. Всё просто.
ты хоть читал тему по ссылке? при чём тут комбайны? я думал, что это то, что тебе как раз было нужно, вот и подсказал PHP: <?php ob_start(); include($template_path); $content = ob_get_contents(); ob_end_clean(); ?> помогать больше не хочется
Neka, view.php можно просто инклудить в скрипт, который собирает всё в кучу ("сборочная фабрика"). View.php при этом исполнится, а результат его работы собрать функциями ob_start, ob_get_contents и ob_end_clean. Далее в твоём шаблоне можно заменить поле <content /> на результат работы модуля view.php функцией str_replace.
Когда я перешел по ссылке почитал, потом рекурсией пошарился по ссылкам, я абсолютно запутался. Я понимаю что кэшинг - это круто, но... Это сказано в общем, т.е. наперед. Если вы подумали, что относится к Вам - извиняюсь. Да, я сделал это через ob_stаrt, но не из той темы огромной вложенности (там я видел этот кусок кода, но не понял к чему он, т.к. еще не приходилось работать с ob_ функциями). Там я просто напросто запутался еще куда больше. Спасибо всем! PS Апельсин, оценка работ кружка рисования для отсталых детей где-то в соседней теме