Table of Contents
Описание системы WebExpert
Content Management System (система управления содержанием) WebExpert – это комплекс программного обеспечения, позволяющий разрабатывать и поддерживать динамические сайты. Система позволяет
отделить управление контентом сайта от необходимости редактирования шаблонов страниц и избежать ошибок операторов с низкой квалификацией, связанных с вёрсткой страниц сайта и организацией документов и файлов на стороне сервера. Основой для любой CMS является веб-сервер и реляционная (в большинстве случаев) база данных.
В реализованной CMS системе используются свободно распространяемые технологии Apache, PHP, Mysql и Mnogosearch. В ядре системы заложены функции управления пользователями и правами пользователей, структурой сайта, разделения дизайна и информационного наполнения, управления различными типами материалов. Для ускорения работы используется предгенерация структуры сайта (директории) и “блочное” кэширование, т.е. при каждом обращении страница сайта собирается динамически, но из статических (закэшированных) фрагментов. Это позволяет снизить нагрузку на сервер и уменьшить время отклика.
В системе реализован интерфейс для создания модулей, выполняющих определенные функции. Это позволяет создать библиотеку модулей для использования на большинстве корпоративных сайтов. В настоящий момент реализованы стандартные модули “Форум”, “Баннерная система”, “Тесты”, “Поисковая системы” (используется программа Mnogosearch) и др. Наличие готовых решений позволяет значительно снизить время и затраты на создание новых сайтов.
В комлект поставки системы входят PHP-скрипты, дамп базы данных и руководство пользователя и разработчика.
Принцип работы системы
Сайты, использующие WebExpert состоят из 3 взаимосвязанных частей:
- База данных
- Административный интерфейс (бэкофис)
- Внешнее представление сайта (фронтофис)
В базе данных хранится структура и материалы сайта, информация интерактивов и служебная информация необходимая для работы системы. Изображения (сопровождающие картинки материала и т.д.) хранятся в файлах.
Бэкофис – это основной инструмент администраторов и операторов системы. Бэкофис, на сайтах с установленной системой администрирования, как правило, остается неизменным по своей структуре и внешнему виду. Изменения в основном сводятся к скрытию неиспользуемых функциональностей.
Функции бэкофиса:
- Изменение структуры и информационного наполнения сайта
- Работа с шаблонами и обработчиками
- Модерирование интерактивов всех типов
- Управление пользователями и правами пользователей
Фронтофис – внешний вид и функциональность фронтофиса определяется структурой, шаблонами и обработчиками, на каждом сайте они отличаются.
В системе сайт рассматривается как дерево рубрик (директорий), в рубриках размещаются материалы (файлы) или различные интерактивы. Все рубрики (директории) и материалы (файлы) предгенерируются на сайт. Первая страница сайта – это индекс корневой рубрики.
Содержание сайта генерируются с помощью пар “обработчик” (handler) и “шаблон” (template). Обработчик – это функция языка php , в которой извлекаются нужные данные из БД, создается и наполняется объект “Шаблон”. Шаблоны создаются на языке директив шаблонного “движка”. Тексты обработчиков и шаблонов сохраняются в базе данных и предгенерируются в файлы (для ускорения работы шаблонного “движка”).
Разделение внешнего представления и логики работы системы реализуется c использованием паттерна Model-View-Controller.
Суть этого паттерна состоит в том, чтобы отделить представление данных от доступа к ним. В паттерне выделяются три части системы: model (модель), являющаяся абстрактным хранилищем данных, view (представление) – абстрактный способ отображения информации клиенту и controller (контроллер) – часть, реализующая взаимодействие между моделью и представлением (бизнес-логику).
Моделью является набор классов PHP, который представляет логику работы с определенной сущностью (например, с материалами на сайта). View – HTML-шаблон, с использованием директив шаблонного ” движка ” . Данные в шаблон передаются контроллером – кодом PHP (обработчиком), который использует Model для извлечения данных.
Применение паттерна MVC решает следующие проблемы:
- код отделен от представления данных; таким образом, представление данных легко переработать, не затрагивая остальные части системы;
- хранилище данных может быть любым (как одной из DB, так и, например, XML-файлом); в общем случае легко можно реализовать набор универсальных data providers, получающих, изменяющих или добавляющих данные, используя value objects (объекты, содержащие информацию о данных (например, строку таблицы реляционной DB));
- меньше времени уходит на разработку приложения, так как сильно сокращается время, необходимое для тестирования;
- при разработке приложения можно параллельно вести разработку нескольких частей системы благодаря абстракциям, применяемым в контроллере
Из пары обработчик + шаблон(ы) создаются “страницы” (в странице может быть больше одного шаблона, например при генерации статьи на сайте может использоваться один обработчик и два шаблона – шаблон материала и шаблон версии для печати), действия и “типы рубрик”.
Для “страницы” определяются опции редактирования рубрики/материала в бэкофисе – опции могут быть назначены отдельно для страницы и для всего сайта. “Страницы” связываются с рубриками – страница для индекса рубрики и страница для материалов рубрики.
Созданный шаблонным движком страница индекса рубрики или материал сохраняется в файл (предгенерируются), либо сразу выводится на экран. В сохраненном в файл коде используются директивы php и поэтому расширение предгенерируемых файлов должно быть настроено в конфигурационном файле Apache как обрабатываемое PHP.
Пользовательская система состоит из пользователей, групп пользователей и прав пользователей. Права пользователей определяют то, что пользователь может видеть и редактировать в бэкофисе, права назначаются для групп пользователей. Пользователь может входить в любое количество групп, его права – это объединение прав групп, в которые он входит.