Explay-3

Доброго времени суток! Сейчас расскажу тебе о своей CMS. На сей раз это CMS, которая не подойдет для корпоративного сайта, для нее нет модуля-магазина и она не умеет работать с 1С.

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