Следующая часть эпопеи по созданию медиаплощадки силами Drupal 7.
1. Задачи
Задачи, в общем-то, стоят перед проектом практически такие же, как, наверное, перед любой социалкой — обмен мнениями по тому или иному материалу, личная переписка, оценивание материала, организация мероприятий… ну и другие плюшки, раскрывать которые мне пока не хочется :) Самые базовые функции с соответствующими им модулями будут рассмотрены ниже.
Под каждую из этих задач, естественно, реализован свой набор модулей, свои сборки; да что уж там, даже для решения какой-то одной задачи есть множество разных вариантов исполнения, каждый из которых заслуживает внимания.
Заодно, возможно, материал послужит пищей для размышления тем, кто собирается создавать аналогичную узкопрофильную социальную сеть.
Разделим условно весь функционал на следующие «бифштексы»:
- статьи (персоналий, рецензии, описание проекта)
- аудио и видео (аудио- и видеозаписи, конкурсные материалы)
- мероприятия (события, конкурсы, фестивали, мастер-классы, открытые занятия)
- юзабилити (WYSIWYG, ЧПУ, навигация, гиды по сайту)
Повторюсь — деление условное.
Итак,
2. Модули
«Из коробки» Drupal обладает достаточно внушительным набором модулей, с помощью которых можно создать достаточно внушительные по своему назначению сайты. Но мы хотим править Вселенной создать более широкий по своему назначению и функциям проект, поэтому нам потребуются инструменты в виде модулей, коих довольно много на официальном сайте
.
0. База
Кэп подсказывает, что для начала нам как бы нужен непосредственно архив с самим Drupal. Идём и качаем свежую версию. На момент написания статьи это 7.27. Сохраняем в отдельную папочку, которую Кэп создал специально для меня.
Дальше нам нужно дополнительно как минимум два модуля: Views и CCK. Несмотря на то, что оба модуля включены в ядро, понадобится более детальная работа с материалом, результата которой сложно добиться, не имея этих модулей. Собственно, скачиваем их с сайта Drupal. И не забываем про Token!
Лично я предпочёл включить модуль Update manager для более удобной установки модулей и тем.
NB: ещё не успел порядком изучить Drush, но знаю, что вещь полезнейшая. Осталось со временем перейти на него.
Далее идёт разбор списка согласно функционалу.
1. Статьи
Для большей части статейных материалов достаточно и «коробочных» модулей — Field API вполне справляется со своими обязанностями. Но если дело касается любой биографии, то здесь одного функционала FAPI уже маловато.
Какая узловая точка в биографии? Правильно, даты. Топаем на сайт и смотрим на Date. Ага, есть, ставим.
Нам надо сделать так, чтобы в зависимости от того, как мы заполним «карточку» на персону, соответствующим образом формировался заголовок страницы. В этом нам неоценимую услугу окажет Automatic Nodetitles. Ставим.
Дополнительно ставим модуль Image, потому как он пригодится потом везде, где только можно.
Забегая вперёд, скажу, что нам понадобится Node Reference и References, от которого NR зависит. Позже объясню, зачем.
2. Аудио и видео
Здесь всё-таки я остановился на модуле Media. Не забываем поставить зависимости: Chaos Tools и File Entity.
Если с воспроизведением видео всё более или менее понятно, то с аудио несколько сложнее. Случайно наткнулся на интересную библиотеку SoundManager 2. Удобно, стильно, CSS-но. Забираем. К счастью, для библиотеки есть соответствующий модуль — SoundManager2. Ставим.
На всякий случай ставим себе Libraries API — пригодится.
У нас сеть социальная, поэтому мы хотим, чтобы нам дали право голоса! Хорошо, идём и ставим эти модули: Voting API, Fivestar и Vote Up/Down.
3. Мероприятия
Едем дальше. Нам надо сделать так, чтобы у пользователей была возможность посещать/подписываться на какие-либо мероприятия. Для этого хорошо подойдёт модуль Entity Registration — нам, как правило, нужно знать, кто идёт и сколько всего участников. Ставим.
Возможно, организаторы захотят прикрепить ссылку на страницу мероприятия на том же Timepad, например. Что ж, дадим им такую возможность. Идём и ставим себе модуль Link.
4. Юзабилити
Дабы не обременять пользователей изучением HTML-тегов (поверьте, не у всех музыкантов есть на это время), позволим им воспользоваться каким-нибудь WYSIWYG-редактором. Неважно, что это будет — TinyMCE или CKEditor, хоть все сразу. Чтобы их держать под контролем, поставим модуль Wysiwyg и редактор CKEditor (мой выбор).
Для навигации по сайту в целом пользовательского и основного меню должно хватить. Со временем, на стадии темизации, всё это рассмотрим подробнее и внесём необходимые корректировки (и поставим дополнительные модули, если потребуется).
Понятное дело, что, попав первый раз на сайт, пользователю будет, наверное, не так просто сориентироваться. Было найдено довольно изящное решение вопроса — jQuery-плагин Joyride от ZURB. Скачаем библиотеку, заодно установим для неё соответствующий модуль. Заодно ставим зависимость — Context, если он ещё не установлен.
В основном за ЧПУ отвечает непосредственно Drupal, поэтому там трогать ничего не будем. Будем лишь видоизменять ссылки в зависимости от местонахождения пользователя — для этого ставим Pathauto и Transliteration, чтобы ссылки выглядели чуть более опрятно.
Как и любому другому уважающему себя сообществу, нам хочется иметь и группу ВКонтакте, куда будем постить разные новости и обновления проекта. Но, как вы сами понимаете, ручками делать это лень сложно, особенно одному, так что воспользуемся ещё одним готовым решением — VK CrossPoster. Модуль позволяет размещать сообщения на стене пользователя или группы с возможностью прикрепления ссылки на анонсированную страницу. Модуль имеет пару костылей, которые мы и разберём чуть позже, наберитесь терпения :)
Мы хотим, чтобы пользователи имели возможность общаться между собой, посылать друг другу сообщения и так далее. Сказано — сделано, топаем на сайт и забираем отличный модуль Privatemsg.
Итоги
Итак, что у нас в сухом остатке?
Итого: 25 модулей без учёта тех, что встроены в системе, и 2 библиотеки. Возможно, я упустил какие-то зависимости, буду рад, если мне о них напомнят лишний раз :)
Дальше установим всё это хозяйство и настроим его, поэтому будет довольно много картинок. Жду отзывов и комментариев!
Автор: SMullerin