«Блого-социальная сеть на основе XenForo»
Разделы:
, Социальные сети
В этой статье я постараюсь вкратце рассказать о построении аналога Livestreet на основе XenForo. Вся блого-социальная сеть представляет собой плагин для XenForo под названием Social. Обзор архитектуры движка и основы плагинописания описаны в статьях FractalizeR. Проанализировав архитектуру XenForo, мы поняли, что принципиальных отличий форума от блогов не так уж и много. Действительно, первое сообщение темы легко превращается в статью, а остальные сообщения — в комментарии. Определенные разделы форума можно превратить в блоги. Перечислю основные преимущества данного решения.
Конечно, у такого подхода есть и недостатки.
В целом идея о том, что любое обсуждение есть тема, показалось нам очень логичной. Разделение тем и статей в итоге оказалось не таким уж сложным. Теперь об основных моментах технической реализации плагина. БлогиСделаем настройку socialBlogRoot , определяющую родительский узел для всех блогов. Т.е. все дочерние форумы узла socialBlogRoot должны превращаться в блоги, а темы этих форумов — в статьи. Добавим поле parent_post_id к таблице xf_post для древовидных комментариев.КонтроллерРасширяем классы XenForo_ControllerPublic_Thread и XenForo_ControllerPublic_Forum . Если текущий форум является дочерним от socialBlogRoot , делаем запись в реестр:XenForo_Application::set('blogView', 1); Теперь в любом месте скрипта мы знаем, что находимся внутри блога. ВидРасширяем класс XenForo_ViewPublic_Thread_View :
ШаблонВ качестве параметров шаблона переданы первый пост и рендеренное дерево комментариев. Остается лишь вставить это дерево в конец первого поста, используя template hook под названием ad_message_below в щаблоне message .Модуль комментариев на основе темОказывается, темы можно использовать как универсальный способ коментирования любого контента. Покажем это на примере фотоальбомов. Из коробки фотографии можно загружать как вложения к сообщениям, а просматривать с помощью встроенного лайтбокса. Опять же создадим настройку socialAlbumRoot для корня всех альбомов. Для блогов мы сделали древовидные комментарии. Теперь же сообщение может относиться не только к другому сообщению, но и к вложению. Для этого вместо добавления одного поля parent_post_id к таблице xf_post , добавим два поля target_id и target_type . Последнее указывает на тип контента, к которому относится сообщение (post или attachment).Все альбомы одного пользователя теперь можно уместить в одну древовидную тему следующим образом:
Далее можно действовать аналогично блогам: делаем запись в реестр, расширяем вид и меняем шаблон. В технические подробности вдаваться нет смысла. Новости (главная)Новостная лента имеет собственный контроллер, вид и шаблон. Каждая новость представляет собой обработанное первое сообщение какой-либо темы. Обработка заключается в автоматической обрезке, а также в ограничении числа вложенных картинок и видео. Новость появляется на главной, если первое сообщение темы собирает больше заданного количества лайков. Благодаря такому подходу новостью может быть статья, фотоальбом, опрос или простое обсуждение. ЗаключениеXenForo показался нам одним из самых продуманных и технологичных скриптов не только среди форумных движков, но и среди CMS. Теперь я убежден, что на основе XenForo можно сделать как крупный портал, так и социальную сеть. Проект развивается. Основная часть блогов готова. В планах фотоальбомы, CMS, интернет-магазин, вики, афиша. Если кому-то интересно поучаствовать — пишите. Если интересно посмотреть демо, добавлю ссылку. Дата публикации: 2012-03-20 |