CMS

индекс
77,39

Explay CMS 3.1

Explay CMSВсем доброго времени суток! Уже довольно давно, как мое увлечение создания движка для сайта стало занимать львиную долю свободного времени. А поскольку летом я был полностью предоставлен самому себе, то за компьютер садился как за работу :) При этом меня даже не останавливает отсутствие хоть сколько ощутимого дохода, это как зависимость. Надеясь, что кому-то я все-таки помогу, хочу поделиться результатом своей работы.

Explay CMS — это система управления социальными сетями или блого-социальными сообществами. Она по-прежнему совершенно бесплатна и распространяется под лицензией GNU GPL 3 версии. Напомню основные характеристики:
  • Коллективные блоги
  • Фотоальбомы
  • Дружеские связи и новости друзей
  • Комментарии
  • Рейтинги
  • Внутренняя почта
  • Система обновлений
Подробнее о характеристиках можно узнать на официальном сайте

Версия 3.1 является эволюционным продолжением версии 3.0. По ходу разработки были исправлены все известные баги и доработаны основные функции. В новой версии CMS приобрела полноценную панель администратора, которая дает возможность реализовать основную функцию, заявленную мной при релизе 3.0, — управление полями публикаций, пользователей и вообще всего-всего.

Далее о нововведениях подробно и по порядку:

Модули

Один из основных моментов в последней версии — это интерфейс для работы с модулями. Теперь пользователь может скачать модуль с официального сайта и установить его из админпанели. Разработчик же может «экспортировать» (создать установочный архив) разработанный им модуль и разместить его на оф. сайте. Поскольку разработчик может создавать собственные типы данных и использовать их в собственном модуле, то ему доступна функция экспорта самих типов данных. В будущих версиях появится возможность просмотра каталога модулей и их установки прямо из панели администратора, по аналогии с wordpress.

Что касается самих изменениях в модулях, то была добавлена возможность переопределять методы, языковые константы и права доступа, что позволяет не потерять внесенные изменения при обновлении.

К слову, теперь на официальном сайте, при размещении модуля можно (а точнее нужно) описывать его API. В качестве примера я описал API, доступное из шаблонов, для стандартных модулей.

Управление типами данных и их свойствами (полями)

Как выше уже было сказано — теперь вы самостоятельно можете настраивать (добавлять/изменять/удалять) свойства типов данных: публикаций, фотографий, пользователей, блогов и вообще всего-всего. Допустим, если для ваших публикаций (статей, постов или топиков — как вам угодно) требуется добавить возможность прикрепления изображения, то с помощью простейших манипуляций, в форме редактирования публикации появится поле для загрузки изображения (при этом вы можете настроить выходной формат и размер изображения). Также вы можете добавить обычные текстовые поля и даже поля для тегов.

В одном из комментариев на Хабре я прочитал про то, что сейчас только в двух отечественных CMS (Bitrix и UMI.CMS) можно создавать «справочники» (выпадающие списки), так вот теперь это доступно и в Explay :)

Подобные манипуляции со свойствами (полями) типов данных возможны благодаря налаженной ORM-системе. Здесь следует отметить, что для каждого типа данных выделяется отдельная таблица в БД, в которой и хранятся объекты нужного типа. При добавлении, например, нового текстового поля к публикации создается новый столбец в таблице. Может это не самый идеальный подход, но зато он позволяет оптимизировать таблицу и тем самым повысить быстродействие всей системы, а также уменьшить головную боль при переносе сайта с другой или на другую систему.

Панель администратора

Панель администратора получилась довольно легкой, без излишеств. Администраторам теперь доступны такие маленькие радости как файловый менеджер, модерация публикаций, удаление пользователей, создание бекапа сайта, управление статичными страницами, перетаскивание ссылок-иконок в избранное и немногое другое.

Нововведения с пользовательской стороны

Здесь нововведений не много, вот основные их них:
  • Создан «прямой эфир»
  • Добавлена возможность восстановления пароля
  • Добавлена возможность пользователям удалять свой профиль (точнее оставлять администраторам заявки на удаление)

Еще одно нововведение, которое не вписывается ни в один параграф, — это новый модуль Баннеры. Разработчику сайта дается возможность выделить в шаблонах места, где могут располагаться т.н. баннеры (по сути баннер представляет из себя кусок HTML-кода). Баннеры позволяют легко управлять блоками на странице со статическим содержимым, не прибегая к редактированию шаблонов.

Где взять?

Все сборки и обновления, как обычно, выкладываются на Google Code в разделе загрузок. Рядом находится SVN.

Системные требования: PHP 5.2, MySQL 5, XSLT, Multibyte string, Zlib, GD 2.
PHP 5.3 пока не поддерживается.

Тех-поддержка

Для новичков на оф. сайте существует раздел FAQ, где вы можете получить ответы на популярные вопросы и советы по решению возможных ошибок. Для тех, кто планирует заняться разработкой модулей существует документация, описывающая принципы работы модульной системы, а так же основные классы ядра.

Я с удовольствием безвозмездно помогу оказать несложную тех-поддержку и ответить на все интересующие вопросы.

Спасибо за внимание!
+28
16 сентября 2009, 12:38
41

комментарии (36)

+4
skachko #
Почему все бесплатные движки социальных сетей так похожи на Хабр?

Когда наконец появится движок а-ля дигг.ком/ньюс2.ру?
+2
lauri #
Что движок похож на Хабр поспорить не могу. Больно уж мне понравилась идея коллективных блогов. Однако никто Вам не запрещает переделать шаблоны под Digg или News2 :)
+1
skachko #
Дело не в шаблонах, а в логике так называемой автомодерации. В ЛС и БС эта логика проста как сапог: набираем количество голосов, указанное в конфиге и топик попадает на главную вне зависимости ни от каких факторов (сила/карма пользователя). Накрутить такой рейтинг проще простого. Дигг и н2.ру устроены иначе — там имеет значение не количество голосов, а некая «сумма сил» голововавших, так же в расчете рейтинга участвует время создания (чем дольше существует топик, тем больше «суммы сил» требуется для его вывода на главную), ну и есть еще пара моментов.
–6
Oleg_k #
+1000

заколебали хабр переписывать
–1
zerkms #
вам-то что? люди хотят переписывать хабр — люди переписывают хабр.
+2
Drimean #
Дык, есть уже. =) pligg.com
0
ADeptice #
Вы молодец, что ведете такую работу на совершенно бескорыстных условиях.

P.S.: Очень заметно влияние хабра на дизайн вашего сайта :)
–1
lauri #
Ну это еще ничего, с самого начала дизайн был практически копией Хабра. Правда это тогда еще был сайт моей школы :)
0
kyrie #
Вы молодец, очень хорошие задатки как для дизайнера — если что-то хорошо, и я не могу придумать лучше — надо копировать и не парится. Это юзабилити, а не арт, тут грамотное копирование решает.

Единственное что — ссылки, желательно, если не подчеркивать, то хотя бы подсвечивать при наведении.
+4
DevArt #
Особенно приятно удивило на вашем сайте наличие документации, её обычно ленятся делать даже коммерческие движки. :)
0
5corpi #
на этой страничке explay.su/post/article/73 под заголовком нововведений с пользовательской стороны, буковку добавьте,.
+16
ferrari #
Каждый год 31 декабря ..., а нет, извините — не то: каждый сезон вы выкладываете эту чудесную CMS, и каждый раз мы встречаем поток жалоб, уведомлений о багах. И вот бегло глядя по диагонали еще раз:
— в письме с регистрацией НЕТ ТЕМЫ — ровно как и в прошлый раз
— вы по прежнему не знаете URL валидатора
— повсюду генерится js прямо инлайново в html, неужели нельзя задать список ошибок по id например. Ну ладно, будем считать что все это advanced:
< _a id="..." onclick=«new Error ('Вы не можете голосовать!');» title=«не нравится» href=«javascript:void(0);»>
< _img alt="" src=«explay.su/images/post-vote-minus-cant.png»/>
< _/a>
— в прошлый раз я вам указал на уязвимость habrahabr.ru/blogs/about_cms/61963/#comment_1709715, которую вы осознали после долгого диалога и сейчас придумана чуда защита с добавлением некоего code, вместо того чтобы просто использовать post илбо HTTP_X_REQUESTED_WITH. Видимо лучше везде создавать себе геморой с просовыванием глобальной переменной взамен того, чтоб просто сделать правильно
— захардкоденные параметры в js (подобные timeout и opacity) — вот их то как раз нужно быть вынести в глобальную переменную(объект) назвав допустим config, точно также как и следовало тексты ошшибок вынести в отдельный массив, чтобы если придется менять параметры/строки на это не уходило пол дня (у вас же продукт для масс?)
— при голосовании заменяется стрелка путем replace img в dom дереве, это по вашему нормально? почему не описать для A некий класс, и просто в связи с его заменой менять бекграундимеж красную стрелку на зеленую (заданный в CSS).

не хочется в очередной раз показаться занудой или неблагодарным читателем, но ваша cms как и прежде представляет собой комок совершенно не разделенного ни по каким принципам кода, за который ваши коллеги по оружию (в том числе я) — разработчики на php, в очередной раз заслуженно получают звание говнокодеров
+5
ferrari #
ЗЫ:
if ($('#blog_members').css('display') == 'none') {
$('#blog_members').show();
} else {
$('#blog_members').hide();
}
превращается в $('#blog_members').toggle();
Не ленитесь, просмотрите хоть раз _всю_ документацию.

также в jquery есть метод UNBIND, пишите правильно, либо используйте чистый js — кстати очень полезно и для вашего функционала совсем не много, зачем вам библиотека на 60kb если кроме ajax и пары затуханий ничего нет.
–2
lauri #
Хочу Вас заверить, что прочитал всю документацию jQuery, и в более поздних скриптах Вы можете найти и bind, и undind, и toggle, и шмугл. Извиняюсь, что не удовлетворил Ваших потребностей :)
+2
ferrari #
хочу вас заверить, что в вашем случае «прочитал» толку никакого не принесло, попробуйте теперь осмыслить и выучить.
Ваша версия jquery вполне позволяет делать toggle и unbund, просто что-то не так с руками.
–2
deerua #
Хм, а попроще выражаться вообще можно? Что за неприязнь?
У Вас, у самого ничего за спиной, тока тыкать можете, а ещё и таким тоном.
Если что-то не устраивает, обсудите, и решите проблему, а нет, то уж лучше молчать.
Ошибки для того, что бы учится, у всех они были, и у всех они будут!
зы: да Вы — типичный джаваскрипт-тролль
+5
ferrari #
нет никакой неприязни, совсем.
Просто на набор проблем и способов их решения нужно если и не говорить «ок, сделаем», то хотя бы не писать беспомощное «не нравится — извините», ведь это вроде бы как продукт для масс, его выводят каждый раз на главную.
Автор назвал версию 3.1, хотя очевидно, что это 0.3.1 alpha.
По поводу тролля — перечитайте мои сообщения, они может и не всегда тактичны, но лишь тогда, когда автору насрать на советы в очередной раз. Например пункт #1 — как можно отправлять письмо от имени "" (две кавычки) и? это было и в прошлых релизах, я тогда регистрировался и тоже получил письмо без темы. ну и дальше подряд по списку.
+1
bazzzman #
Зря вы так, ferrari вам написал хороший отзыв.
Разве не для этого вы опубликовали пост? Вы хотите знать что думаю другие о вашей cms или как?
Есть смысл задуматься над его предложениями. Я бы на вашем месте сказал ему огромное спасибо за потраченное время.
0
Alexion #
равно как и Битрикс, однако это ему не мешает.
+1
sunchess #
А закрытые блоги делать можно? Я не нашел на сайте упоминания.
0
lauri #
В данной версии, к сожалению, такой возможности нет.
+9
Koc #
Ваша CMS — гавно. Вы ничего не понимаете в CMS.
Пруфлинк: phpclub.ru/talk/showthread.php?s=&threadid=115879&highlight=explay

0
deerua #
По сути — флейм по поводу ескейп_стринг, о цмс забывают на 1й же странице. Да, но ошибки всё-таки серьезные, разработчику стоит
обратить внимание.
0
lauri #
На PHPClub товарищ DiMA, конечно, был прав насчет интерфейса кеширования (он, кстати, исправен), но уязвимости у него неработоспособные получились.
+2
Ares #
Автору мое ИМХО

Конструктивная критика — исключительна полезна. Наверное она задевает «эго», но она нацелена на то, чтоб стать лучше. Мы все делаем ошибки, но не все их исправляем. Будьте умнее, прочтите все замечания, разберитесь в них и исправьте(сь).

Похвально, что Вы сели писать CMS — это будет очень хорошей практикой, научитесь делать ошибки и их исправлять!)

Искренне желаю удачи Вам!
–1
lauri #
Спасибо, исправлюсь конечно. Только вот жаль, что когда я выпускал промежуточные версии не было столь въедливых тестеров :)
+4
MpaK999 #
Труд хороший.

Но юмор автора Explay мне не понятен, заходим на страницу golovdinov.ru/ смотрим в код, а там

div id=«хуй»>Головдинов Александр Эмирович

а css?

div#хуй { /* юникод фореве, бля! */
+1
Adelf #
Ему 18 лет. Так вот самовыражается.
–1
ferrari #
Может стоило например так:
< _style> i {display:none} < _ /style>
Го < _i>ло< _/i> в < _i>ди< _/i> нов Александр Эмирович

или это уже в 19…
0
Sma11erM1nd #
Либо Вы не до конца скопировали, либо не захотели, но полный код выглядит так:

div#хуй { /* юникод фореве, бля! ps: не обращайте внимания на мое самовыражение. pps: кому нужен инвайт на лепру? */
0
MpaK999 #
Это уже «афтар» пытается с нами пообщаться и шлёт неведомые сигналы :)
+2
Staser #
В целом, с виду, ничего так, по коду, нуу… все мы начинали с чего-то)

А в общем, конечно очень хорошо, что Вы решились писать собственную CMS — я тоже так начинал, это и вправду даёт очень много опыта, который бесценнен, и чуть позже будет дорого оченен работодателем.

По CMS, совет, сделайте обработку рерайта чисто в PHP, тогда Ваша CMS не будет привязана к Apache и mod_rewrite =)

Удачи Вам!
+1
Oleg_k #
а подробней не подскажете про обработку рерайта чисто в PHP?
НЛО прилетело и опубликовало эту надпись здесь
+1
xtra #
Ошибка zip-архива install.zip: PCLZIP_ERR_BAD_FORMAT (-10): Invalid End of Central Dir Record size: 17
0
4lt3r #
А что с поддержкой языков? есть возможность перевода на английский?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.