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