шаблоны - help!!!
Не мог бы кто-нибудь со мной повозиться по шагам, так сказать. чень надеюсь на помощь.
какая тебе разница как будут располагаться поля формы, задаешь дизайнерам-кодерам имена полей, и все пучком.
давай еще раз задачу с формой помедленнее.
какая тебе разница как будут располагаться поля формы, задаешь дизайнерам-кодерам имена полей, и все пучком.
Тут, я согласен, не очень удачный пример привел. Допустим, с этой формой все понятно. Прошли аутентификацию, скрипт обработался, и на следующей странице должны выводится какие-то данные, например, име вошедешего, кол-во денег на счету еще чего-нибудь. Все это берется из базы данных. Но, опять же, в каких местах и что будет располагаться - неизвестно. К тому же после аутентификации, включается сессия и работает на всех остальных страницах. Как это сделать? Как записать это в шаблоны, чтобы обрабатывалось все что нужно скриптом и потом выводилось в нужных местах. Чтобы вне зависимости от дизайна можно было этот шаблон применять.
Шаблоны это вообще штука полезная!
Редизайн всякий делать полегче да и вообще, дизайн от кода отделять это есть хорошо.
Лучше всего, не заморачиваться и взять какой-нибудь готовый шаблонный энжин -- их море.
Например, в PEAR:HTML есть несколько штук.
Если всё же очень уж хочется написать свой, то вот небольшой примерчик очень простого парсера шаблонов:
<?
preg_match_all( "/$beg_tag(.*?)$end_tag/x", $Template, $matches);
$matches=$matches[1];
for ($i=0;$i<count($matches);$i++) {
$replacement=$Data[$matches[$i]];
if ($replacement=='')
$replacement=$Data["/" . str_replace( "\\", "", $beg_tag) . $matches[$i] . str_replace( "\\","", $end_tag) . "/"];
if ($replacement=='')
$replacement=$GLOBALS[$matches[$i]];
$Template=preg_replace("/{$beg_tag}{$matches[$i]}{$end_tag}/",$replacement,$Template);
}
return $Template;
}
$tbl_top = "<table border=1 bgcolor='#CCCCCC' WIDTH=300>";
$tbl_head = "<tr><td colspan=2 align=center><h3><%header%></h3></td></tr>";
$tbl_row1 = "<tr><td bgcolor='#FFFFFF'><%name%></td><td bgcolor='#FFFFFF'><%value%></td></tr>";
$tbl_row2 = "<tr><td bgcolor='#000000'><font color='#FFFFFF'><%name%></font></td>
<td bgcolor='#000000'><font color='#FFFFFF'><%value%></font></td></tr>";
$tbl_button = "</table>";
$rowset = array();
for ($i=0;$i<=50;$i++) {
$rowset[$i]["name"]="Имя ".$i;
$rowset[$i]["value"]="Значение ".$i;
}
print ParseTemplate($tbl_top);
print ParseTemplate($tbl_head,array("header"=>"Заголовок"));
for ($i=0;$i<count($rowset);$i++) {
if ($i%2==0) {
print ParseTemplate($tbl_row1,$rowset[$i]);
} else {
print ParseTemplate($tbl_row2,$rowset[$i]);
}
}
print ParseTemplate($tbl_button);
?>
Написал за 15 минут, поэтому до конца не оттестирован -- может и заглючит... Хотя, чему тут глючить? :)
Общий смысл:
1. Берем html шаблон и некими метатэгами расставляем там переменные.
2. Берем данные (ассоциативный массив. Может быть результатом функции mysql_fetch_array()) и расставляем по местам эти переменныые в шаблоне
3. Печатаем результат
Конечно, более глобальный шаблонизатор работает посерьезней, но для мелочи подойдет и такая вот простая функция.
ОЧЕНЬ подробно про шаблоны и движки
--update--
Форум, гад пожрал слэши, пришлось поправить...
Привет.
Спасибо за ответ. Как я понял, можно и не пользоваться шаблонами. Можно просто оговорить с дизайнерами/кодерами названия переменных и написать отдельные php-скрипты. Потом, когда они будут кодить и дизайнерить поросить их сделать include "script.php" и в нужные места врисовать переменные в виде <? echo $name; ?> и все. Никаких проблем.... И тгда не очень понятно, зачем же все-таки эти шаблоны с такими сложностями обработки и гаписания парсера?
предлагаю новый раздел форума - теория веб-программирования.:)
вообще я не понимаю в чем проблема. у тебя данные хранятся в сессии - ты знаешь все о том, кто перед тобой. если что-то дополнительное типа форм, то пожалуйста - $_post всегда к твоим услугам. а нужно всего лишь договориться в каком месте html-страницы вставить ту или иную переменную сессии или $_POST/$_GET.
это по сути то же что предложил habahaba, только без теоретизирований
имхо, конечно
И тгда не очень понятно, зачем же все-таки эти шаблоны с такими сложностями обработки и гаписания парсера?
Ну... По идее, можно и без CSS верстать, только вот неудобно это, если нужно что-нибудь глобально изменить.
Шаблоны во первых, помогают ПОЛНОСТЬЮ отделить дизайн от программирования, что делает код и структуру приложения более прозрачной а во вторых реально облегчают жизнь при доводке "фронт-офиса" (а вот сюда поставьте васильковую пиктограму а вот сюда попу с ручкой и.т.д.).
Ну... По идее, можно и без CSS верстать, только вот неудобно это, если нужно что-нибудь глобально изменить.
Шаблоны во первых, помогают ПОЛНОСТЬЮ отделить дизайн от программирования, что делает код и структуру приложения более прозрачной а во вторых реально облегчают жизнь при доводке "фронт-офиса" (а вот сюда поставьте васильковую пиктограму а вот сюда попу с ручкой и.т.д.).
Ну, с CSS - все понятно, там включил его в начале каждой странице - и вперед, все работает. А тут...
какая разница писать:
или
Я не придираюсь, я просто хочу увидеть, где реально это нужно?? Конкретный пример.
какая разница писать:
Такая, что если у тебя КОНЦЕПТУАЛЬНО принятно писать php-код смешивая с html, то рано или поздно возникнет соблазн написать туда какой-нибудь if или case или ещё что-нибудь. А потом пойдет-поедет...
И вообще, вот прикинь, что будет проще дизайнеру?
Следить за точкасзапятой, писать лишее echo (кстати, в этом случае подошло бы "=") или поставить только 2 скобки?
Ну и вопрос безопасности/разделения прав до кучи..
В общем, если разговор идет о крупном проекте с коллективной разработкой, то лучше бы использовать шаблоны а если это обычный корпоративный сайтик который делаешь ты, дизайнер и верстальщик то вполне хватит и "эхов" :)
обычный корпоративный сайтик который делаешь ты, дизайнер и верстальщик то вполне хватит и "эхов" :)
Понятно, это для удобства и для крупных проектов. Спасибо за разъясение и терпение :)