Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

шаблоны - help!!!

382
06 января 2004 года
dodger
164 / / 07.02.2003
Скажу сразу - с шаблонами ниразу не заморачивался - особо не было необходимости. Но вот необходимость назрела - нет дизайна, сначалатребуют код. А потом только структуру и дизайн делать будут. И вот я никак не могу понять в этих шаблонах. Допустим я знаю, что будет страница с формой. В форме будет три поля: login, password, e-mail. Как располагаться эти поля будут - не известно.....Так вот, как же мне с помощью шаблонов задать обработчик этой формы? (Форма будет проверять имя, пароль и мыло, и соответсвенно пропускать или нет пользователя на сайт - система аутентификации).
Не мог бы кто-нибудь со мной повозиться по шагам, так сказать. чень надеюсь на помощь.
291
07 января 2004 года
gufy
703 / / 08.01.2003
давай еще раз задачу с формой помедленнее.
какая тебе разница как будут располагаться поля формы, задаешь дизайнерам-кодерам имена полей, и все пучком.
382
07 января 2004 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by gufy
давай еще раз задачу с формой помедленнее.
какая тебе разница как будут располагаться поля формы, задаешь дизайнерам-кодерам имена полей, и все пучком.


Тут, я согласен, не очень удачный пример привел. Допустим, с этой формой все понятно. Прошли аутентификацию, скрипт обработался, и на следующей странице должны выводится какие-то данные, например, име вошедешего, кол-во денег на счету еще чего-нибудь. Все это берется из базы данных. Но, опять же, в каких местах и что будет располагаться - неизвестно. К тому же после аутентификации, включается сессия и работает на всех остальных страницах. Как это сделать? Как записать это в шаблоны, чтобы обрабатывалось все что нужно скриптом и потом выводилось в нужных местах. Чтобы вне зависимости от дизайна можно было этот шаблон применять.

1.9K
08 января 2004 года
HabaHaba
172 / / 24.12.2003
Привет.
Шаблоны это вообще штука полезная!
Редизайн всякий делать полегче да и вообще, дизайн от кода отделять это есть хорошо.
Лучше всего, не заморачиваться и взять какой-нибудь готовый шаблонный энжин -- их море.
Например, в PEAR:HTML есть несколько штук.
Если всё же очень уж хочется написать свой, то вот небольшой примерчик очень простого парсера шаблонов:
<?
Код:
function ParseTemplate($Template,$Data=array(), $beg_tag = "\<\%", $end_tag = "\%\>") {        
          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--
Форум, гад пожрал слэши, пришлось поправить...
382
08 января 2004 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by HabaHaba
Привет.


Спасибо за ответ. Как я понял, можно и не пользоваться шаблонами. Можно просто оговорить с дизайнерами/кодерами названия переменных и написать отдельные php-скрипты. Потом, когда они будут кодить и дизайнерить поросить их сделать include "script.php" и в нужные места врисовать переменные в виде <? echo $name; ?> и все. Никаких проблем.... И тгда не очень понятно, зачем же все-таки эти шаблоны с такими сложностями обработки и гаписания парсера?

291
08 января 2004 года
gufy
703 / / 08.01.2003
о да детка...
предлагаю новый раздел форума - теория веб-программирования.:)
вообще я не понимаю в чем проблема. у тебя данные хранятся в сессии - ты знаешь все о том, кто перед тобой. если что-то дополнительное типа форм, то пожалуйста - $_post всегда к твоим услугам. а нужно всего лишь договориться в каком месте html-страницы вставить ту или иную переменную сессии или $_POST/$_GET.
это по сути то же что предложил habahaba, только без теоретизирований
имхо, конечно
1.9K
08 января 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by dodger

И тгда не очень понятно, зачем же все-таки эти шаблоны с такими сложностями обработки и гаписания парсера?


Ну... По идее, можно и без CSS верстать, только вот неудобно это, если нужно что-нибудь глобально изменить.
Шаблоны во первых, помогают ПОЛНОСТЬЮ отделить дизайн от программирования, что делает код и структуру приложения более прозрачной а во вторых реально облегчают жизнь при доводке "фронт-офиса" (а вот сюда поставьте васильковую пиктограму а вот сюда попу с ручкой и.т.д.).

382
08 января 2004 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by HabaHaba

Ну... По идее, можно и без CSS верстать, только вот неудобно это, если нужно что-нибудь глобально изменить.
Шаблоны во первых, помогают ПОЛНОСТЬЮ отделить дизайн от программирования, что делает код и структуру приложения более прозрачной а во вторых реально облегчают жизнь при доводке "фронт-офиса" (а вот сюда поставьте васильковую пиктограму а вот сюда попу с ручкой и.т.д.).


Ну, с CSS - все понятно, там включил его в начале каждой странице - и вперед, все работает. А тут...
какая разница писать:

 
Код:
<title><?echo $title;?></title>

или
 
Код:
<title>{title}</title>

Я не придираюсь, я просто хочу увидеть, где реально это нужно?? Конкретный пример.
1.9K
08 января 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by dodger
какая разница писать:


Такая, что если у тебя КОНЦЕПТУАЛЬНО принятно писать php-код смешивая с html, то рано или поздно возникнет соблазн написать туда какой-нибудь if или case или ещё что-нибудь. А потом пойдет-поедет...
И вообще, вот прикинь, что будет проще дизайнеру?
Следить за точкасзапятой, писать лишее echo (кстати, в этом случае подошло бы "=") или поставить только 2 скобки?
Ну и вопрос безопасности/разделения прав до кучи..
В общем, если разговор идет о крупном проекте с коллективной разработкой, то лучше бы использовать шаблоны а если это обычный корпоративный сайтик который делаешь ты, дизайнер и верстальщик то вполне хватит и "эхов" :)

382
08 января 2004 года
dodger
164 / / 07.02.2003
Цитата:
Originally posted by HabaHaba
обычный корпоративный сайтик который делаешь ты, дизайнер и верстальщик то вполне хватит и "эхов" :)


Понятно, это для удобства и для крупных проектов. Спасибо за разъясение и терпение :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог