Pull to refresh

Explay 3

Reading time 5 min
Views 891
Explay CMS 3Доброго времени суток, %username%! Сейчас расскажу тебе о своей 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

Скачать


Официальная страница загрузки, а так же SVN на Google Code.

Спасибо за внимание! Жду критики.

P.S.: К сожалению у меня нет сервера, на котором можно было бы запустить CMS, а демо-сайтов добровольцев не осталось. Если у кого-нибудь есть возможность сделать демо-сайт, буду признателен.

UPD: explay.gengine-dev.net
Tags:
Hubs:
+73
Comments 137
Comments Comments 137

Articles