Социальные сети и Drupal: желания против возможностей

 

Разработчики, занятые созданием сайтов социальных сетей часто сталкиваются с тем, что для них не существует единого определения. Существует только некий набор функций, который считается присущим социальным сетям. Кроме того, нужно чёткое определение целевой аудитории, без этого даже самая функциональная социальная сеть не сможет развиваться.

Так какой же функционал присущ социальным сетям? Парадоксально, но больше трети такого функционала имеется и на других сайтах: регистрация, поиск, голосование, профили пользователей, администрация, SEO, форумы. Источником социальных сетей являются новостные сайты с форумами (так называемые “порталы”).

Web 2.0 даёт возможность близких виртуальных коммуникаций: персональные блоги, комментарии, RSS, тэги, общение с друзьями. Теперь посетители (а не администрация сайта, как было ранее) наполняют это всё контентом.

 

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

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

Система Drupal в простейшем случае представляет собой ядро, вокруг которого может быть развёрнут некий функционал. После установки Drupal сразу бросается в глаза своей непохожестью на остальные CMS с их секциями и страницами. Здесь единицей является публикация. Публикация может состоять из статьи, изображения, опроса, видеоролика – из чего угодно.Каждую публикацию можно комментировать, тэгировать, оценивать; это приводит к большему вовлечению участников в управление публикациями.

И, кстати, Drupal является модульной CMS с открытым исходным кодом. Система создавалась для вхождения в инфраструктуру LAMP (Linux-Apache-MySQL-PHP), поддерживает РНР 4.3.3 и совместима с РНР5. Главный упор был сделан на разработку сайтов для взаимодействия пользователей. Также возможно создание и простых сайтов, торговых порталов или галерей. Официальный сайт проекта http://drupal.org.

Одной из замечательных возможностей Drupal является таксономия. Этот термин означает возможность категоризации публикаций, назначения им меток. На первый взгляд, в этом нет ничего особенного, но если вспомнить, что всё в Drupal является публикациями, несложно понять, насколько мощным является такой подход. Например, под одной меткой можно объединить и запись в блоге, и изображение, и тему форума, и даже пользователя! Категории имеют иерархию, метки могут назначаться пользователями. Эта возможность поистине уникальна.

Изначально Drupal создавался для разработки сообществ, давая возможность автору воплощать любые замыслы. Нужно учесть разницу в подходах. При разработке обычного сайта первый вопрос – это “Какой сайт мне нужен?”. А при разработке сайта на Drupal первым вопросом становится “Какое сообщество будет располагаться на моём сайте?”. Таким образом, Drupal – это не просто CMS, это платформа для построения сообществ и социальных сетей.

Базовый функционал Drupal (публикации, таксономия, авторинг), помноженный на возможности расширения, даёт возможность построения и дальнейшей поддержки сложных социальных сетей.

Взглянув на существующие социальные сети, можно быстро определить, какой модуль был использован для создания того или иного сервиса. Форум или блоги? Всё это уже было включено в дистрибутивный файл. Френдлист или личные сообщения? Используем модули Buddylist и Privatemsg соответственно. Защита от непрошеных гостей? Это очень важная для любого сообщества задача, но и она легко решается: существует модуль Invite и защита от спама (возможность пожаловаться на спам + капча). Пользователи могут размещать в профилях любую информацию о себе, причём в любых количествах. Они могут просматривать её таким образом, каким это больше всего нравится им. Если каждый может создать место для размещения галерей, звукозаписей и видео, музыкальные сообщества и поклонники Шекспира пробуют Drupal.

Хочется предостеречь новичков от их вездесущего желания выложить на каждой странице всё и сразу. Да, Drupal очень мощный, но сваливание всех модулей в одну кучу приведёт к очень медленной загрузке страниц. Это крайне редко нужно пользователям, зато создаёт нагрузку на сервер. Любая социальная сеть предполагает очень высокие нагрузки на сервер баз данных, как от большого числа пользователей, так и от сложных кросс-референсных запросов. Частично эта проблема решается кэшированием, но всё же стоит помнить об этом и не забывать о целесообразности.

Для демонстрации возможностей был создан демо сайт. Он состоит из 3 частей: туристическое агентство, элементы социальной сети, интернет-магазин. В реальной жизни такое смешение направлений неприемлемо, но в демонстрационных целях оно всё же было допущено. В разделе турагентства система позволяет вводить данные о турах и отелях. Присутствует ряд механизмов для взаимодействия пользователей: форум, блог, френдлист, личные сообщения, “приглашалка” для друзей, списки новичков и активных участников. Интернет-магазин создан на основе продвинутого модуля eCommerce, и позволяет добавлять выбранные товары в корзину и оплачивать их через фактуры. На сайте присутствуют поиск, визуальный редактор, адрес для SEO. Каждый пост (на тему тура, отеля или покупки) может комментироваться посетителями. Для анонимных пользователей присутствует модерация сообщений администраторами (сообщение публикуется только после одобрения модератором). Для всех публикаций действует антиспам (флаг спама, фильтрация адресов и фильтр Байеса).

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