Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Proteus – шаблоны
 
 автор: antf   (13.12.2005 в 21:37)   письмо автору
 
 

Здравствуйте. В Proteus будет реализована следующая система шаблонов. Хотел бы услышать ваши мнения или альтернативные варианты.

Шаблон:

<html>
<head>
  <title>{site_title}</title>
  <META NAME='keywords' CONTENT='{site_keywords}'>
  <META NAME='description' CONTENT='{site_descr}'>
  <META HTTP-EQUIV='Content-Type' content='text/html; charset={gl_charset}'>


Функция, обрабатывающая шаблоны:
<?
function insert_template($tpl_file$vars)
  {
    global 
$conf_templates_path;
    
$tpl file_get_contents($conf_templates_path.$tpl_file);
    
$code $tpl;
    if(
is_array($vars))
    {
      foreach(
$vars as $entity => $value)
      {
        
$code str_replace($entity$value$code);
      }
    }
    return 
$code;
  }
?>


Вставка шаблона:

<?
  
print insert_template('head.htm', array("{site_title}"    => $site_title,
                                                         
"{site_keywords}" => $site_keywords,
                                                        
"{site_descr}"    => $site_descr,
                                                        
"{gl_charset}"    => $gl_charset));
  include(
'link_css.inc');
?>
</head>
<body>

   
 
 автор: Loki   (14.12.2005 в 10:15)   письмо автору
 
   для: antf   (13.12.2005 в 21:37)
 

Использую такую же точно.
Только со вставкой шаблона я работаю иначе - формирую массив в процессе исполнения кода и передаю его в качестве параметра в последней строке.
Ну и еще придется дробить шаблон на мелкие составляющие, так как внутри шаблона циклы не обрабатываются.

   
 
 автор: antf   (14.12.2005 в 16:07)   письмо автору
 
   для: Loki   (14.12.2005 в 10:15)
 

Допустим, я хочу сделать так, чтобы пользователь мог настраивать шаблон для каждой новостной ленты, элемента меню, гостевой книги, голосования ... отдельно. Тогда шаблоны придется хранить в базе для каждой новостной ленты. Меня интересует хранить ли шаблоны в тоже же таблице, где находятся общие настройки новостной ленты, или создать под это дело отдельную таблицы.

Дизайн БД в первом случае (колонки с постфиксом _tpl – шаблоны):



#новостная лента
CREATE TABLE news_bands (
  'id_band' INT(32) NOT NULL AUTO_INCREMENT,
  'title' VARCHAR(255),
  'news_per_page' INT,
  #новостная лента, обрамляющая таблица
  'news_main_tpl' MEDIUMTEXT,
  #шаблон отдельной новости
  'news_main_tpl' MEDIUMTEXT,
  #шаблон странички подробнее
  'news_more_tpl' MEDIUMTEXT,
  'id_lng' INT,
  PRIMARY KEY('id_band')
);



Дизайн БД во втором случае


#новостная лента
CREATE TABLE news_bands (
  'id_band' INT(32) NOT NULL AUTO_INCREMENT,
  'title' VARCHAR(255),
  'news_per_page' INT,
  'id_lng' INT,
  PRIMARY KEY('id_band')
);

CREATE TABLE news_bands (
  'id_tpl' INT(32) NOT NULL AUTO_INCREMENT,
  #новостная лента, обрамляющая таблица
  'news_main_tpl' MEDIUMTEXT,
  #шаблон отдельной новости
  'news_main_tpl' MEDIUMTEXT,
  #шаблон странички подробнее
  'news_more_tpl' MEDIUMTEXT,
  'id_band' INT,
  PRIMARY KEY('id_tpl')
);

   
 
 автор: antf   (14.12.2005 в 16:08)   письмо автору
 
   для: antf   (14.12.2005 в 16:07)
 

А какие выгоды дает Smarty по сравнению с этой системой?

   
 
 автор: Loki   (14.12.2005 в 16:21)   письмо автору
 
   для: antf   (14.12.2005 в 16:08)
 

А зачем их вообще хранить в базе? за что вы так дизайнеров не любите?:)) Ведь ему же удобнее иметь шаблон в виде файла, в который он может вносить правку (а может дизайнов у сайта будет несколько).

Со смарти не работал, но думаю что это как mysql по сравнению с файлами: все здорово, но для этого надо ее изучить:)

   
 
 автор: antf   (14.12.2005 в 20:02)   письмо автору
 
   для: Loki   (14.12.2005 в 16:21)
 

> А зачем их вообще хранить в базе? за что вы так дизайнеров не любите?:)) Ведь ему же удобнее
> иметь шаблон в виде файла, в который он может вносить правку (а может дизайнов у сайта будет
> (несколько).

> Со смарти не работал, но думаю что это как mysql по сравнению с файлами: все здорово, но для
> этого надо ее изучить:)

Почему не люблю? Люблю и уважаю, даже сам хочу стать дизайнером, но пока не получается :) Пока я только могу обеспечить, удобную работу дизайнера с системой. Фишка заключается в том, что шаблоны хранятся и в файлах, и в базе. Шаблоны, хранящиеся в файлах - это шаблоны, выбираемые по умолчанию. Процесс настройки шаблонов происходит так:

1) При создании элемента шаблоны из нужных файлов заполняют соответствующие столбцы таблицы.
2) После этого дизайнер может выбрать опцию шаблоны >> в настройках элемента (новостной ленты) и изменить их. Изменение коснуться только текущей новостной ленты и не затронут другие. Этим мы повышаем гибкость системы. К тому же шаблоны, хранимые в базе, удобно настраиваются через систему администрирования, как это и происходит в большинсве скриптов, называемых профессиональными.

PS Одновременно с шаблонами я создаю руководство для дизайнера, куда войдет описание шаблонов и подключаемых css-файлов. И после этого я не люблю дизайнеров... :)) Такого руководства нет даже в системе NetCat.

PPS В руководство для программиста войдет описание модулей и принципы наименования переменных.

   
 
 автор: Loki   (14.12.2005 в 20:36)   письмо автору
 
   для: antf   (14.12.2005 в 20:02)
 

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

   
 
 автор: antf   (14.12.2005 в 20:51)   письмо автору
 
   для: Loki   (14.12.2005 в 20:36)
 

Так а html-файлы никто не убирает :). В базу заносится их содержимое :). Шаблоны базы лишь повышают настваиваемость системы. А если пользователь захочеТ, чтобы формат одной новостной ленты отличался от другой? Поскольку мы делаем шаблоны для элементов: новости, голосования, фотогалереи, кода получается совсем мало.

   
 
 автор: isset   (14.12.2005 в 20:44)   письмо автору
 
   для: antf   (14.12.2005 в 20:02)
 

А знаете - опытные программисты считают самыми тупыми шаблонами у netcat...

   
 
 автор: antf   (14.12.2005 в 20:53)   письмо автору
 
   для: isset   (14.12.2005 в 20:44)
 

:)

   
 
 автор: antf   (14.12.2005 в 20:56)   письмо автору
 
   для: antf   (14.12.2005 в 20:53)
 

А кстати, кто-нибудь смотрел EzPublish, там какая-то особая система шаблонов. Мне ее так и не удалось установить.

[url]www.ez.no[/url]

   
 
 автор: glsv (Дизайнер)   (15.12.2005 в 00:46)   письмо автору
 
   для: antf   (14.12.2005 в 20:02)
 

>PS Одновременно с шаблонами я создаю руководство для дизайнера, куда войдет описание шаблонов и подключаемых css-файлов. И после этого я не люблю дизайнеров... :)) Такого руководства нет даже в системе NetCat.

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

   
 
 автор: cheops   (15.12.2005 в 13:12)   письмо автору
 
   для: glsv (Дизайнер)   (15.12.2005 в 00:46)
 

>Посыплю голову пеплом и признаюсь, что я также не люблю
>дизайнеров :), потому что в распространяемом нами форуме
>также нет описания css.
Однако такое описание имеется в PHP 5. Практика создания Web-сайтов.

   
 
 автор: antf   (15.12.2005 в 20:54)   письмо автору
3.8 Кб
 
   для: cheops   (15.12.2005 в 13:12)
 

Я только хотел это сказать... Вам и шаблоны не нужны, поскольку ваши приложения подробно описаны в книгах. С вас даже их не спрашивают. У меня уже несколько раз их спросили, надо было сразу написать, что их нет, а то бедные люди, наверняка замучались искать :)

Вот так будет выглядеть настройка шаблонов для новостных лент (см. прикрепленный файл). Html-кода совсем немного.

А кстати, вы не знаете какой-нибудь невизуальный редактор html с подстветкой синтаксиса для редактирования шаблонов. Я бы его подключал наподобие Spaw. Может ли такой редактор существовать в природе?

   
 
 автор: antf   (18.12.2005 в 13:17)   письмо автору
 
   для: antf   (15.12.2005 в 20:54)
 

А прикольно с шаблонами.
Раньше мне надо было разместить на сайте две группы баннеров, первая группа ссылается на партнерские сайты, вторая – на страницы этого же сайта. Ссылки первой группы должны были открываться в новом окне, а ссылки второй – в том же окне. Я думал для решения этой проблемы создать особый столбец с указанием в каком окне, в этом или в новом должна открываться ссылка баннера. А теперь можно просто убирать/вставлять параметр target, редактируя шаблон для каждой группы баннеров. И вообще шаблоны очень сильно повышают гибкость и настраиваемость системы: например, одну группу случайных фраз выделяем синим цветом, другую красным, можно вставить дополнительный текст для элемента... Система на порядок выиграет при такой системе шаблонов.

   
 
 автор: Loki   (18.12.2005 в 22:03)   письмо автору
 
   для: antf   (18.12.2005 в 13:17)
 

>шаблоны очень сильно повышают гибкость и настраиваемость системы
но в той же степени снижают читабельность кода - ничто не дается бесплатно:)

   
 
 автор: antf   (19.12.2005 в 13:02)   письмо автору
 
   для: Loki   (18.12.2005 в 22:03)
 

Я бы не сказал...
Любой имеет модуль системы организован так:

1) Сначала мы добываем нужные данные из базы, делаем необходимые вычисления, формируем нужные переменные.
2) Обрабатываем шаблоны выводим результат.

Если не мешать код этапов 1 и 2 все выглядит очень цивильно. Вот мешанина html и php может произвести ужасное впечатление.

Я умудрился сделать такие шаблоны, что их суммарный объем равен примерно 10кб. Для сравнения шаблоны minibb весят 164кб. Такой маленький размер объясняется тем, что шаблоны относятся не к страницам, а к отдельным элементам: формам, голосованиям, фотогалереям, гостевым книгам. Есть и основные шаблоны, которые определяют структуру сайта.

   
 
 автор: Loki   (19.12.2005 в 13:49)   письмо автору
 
   для: antf   (19.12.2005 в 13:02)
 

А я вот хочу постепенно двигаться к усложнению шаблонов. Первым делом хочу реализовать циклы внутри шаблона. Но тут, скорее всего, придется городить двумерные массивы.

   
 
 автор: antf   (19.12.2005 в 14:46)   письмо автору
 
   для: Loki   (19.12.2005 в 13:49)
 

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

   
 
 автор: Loki   (19.12.2005 в 15:13)   письмо автору
 
   для: antf   (19.12.2005 в 14:46)
 

Ну тут вы немного передергиваете: богатый функционал сам по себе подразумевает сложность. Вопрос в том, что эту сложность можно переложить как на программиста, так и на пользователя. В первом случае, можно эту сложность раскидать между различными модулями программы (простой код -> больше возни с шаблонами и пр.)
В общем, я счититаю это заблуждением. Функционал=сложность.
В общем, спор из разряда теологических, так что предлагаю ограничится обменом мнениями:)

   
 
 автор: Ollegon   (28.12.2005 в 07:58)   письмо автору
 
   для: antf   (19.12.2005 в 14:46)
 

Я пока лишь разбираюсь с системой Proteus, я не php-кодер, но зато "опытный" :) пользователь различных КМС. Сама система мне очень нравиться, работа с шаблонами тоже пока не вызывает сложностей, но есть одно "но"... Пока не реализована возможность быстрой смены дизайна, т.е. "темы оформления". Хотя хз... может и стоит отойти от "тем" для развития фантазии дизайнера? ;) отказаться от "тем" как таковых?

   
 
 автор: antf   (28.12.2005 в 13:54)   письмо автору
 
   для: Ollegon   (28.12.2005 в 07:58)
 

А что вы имеете в виду под быстрой сменой дизайна? Для этого нужно всего лишь изменить шаблоны или нужно что-то еще?

   
 
 автор: Loki   (28.12.2005 в 14:03)   письмо автору
 
   для: antf   (28.12.2005 в 13:54)
 

Может имелась ввиду возможность держать несколько шаблонов для каждого элемента?

   
 
 автор: Ollegon   (28.12.2005 в 15:44)   письмо автору
 
   для: antf   (28.12.2005 в 13:54)
 

Закроем тему:) Ибо мне понравился твой подход к шаблонам. С ними легко разбираться. Просто в других КМС темы оформления могут создать спецы, а простой смертный для дизайна своего сайта ищет подходящую тему, ибо создать свою "тямы-ума-знаний" не хватает. Здесь же всё легко, если делал сам сайты на чистом хтмл, то сделать дизайн на Proteus реально каждому. Тем самым мы решаем главную проблему популярных КМС - одинаковость по внешнему виду.

PS Я постараюсь притащить двух своих друзей, оба прекрасно ориентируются в КМС-ах и владеют php. Один из них грамотно делает ЧПУ, другой системы дизайна. Если они заинтересуются то у Proteus-a высокие шансы выскочить в лидеры.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования