Как было обещано в предыдущей заметке, сегодня я расскажу о практических реализациях «движков» сайтов, созданных для разных задач, использующих разные технологии и имеющих различную стоимость, но служащих одной и той же цели — легкому и непринужденному обновлению веб-сайтов.
Первым пунктом сегодняшней программы будет «движок» под названием TreeGraph, созданный студией «Графит». Конечно, у каждой серьезной студии есть свой «движок», однако с TreeGraph мне приходилось работать «живьем» (и даже удалось заглянуть в его исходный код :-)). С сайта студии вы можете скачать презентацию TreeGraph (Adobe Acrobat, 1,5 Мбайт), из которой можно получить достаточно полное представление о системе. Я же расскажу здесь о тех особенностях TreeGraph, которые на меня произвели особое впечатление.
С технической точки зрения TreeGraph представляет собой пакет скриптов, написанных на PHP 4.0. Для хранения структуры сайта и текстов материалов используется база данных MySQL.
Самая важная и наиболее впечатляющая часть TreeGraph — это административный модуль, с помощью которого можно изменять структуру и содержание сайта. Он является многопользовательским, то есть поддерживает различные группы пользователей с разным уровнем прав на доступ к информации.
Очень хорошо продуман процесс добавления новых материалов (статей, новостей и т.п.). При разработке системы было учтено, что основными ее пользователями будут работники организаций-клиентов студии, зачастую не имеющие никакого представления об интернет-технологиях, в том числе и FTP и HTML, и использующие для подготовки материалов сайта даже не FrontPage, а Microsoft Word. Естественно, было бы нереально переучивать их, и поэтому система была сделана так, чтобы работать с ней могла бы даже секретарша, закончившая компьютерные курсы по Windows и Office. Единственное, что должен усвоить этот человек — сохранять файлы в Word нужно как веб-страницу, а не как обычный документ.
В остальном же добавление материалов никакими сложностями не отличается. Структура сайта отображается в виде дерева (отсюда — название системы: «TreeGraph»), очень похожего и по внешнему виду, и по функциональности на список папок в левой части окна Проводника Windows:
Зайдя в соответствующий раздел, пользователь нажимает кнопку «Добавить» и попадает в веб-форму. Там он должен ввести заголовок материала, а также выбрать текстовый или html-файл, который содержит текст материала (вместо указания имени файла пользователь может ввести текст самостоятельно), и нажать кнопку «Добавить».
Файл с указанным именем или введенный в форму текст загружается на сервер и анализируется скриптом. Если в тексте не обнаружены HTML-теги, то текст форматируется по простым правилам (например, пустая строка обозначает разделитель абзацев). Если же теги HTML присутствуют, то из текста удаляются те из них, которые позже генерируются TreeGraph'ом при сборке страниц (head, body, title, meta и т.п.), а также те, которые представляют из себя «мусор» визуальных редакторов (особенно много его в «веб-страницах», создаваемых Word'ом). После этого текст записывается в базу данных.
Очень интересно организована загрузка на сервер изображений и других двоичных файлов, ссылки на которые есть внутри html-документов. Если при анализе загружаемого на сервер текста обнаруживаются теги img и ссылки на файлы, которые должны находиться на сервере, то TreeGraph отображает веб-форму с полями для выбора имен файлов (по числу найденных картинок и ссылок). После того, как пользователь укажет имена соответствующих файлов, они загружаются на сервер и сохраняются в тех каталогах, которые указаны в тексте документа. То есть, если были обнаружены HTML-конструкции img src=/img/izo.gif и a href=/files/price.zip, то пользователю будет показана форма с двумя полями для имен файлов, первый из которых будет загружен в подкаталог img корневого каталога сайта, а второй, соответственно, в каталог files.
Конечно, добавление новых разделов сайта также не представляет никакой сложности. Интересно, что для каждого раздела можно указать его тип (на иллюстрации это — поле «Просмотр»), определяющий способ организации материалов этого раздела — например, «новости» или «фотогалерея». И таких типов разделов доступно более десятка!
Еще одна замечательная особенность TreeGraph — дополнительные модули. Это не крохотные скрипты-утилиты, а довольно мощные программы, некоторые из которых сами по себе «тянут» на серьезный коммерческий продукт. Это, например, система статистики посещений, с группировкой и сортировкой данных по различным критериям и представлением информации в табличной и графической формах; форум с большими функциональными возможностями и очень тщательно проработанным интерфейсом; поисковая система по сайту; внутренняя баннерообменная система; гостевые книги, голосования и т.п. Все это интегрировано с TreeGraph'ом, подключается и управляется прямо из административного модуля.
Что касается генерации веб-страниц по информации, содержащейся в базе данных, то TreeGraph не создает их непосредственно на диске сервера, страницы генерируются «на лету». Это, с одной стороны, очень удобно с точки зрения организации динамических страниц, в частности, интеграции системы сбора статистики и показа баннеров. С другой стороны, адреса страниц при этом выглядят как http://www.site.ru/main/?id=162 и http://www.site.ru/comm/form.phtml?id=147, что, в общем-то, не очень удобно, а иногда просто раздражает. Правда, решение этой проблемы предложили в Форуме E-notes.ru, но этот прием для «облагораживания» длинных и непонятных адресов не очень распространен среди веб-разработчиков.
При всех своих достоинствах любой «движок», созданный в профессиональной дизайн-студии — инструмент достаточно дорогой. Например, TreeGraph обойдется заказчику в лишние 1300 долларов; стоимость же, скажем, системы «Saitistika» компании «Individ» я вообще не берусь предположить, так как о ценах на этот «движок» на его сайте скромно умалчивается. Высокая цена, конечно, оправданна: на создание таких программных комплексов потрачено много человеко-часов, которые нужно окупить. Кроме того, приобретение «движка», пускай и относительно дорогого, позволяет клиенту в дальнейшем хорошо сэкономить на поддержке сайта: например, не нужно платить большие зарплаты специалистам по веб-технологиям, так как работать над обновлением сайта может любой человек, имеющий навыки обращения с браузером.