Скорость разработки
Третья версия 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: теперь разработчик без труда может смешивать все возможные типы объектов — статьи, комментарии, ссылки, фотографии и многие другие.
Возможности
По сути Explay CMS повторяет функционал Хабрахабра, но копировать все цели не было, взяты лишь базовые принципы организации блогинга.
Описание основных модулей:
Блоги. Модуль блогов реализует практически весь функионал, который должна иметь блого-социальная сеть:
- Возможность публиковать и редактировать статьи и ссылки
- Возможность удалять публикации
- Черновики
- Разделение блогов на публичные (тематические) и персональные
- Возможность создавать блоги
- Голосование за блоги и публикации
- Рейтинг блогов
- Возможность назначать администраторов и модераторов блогов
- Комментирование публикаций
- Облако тегов
- Разделение публикаций по группам: популярные, все, тематические и личные
- RSS публикаций
- Регистрация с подтверждением e-mail и без
- Настройки профиля
- Возможность загрузки нескольких аватаров
- Смена пароля
- Рейтинг пользователей
- Возможность добавлять в друзья
- Поиск пользователей
- Создание альбомов
- Загрузка нескольких фотографий за раз
- Редактирование фотографий
- Рейтинг фотографий
- Комментирование фотографий
- Облако фототегов
- RSS фотографий
- Оповещение пользователей о новых комментариях и входящих сообщениях
- Обмен сообщениями между пользователями (внутренняя почта)
Комментарии. Единая система комментариев на Ajax, возможность удалять комментарии.
Системные требования
— Apache
— PHP 5.2
— MySQL 5.0
— XSLT
— Multibyte String
— GD 2
— Zlib
— Mod Rewrite
]]>Скачать тут]]>