|

Вебмастер, обновляющий страницы сайта вручную (не имеет значения
каким редактором — ФронтПейджем или Блокнотом), напоминает
Папу Карло, скрючившегося в своей каморке и строгающего тысячного
Буратино. При добавлении нового материала на сайт ему нужно
отформатировать текст в HTML, открыть файл с оглавлением раздела,
найти нужный кусок кода, отредактировать его; открыть файл
страницы «Новости», найти нужный кусок кода, отредактировать
его; открыть файл главной страницы, найти нужный кусок кода,
отредактировать его… И все это — только при самой простой
структуре сайта. В сложном проекте публикация нового материала
может потребовать гораздо более сложных манипуляций.
Потребность изменить структуру сайта ставит под угрозу само
его существование. При более-менее сложном проекте бывает
легче полностью переделать сайт заново, чем долго и занудно
копаться в его «внутренностях».
Рано или поздно такая ситуация надоедает. Хочется, чтобы
обновление сайта было простой операцией, а не напоминало по
своим масштабам запуск «шаттла». Хочется, чтобы при изменении
структуры сайта все его страницы автоматически менялись точно
так же, как обновляются формулы в Exсel'е у тети Зины из бухгалтерии,
когда она меняет курс доллара в одной ячейке. В конце концов,
хочется вообще забыть про веб-редакторы и публиковать на сайте
обычный текст, не заботясь о том, каким образом он превратится
в HTML.
Единственный эффективный путь решения проблемы — применение
«движка», обеспечивающего легкое и непринужденное обновление
сайта.
Основной принцип работы такого программного механизма — это,
во-первых, разделение структуры сайта, его контента (содержания)
и оформления, а во-вторых, организация взаимосвязи между ними.
В этом случае легко добиться того, чтобы при изменении какого-то
элемента сайта все остальные элементы также менялись. Если
же дизайн сайта и его содержание свалены в кучу (а так и бывает,
если страницы создаются вручную в веб-редакторе), а структура
вообще не зафиксирована где-либо (то есть просто на диске
веб-сервера вебмастером созданы соответствующие каталоги и
в них записаны файлы), то создать надежно работающий программный
«движок», который мог бы четко «понять», как именно нужно
переделать сайт в связи с изменением одного из элементов,
попросту невозможно.
Кто-то из читателей, возможно скажет: «Так ведь можно сделать
так: «шапка» и «подвал» страниц хранятся в отдельных файлах
и просто вставляются в страницы с помощью SSI-инструкций.
Таким образом, получается, что дизайн и содержание отделены
друг от друга без всяких движков!»
Все не так просто. Во-первых, полного разделения дизайна
и контента в данном случае не происходит: текст материалов
все равно форматируется с помощью HTML. Можно, конечно, форматировать
текст с помощью SSI-инструкций, но тогда писать текст будет
слишком утомительно (помните, запуск «шаттла»?). Во-вторых,
не происходит фиксации структуры сайта: файлы веб-страниц
по-прежнему лежат в созданных для них каталогах, и для добавления
нового материала нужно создать новый файл, прописать в него
SSI-инструкции, а затем править файлы index.html для разделов
сайта и главной страницы — в общем, все те же игры в Папу
Карло.
|

Итак, если попытаться построить обобщенный
«портрет» «движка» для веб-сайта, то получится такая картина.
Структура сайта (список разделов и список
содержащихся в них материалов), шаблоны дизайна и текст
материалов сайта содержатся в базе данных, размещенной на
веб-сервере. Файлы изображений и другие двоичные файлы могут
также храниться в базе данных, а могут размещаться просто
в отдельных каталогах на диске сервера.
Для изменения структуры сайта и его содержания
обычно предусматривается специальный веб-интерфейс. С помощью
него, например, можно добавлять новые разделы и изменять
или удалять уже существующие. Для добавления нового материала
нужно ввести в поля формы его название, выбрать раздел сайта,
к которому он будет относиться, и сделать copy+paste текста
нового материала в форму. Веб-интерфейсы некоторых «движков»
позволяют, помимо ввода текста, просто загрузить соответствующий
текстовый файл на сервер и затем уже сами извлекают из него
всю нужную информацию.
После того, как в базе данных произведены
изменения (например, отредактирована структура сайта или
добавлен новый материал), вебмастер нажимает соответствующую
кнопку, запускающую программу (скрипт) обновления, перегенерирующую
страницы сайта. Как вариант, программа обновления может
запускаться веб-сервером автоматически, через определенные
промежутки времени. Это может быть полезно, если содержание
сайта обновляется постоянно, и не только веб-мастером проекта,
но и посетителями (например, всевозможные каталоги — ссылок,
программ, вакансий, объявлений и т.п.).
Скрипт обновления читает информацию из
базы данных, анализирует структуру сайта, создает на диске
сервера каталоги (если они не были созданы ранее) для разделов
и генерирует в них страницы, собранные из текста материалов
и шаблонов дизайна, хранящихся в базе данных. В некоторых
«движках» скрипт не создает файлы на диске, а генерирует
страницы «на лету» по запросам посетителей: в этих случаях
URL'ы страниц выглядят не как www.site.ru/razdel/material.html,
а примерно как www.site.ru/index.php3?section=razdel&page=material.
Не слишком «красиво», но это уж как решат разработчики и
их заказчики.
Хранение структуры, шаблонов дизайна и
текстов в базе данных позволяет легко оснастить сайт функцией
поиска, картой разделов (так называемая «карта сайта»),
а также, например, дает возможность нагенерировать сколько
угодно версий сайта: различного оформления — текстовую,
для тех, кто смотрит сайт на экране сотового телефона, стандартную,
flash-версию; различной ширины — стопроцентной, фиксированной;
оптимизированные под разные браузеры — последнюю бета-версию
Microsoft Internet Explorer, Netscape Navigator 1.0 и т.д.
Без проблем решается вопрос альтернативного представления
информации, например, в виде «версий для печати». В базе
данных можно хранить не только текст материалов сайта, но
и записи гостевых книг и форумов, результаты опросов, статистику
посещений и т.п., легко интегрируя их в информационное наполнение
сайта.
В следующей заметке я расскажу о двух совершенно
разных практических реализациях «движков» для веб-сайтов:
универсальной и очень мощной разработке профессиональной
дизайн-студии и простом, но эффективном механизме для небольших
контент-проектов.
|
|