Пишу движок, в котором PHP преобладает над вёрсткой, а весь вывод происходит через echo. Появилась нужда в отделении кода от вёрстки, хочется придумать какой-нибудь простой и удобный способ как для меня, так и для дизайнера. Пока единственное что приходит в голову это вот: HTML: <!-- файл вёрстки template.htm выглядит например так --> <div "navigation"> <!-- row1 --> </div> PHP: <?php // $row - это например список ссылок, вытащенный из бд в цикле, при помощи php $tpl=file_get_contents('template.htm'); $tpl=str_replace("<!-- row1 -->", $row, $tpl); echo $tpl; ?> Единственное что здесь смущает, это то что понадобится много htm-файлов, т.к. один php-файл может иметь в себе несколько страниц. Собссна, если кто-то знает, или активно использует ещё какие-то методы разделения кода и вёрстки, прошу ими поделиться.
Почитай про MVC-модель, иначе то что ты со своим дизайнером лепишь будет нечитабельно для вас уже через месяц.
Читал я про MVC-модель, всё у нас есть - и M, и V, и C. Сейчас viewer представляет собой набор php-функций типа "show_header", "show_footer" и т.д. В принципе, это уже читабельно, но для дизайнера там всё-равно есть всякие лишние "штуки". Так что, хочется провести эту границу как-то более чётко.
Значит плохо читал. Посмотри как это делается во фреймворках типа зенда и ийй. Общий вид сайта будет просто версткой, где ты просто понапихаешь конечных переменных, например экранируя их через @, дабы не было предупреждений. От дизайнера тут вообще ничего практически не потребуется понимать - просто объяснишь ему где выводятся контент, меню и т.п. Это некоторыми местами может и примитивно, но в отличие от постоянных вызовов ф-ий хедера, футера и т.д. - удобство как для тебя, так и для дизанера.
А написав таким способом основной функционал, ты сможешь вообще не париться в дальнейшем с типичными сайтами - дают дизайн, проставил переменные на вывод и работа закончена.
Не думаю, что большое количество htm файлов как то уменьшит производительность твоего сайта, в фреймворках, это например норма. Для каждого контролера свой вид. А вот в CMS там как раз все на единичных(общих) файлах и заложена функциональность. Так что не имхо не парься, или бери шаблонизатор (Smarty) чтобы не изобретать велосипед, или мудри с htm шаблонами
PHP: <?php class Template { protected $data = array(); ... public function render($template) { exctract($this->data, EXTR_SKIP); require($path . $template . ".php"); } } На вот тебе шаблонизатор
Если ты имеешь ввиду, что делаешь что-то типа PHP: <?php $username = 'Vasya'; echo "<h1>$username</h1>"; то лучше делай PHP: <?php $username = 'Vasya'; ?> <h1><?=$username?></h1> <?php ... ну а вообще, php - сам по себе шаблонизатор (эта фраза уже была написана 100500 раз на этом форуме). Поэтому нет ничего страшного в таком подходе: PHP: <?php $username = 'Vasya'; include 'username.tpl'; где в t_username.tpl: PHP: <h1><?=$username?></h1> Но в этом случае переменные шаблона находятся в глобальной области видимости. Поэтому, чтобы там не было лишних переменных, стоит запихнуть это в функцию, или в класс как MiksIr показал.