
Explay CMS — это бесплатная система управления социальными сетями. Базовые возможности позволяют организовать полноценную блого-социальную сеть или сообщество.
О движке
Скорость разработки
Третья версия Explay CMS рассчитана в первую очередь на разработчиков. Для хорошей жизни которых, было написано что-то типа фреймворка — ядро. Только в отличие от обычного фреймворка, ядро устанавливает жесткие рамки структуры и написания бизнес-логики, а так же берет на себя 90% рутинной работы. Для того, чтобы понять о какой «рутине» идет речь, надо сказать, что в системе использован принцип ORM, т.е., грубо говоря, всё основано на работе с объектами. Ядро берет на себя обязанности выборки объектов из БД и кеша, сохранении и создании новых объектов. Таким образом разработчику не требуется знания SQL или основ работы с движком кеширования (забегая вперед скажу, что ему даже не нужно знать какой шаблонизатор используется) и написание модуля занимает очень мало времени.
Настраиваемые поля
В основе третьей версии Explay лежит идея — дать возможность разработчикам сайта создавать свои поля для статей, пользователей и всего остального. В связи с этим появилось три основополагающих термина: «объект», «тип объекта» и «поле». Каждый «объект» является представителем своего «типа», а каждый тип описывают «поля» (в последствии свойства самого объекта). Как Вы понимаете, для создания нового свойства, например, для пользователя, достаточно создать новое поле, и затем это свойство/поле сразу же будет доступно в форме редактирования профиля. Если пойти дальше, то без проблем можно создать новые типы публикаций в блогах, например, подкасты или опросы. Эта тема достойна отдельной статьи, поэтому я не буду в нее сейчас углубляться.
Функцию создания новых полей предполагается ввести в админпанели, но, к сожалению, ее еще нет, она обязательно появится в версии 3.1.
Форматы
Пожалуй опущу абзац про ООП и MVC и перейду сразу к вкусненькому — форматы. Форматы — это концептуальная идея, суть которой в том, что сайт может отдавать контент одной и той же страницы в разных форматах (HTML, XML или даже YML). Эта идея пришла мне в голову, когда я решал, как устроить RSS: дописывать модули и создавать новые шаблоны мне было лень, и я пришел к выводу, что отдачу rss нужно как-то автоматизировать. Благодаря ORM это не составило особого труда; движок уже умел отдавать списки объектов, возвращенные модулем, в виде XML-таблицы, поэтому мне осталось только логически связать переключение форматов между HTML, XML и RSS. Теперь для того, чтобы «обучить» движок новому формату, достаточно описать его в неком классе и добавить одну строчку в index.php.
Все объекты (статьи, фотографии, пользователи и т.д.) можно получить в формате XML, дописав в адресной строке ".xml" — готовое API для вашего сайта :)
Связь модулей и шаблонов
Связи между модулями и шаблонами (шаблонизатором) никакой — методы модулей возвращают «объекты-ответы», которые передаются шаблонизатору, а тот уже сам решает, что делать с результатом работы модуля. Кстати, на основе этих же «объектов-ответов» и формируется контент для любых других форматов.
Тем не менее, если модуль ничего не знает про шаблоны, то шаблонам же наоборот — позволено знать API модулей. Таким образом реализуется возможность шаблонов самим определять какие им нужны данные для страницы.
По умолчанию в Explay CMS используются XSLT-шаблоны, но это не значит, что XSLT — единственный вариант — возможно использование практически любого другого шаблонизатора, только для этого надо «обучить» движок. У меня в планах написание шаблонизатора на чистом PHP.
Статьи и комментарии одним списком
Помните, в старых версиях Хабрахабра можно было просмотреть комментарии и публикации пользователя одним списком? Я решил реализовать этот принцип в ядре Explay CMS: теперь разработчик без труда может смешивать все возможные типы объектов — статьи, комментарии, ссылки, фотографии и многие другие.
«100 запросов к БД на 100 комментариев»
Такая проблема была, но она успешно решена, извниняюсь, если кого-то напугал январским постом. Здесь так же хочу отметить хорошие показатели при работе с включенным кешем.
Другие особенности тезисами:
- Возможность прикрутить любой движок кеширования (в базовой сборке присутствуют Memcached и eAccelerator)
- Локализация
- Cron
- Отложенная отправка почты
- Автоматически генерируемые формы с валидацией
- Jevix
- Единое хранилище настроек
Возможности
По сути Explay CMS повторяет функционал Хабрахабра, но копировать все цели не было, взяты лишь базовые принципы организации блогинга.
Приведу описание основных модулей:
Блоги. Модуль блогов реализует практически весь функионал, который должна иметь блого-социальная сеть:
- Возможность публиковать и редактировать статьи и ссылки
- Возможность удалять публикации
- Черновики
- Разделение блогов на публичные (тематические) и персональные
- Возможность создавать блоги
- Голосование за блоги и публикации
- Рейтинг блогов
- Возможность назначать администраторов и модераторов блогов
- Комментирование публикаций
- Облако тегов
- Разделение публикаций по группам: популярные, все, тематические и личные
- RSS публикаций
Пользователи и Люди.
- Регистрация с подтверждением e-mail и без
- Настройки профиля
- Возможность загрузки нескольких аватаров
- Смена пароля
- Рейтинг пользователей
- Возможность добавлять в друзья
- Поиск пользователей
Фотогалерея.
- Создание альбомов
- Загрузка нескольких фотографий за раз
- Редактирование фотографий
- Рейтинг фотографий
- Комментирование фотографий
- Облако фототегов
- RSS фотографий
Почта.
- Оповещение пользователей о новых комментариях и входящих сообщениях
- Обмен сообщениями между пользователями (внутренняя почта)
Лента. Лента — абсолютно новый модуль, аналог новостей В Контакте, где пользователь может посмотреть ленту (лог) действий своих друзей. Логируются следующие действия: новые публикации, подключение к блогам, добавление друзей и фотографий.
Комментарии. Единая система комментариев на Ajax, возможность удалять комментарии.
Система обновлений
На мой взгляд, каждая CMS должна обладать системой обновления. И ее наличие дает не только удобный механизм обновления кода и пункт для маркетолога, но и очень важно в случае обновлений безопасности. В третьей версии Explay CMS для обновления системы достаточно загрузить ZIP-архив в мини-админпанели. Поскольку обновления собираются автоматически, то, я думаю, недостатка в них не будет.
Кстати, все «сборки» Explay CMS теперь собирает специальный скрипт, так что если Вам попадется файл, значение которого трудно определить, то это дело рук «компилятора» :)
Системные требования
— Apache
— PHP 5.2
— MySQL 5.0
— XSLT
— Multibyte String
— GD 2
— Zlib
— Mod Rewrite
Скачать
Официальная страница загрузки, а так же SVN на Google Code.
Спасибо за внимание! Жду критики.
P.S.: К сожалению у меня нет сервера, на котором можно было бы запустить CMS, а демо-сайтов добровольцев не осталось. Если у кого-нибудь есть возможность сделать демо-сайт, буду признателен.
UPD: explay.gengine-dev.net