Ромка!eu

  • Отдых
  • Работа
Главная — Блоги — Ромка's blog

Разработка сайта на Drupal. Часть 5. Социальная сеть на Друпале

  • Просмотреть
  • Голоса

Ромка — Вс, 01/03/2010 - 03:06

380
points

Постановка задачи
Создаем ресурс со свободной регистрацией и возможностью для зарегистрированных пользователей публиковать материалы в собственном и коллективных блогах (блогах, посвященных определенной теме, в которые могут писать несколько авторов). Для авторизованных пользователей нужна возможность оценивать чужие материалы и комментарии к ним. Эти оценки должны влиять на «карму» авторов. Пользователи, набравшие определенный уровень «кармы», должны получать некоторые привилегии перед обычными — например, возможность создавать новые коллективные блоги. Материалы, набравшие определенный рейтинг, должны выводиться на главной странице. Кроме того, необходимо реализовать возможности, позволяющие пользователям вести списки друзей и загружать фотографии.

Решение. Задача решается при помощи стандартных модулей Drupal Blog и Path, а также дополнительных Organic Groups, Views, VotingAPI, Vote Up/Down, User Karma, CCK, ImageAPI, ImageCache, Filefield, Imagefield, Lightbox2.
На данный момент на сайте shvabrashvabr.ru доступна новая, обладающая большим функционалом, версия описанной здесь сборки, с подробными описаниями и скринкастами.

Реализация
Первым делом перейдем в меню Administer — Modules (admin/build/modules) и активируем необходимые модули:

  • Для этой сборки из группы модулей CCK, кроме модуля Content, нам понадобится модуль Text, позволяющий добавлять к документам текстовые поля, и Filefield, Imagefield , с помощью которых к документу можно присоединить неограниченное количество изображений.
  • Из модулей ядра активируем модуль Blog, позволяющий пользователям вести персональные блоги, и Path, с помощью которого создаются «человекопонятные» адреса документов.
  • В группе модулей ImageCache отметим галочками ImageCache, ImageCacheUI, ImageAPI и ImageAPI GD2 (или ImageAPI ImageMagick вместо последнего).
  • В группе модулей Organic Groups находятся модули, реализующие функционал коллективных блогов. Нам понадобятся Organic Groups и Organic Groups Views Integration.
  • Из модулей в группе Others отметим служебные модули Token и Pathauto, а также модуль Lightbox2, с помощью которого прикрепленные к документу изображения можно выводить в виде красивого слайд-шоу.
  • Группа модулей UserKarma изменяет карму (рейтинг) авторов, если посетители сайта голосуют за их материалы, а также позволяет переводить пользователей из одной группы в другую (и присваивая им новые права доступа) в зависимости от значения кармы. Нам понадобятся все модули этой группы.
  • Чтобы пользователи могли создавать списки друзей, в группе модулей User Relationships отметим модули UR-API, UR-Blocks, UR-UI, UR-Views.
  • На нашем сайте будет два основных списка материалов. В первом будут отображаться все опубликованные документы, а во втором, который станет также главной страницей сайта, — материалы, набравшие определенный рейтинг. Создавать списки мы будем с помощью модулей Views и ViewsUI.
  • Оценивать материалы наши пользователи смогут с помощью кнопок «за» и «против». Материалы, набравшие определенный положительный рейтинг, будут выводиться на главной странице сайта. Оценки материалов реализуются модулями VitingAPI и Vote up/down.

После того как необходимые модули активированы, приступим к их настройке и начнем с «Коллективных блогов», которые реализуются модулем Organic Groups. Логика работы такова: в настройках модуля нужно указать, какой тип контента будет считаться «Коллективным блогом», а какой — «Записью» для коллективного блога. Пользователи смогут создавать «Коллективные блоги», подписываться на них и создавать в них записи. При переходе на страницу «Коллективного блога» будут отображаться все размещенные в нем записи.

В качестве «Записи» для коллективного блога подойдет уже существующий тип контента Blog entry, который создается автоматически стандартным модулем Blog. Материал типа «Коллективный блог» нужно создать самостоятельно. Для этого перейдем в меню Administer — Content types (admin/content/types) на вкладку Add и создадим тип материала с именем «Коллективный блог» и машинным наименованием group. Теперь перейдем в настройки модуля Organic Groups (admin/og/og) и укажем, что материал типа Blog entry — это запись в коллективный блог (Standard group post), а материал типа Коллективный блог, как это ни странно, коллективный блог (Group node).

К записям в блогах по нашей задумке пользователи смогут присоединять неограниченное количество изображений, которые будут выводиться в виде уменьшенных копий внизу сообщения. При этом щелчок по изображению должен открывать слайд-шоу, сопровождаемое небольшим количеством спецэффектов. В нем будут выводиться копии изображений размером 800x600 пикселов. Чтобы из загружаемых изображений автоматически создавались уменьшенные копии, нужно в модуле ImageCache создать два набора настроек, выполняющих необходимые действия. После этого нужно перейти в свойства материала типа Blog entry (Administer — Content types, а затем Manage fields соответствующего типа материалов) и добавить к нему поле типа Image. Чтобы убрать ограничение на количество загружаемых изображений, в свойствах созданного поля параметру Number of values нужно установить значение Unlimited. В свойствах отображения полей (Display field) нужно указать, что картинка должна выводиться в виде миниатюры 100x100, а клик по ней должен открывать слайд-шоу с картинками размером 800x600. В данном случае этот параметр имеет имя Lightbox2: preview-100x-100->width-800.

Пришло время распределить права доступа пользователей к различным возможностям сайта. Мы решили сделать так, чтобы пользователи с определенным уровнем «кармы» имели больше возможностей, чем обычные пользователи, поэтому нам нужно создать новую роль «Продвинутые пользователи» (делается это в меню Administer — Roles). Теперь перейдем в меню Administer — Permissions и установим необходимые разрешения.

  • Блоги. Для авторизованных и продвинутых пользователей разрешим вести свои блоги, для этого нужно установить галочки create blog entries, edit own blog entries, delete own blog entries.
  • Комментарии. Всем пользователям разрешим просматривать комментарии (галочка access comments), а оставлять комментарии смогут только авторизованные и продвинутые пользователи (галочки post comments, post comments without approval).
  • Изображения. Всем пользователям разрешим просматривать миниатюры, созданные модулем ImageCache, и картинки, прикрепленные к документам (начинающиеся на view imagecache и view imagefield uploads).
  • Материалы сайта. Всем пользователям разрешим просматривать контент (access content), а группе продвинутых пользователей разрешим создавать и редактировать коллективные блоги (create group content и edit own group content).
  • Списки друзей. Авторизованным и продвинутым пользователям разрешим создавать списки друзей (can have relationships, maintain own relationships), а всем пользователям просматривать эти списки (view user relationships).
  • Views. Всем пользователям разрешим просмотр представлений (access all views).
  • Голосования. Всем пользователям разрешим просмотр статистики голосований за материалы (access up-down vote statistic и view up-down vote), но голосовать разрешим авторизованным пользователям (use up-down vote).

Сейчас система позволяет создавать записи в блогах, размещать их в коллективных блогах и прикреплять к материалам изображения. Осталось добавить возможность оценки материалов и карму. Сначала перейдем в меню Administer — Vote up/down (admin/settings/voteupdown) и отметим типы контента, которые пользователи смогут оценивать. В нашем случае достаточно поставить галочку Blog entry. Теперь перейдем в меню Administer — User Karma (admin/settings/user_karma). Здесь на соответствующих вкладках можно указать, как изменится карма пользователя, когда он разместит новый материал (комментарий) или получит оценку своего материала. Кроме того, здесь же мы должны настроить автоматический перевод пользователя из одной группы в другую, если он наберет определенный уровень кармы. Для этого на вкладке General необходимо выбрать роли, которые могут использоваться модулем User Karma (здесь это роль «Продвинутые пользователи»), сохранить изменения и в появившихся группах настроек указать необходимые значения кармы.

Теперь наши посетители могут создавать записи в блогах, оценивать их и осталось при помощи модуля Views создать два представления: в одном будут выводиться все записи в блогах, а во втором только записи с определенным рейтингом. Подробно настройка представлений рассмотрена в предыдущем примере, поэтому сейчас я на этом вопросе детально останавливаться не стану, так как здесь будут использоваться те же средства. Единственное исключение состоит в том, что в блоке настроек Ralationships необходимо добавить связь с модулем VotingAPI, чтобы в фильтрах представлений можно было использовать рейтинги документов.

Ссылки на другие части этой статьи:

  • Часть 1. Введение
  • Часть 2. Архитектура Друпала
  • Часть 3. Модули Drupal
  • Часть 4. Интранет-сайт на Друпале
  • Часть 5. Социальная сеть на Друпале
  • Часть 6. Оптимизация Друпал

Содержание всех статей: http://romka.eu/blog/my-drupal-articles

  • Drupal
  • социальная сеть
  • статья
  • Швабрашвабр
  • Ромка's blog
  • Quote

User Karma модуль

Vitaliy (не проверено) → Ср, 01/06/2010 - 17:56

Роман, привет!

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

может вы сталкивались с этой проблемой и можете подсказать что-нибудь? в любом случае спасибо за вашу работу.

виталий

  • ответить
  • quote
  • -1 points

Re: Читаю уже не первую неделю

Бобров Вячеслав → Вс, 02/06/2011 - 04:11

Читаю уже не первую неделю Ваш блог, узнаю много интересного. Спасибо Вам за Ваш труд!

  • ответить
  • quote
  • -10 points

Вопрос измученной девушки

Анастасия (не проверено) → Вс, 02/13/2011 - 02:02

Я очень начинающий веб дизайнер (даже как то неудобно себя так называть), свой первый сайт создала неделю назад в программе дримвьювер, после просмотра видео курса и захотелось мне сделать в нем коллективный блог. Очень порадовалась тому, что нашла вашу статью о Drupal. Установила Drupal 7,0 и столкнулась с проблемой - модули, о которых вы пишите не все подходят к 7 версии.... Пыталась установить 6, но ничего не получилось - доходила до стадии "установка завершена", но при переходе на страничку выдавало кучу каких то ошибок ... Помогите пожалуйста!

  • ответить
  • quote
  • -19 points

попробуйте для начала

Дмитрий «Xolms»... → Ср, 02/23/2011 - 00:26

попробуйте для начала запустить CRON.
Если ошибки еще не исчезли разбирайтесь с ними по очереди, Нередко прямо в "отчете о состоянии" говорится что конкретно нужно сделать для устранения ошибки.
При необходимости используйте переводчик

  • ответить
  • quote
  • -35 points

ошибка?

Дмитрий «Xolms»... → Ср, 02/23/2011 - 00:19

Спасибо за замечательные материалы, благодаря им я уже многому научился )
вероятно вот здесь : "Оценки материалов реализуются модулями VitingAPI и Vote up/down." ошибка, за место VitingAPI должно быть Voting API.

  • ответить
  • quote
  • -20 points

Разные профили пользователей

Джон Дое (не проверено) → Вс, 05/15/2011 - 15:36

Подскажите, пожалуйста, как во всей этой радости завести разные профили пользователей которые гость выберет при реге?

  • ответить
  • quote
  • -26 points

А есть ли какой нить чат

Anonymous (не проверено) → Сб, 08/27/2011 - 17:01

А есть ли какой нить чат переписки пользоваделей. как создать друзей?? и чат переписки между ними

  • ответить
  • quote
  • -19 points

вы из казахстана?

Anonymous (не проверено) → Сб, 08/27/2011 - 17:02

вы из казахстана?

  • ответить
  • quote
  • -1 points

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать тэг <code></code> для подсветки синтаксиса программного кода. The supported tag styles are: <foo>, [foo].
  • You may quote other posts using [quote] tags.

Подробнее о форматировании

CAPTCHA
Если вы человек, а не робот, то введите текст с картинки. Если вы робот, то велкам ту майкрософт.ком.

Обо мне

Всем привет!
Меня зовут
Роман Архаров, я профессиональный веб-разработчик, программирую на языках PHP, Python и Action-Script, в работе использую фреймворки Drupal и Django. В этом блоге я размещаю заметки и статьи, связанные с моей работой, отдыхом и другими интересными мне темами.

Похожие заметки

  • Несколько статей о Друпале
  • Пример разработки плагина для модуля CCK
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Темизация Drupal. Часть 1
  • Разработка модуля для Drupal. Часть2

Популярные заметки

  • Пример разработки плагина для модуля CCK
  • AJAX. Обмен данными между клиентом и сервером, закачка на сервер файлов без перезагрузки страницы при помощи библиотеки jQuery.
  • Модуль Vote Up/Down для Drupal 6
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Темизация Drupal. Часть 1
  • Кнопки Home, End и Page Up, Page Down в Mac OS
  • Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм
  • Вращение изображений при помощи Javascript
  • Темизация Drupal. Часть 4. Темизация Views

Подписка


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

  • Oz → Швабрашвабр2 → слабовато для
  • loan → Вращение изображений при помощи Javascript → answer this topic
  • CopelandLacey33 → Доставка → reply this post
  • vitsss → Авторизация на Drupal-сайте с помощью аккаунта вКонтакте → hostinh nic.ru and vk api
  • dimasikov → Автоматическая "газетная" верстка (верстка в несколько колонок) → Я похожее делал для с этим
  • max2012 → Разработка сайта на Drupal. Часть 2. Архитектура Drupal. → Подвесные потолки Опосля
  • Антон → Темизация Drupal. Часть 4. Темизация Views → Отлично!
  • Itsmypersonal → Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 2 — Пхукет → Пхукет - да!
  • Sheldon → Перетаскивание ячеек таблицы. Table drag and drop — плагин для jQuery → Здравствуйте! Подскажите
  • Sheldon → Home sheep home → Одна из тех игр в которые

Новые заметки

  • Проба пера в HTML5 + canvas. Эффект ластика
  • Шесть рукопожатий
  • Доклад на DrupalConfMoscow 2011
  • Статусы разных сущностей в Друпале 6
  • Футер, прибитый к низу страницы
  • Путешествие по Перу и Боливии. Часть 2
  • Путешествие по Перу и Боливии. Часть 1
  • Несколько панорам из путешествия по Перу и Боливии
  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Home sheep home

Тэги

dckyiev09 Drupal jquery Боливия Отдых Перу Работа Штуки-дрюки зима 2010 модуль статья темизация
еще тэги

Вход для пользователей

Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Зарегистрироваться
  • Запросить новый пароль

Навигация

  • Exchange rate
  • Vote up/down
  • Переход по внешней ссылке
  • Последние сообщения
  • Фотогалереи

Курсы валют

  • 100 Казахских тенге — 20,3352 (+0.03)
  • 10 Украинских гривен — 37,6101 (+0.06)
  • 10 Китайских юаней — 47,9611 (+0.04)
  • 100 Японских иен — 39,6909 (-0.04)
  • 1 Доллар США — 30,2385 (+0.05)
  • 1 Евро — 39,7425 (-0.02)
  • 10000 Белорусских рублей — 35,9554 (-0.07)
  • 1 Турецкая лира — 17,1829 (-0.03)

10 случайных заметок

  • Дай лапу, Друг — гостиница для животных
  • Google Developer Day 2009
  • Куба. Лето 2008. Часть 6
  • В Политехническом музее
  • Проверка имени пользователя на наличие букв из разных алфавитов
  • Поездка в Киев
  • Несколько статей о Друпале
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 3 — Бали, Сингапур, Пхукет
  • Tagnetic — холодильник тэгов
  • Несколько панорам из путешествия по Перу и Боливии

Случайные фото

Еще одно фото резиденции короля
Друпликон и моя тень
В Сингапурском зоопарке. Леопардовая (бенгальская) кошка.
Копенгаген, Кристиания, Граффити 3
Здание замка Акерхус
Фонарь
Копенгаген, Кристиания, Граффити 6
Это лыжники. В мае. На улице +20.
Копенгаген, Кристиания, Граффити 7
Взгляд в будущее
Вечерний Копенгаген
Радуга над футбольным полем в Лужниках
Фонтаны в Осло работают даже зимой. Карл Юхан Гате
Я, какой-то дед и местные детишки
Дорога, на поверхности видны следы копыт
Я и кокос... Где то я это уже видел...
  • Отдых
  • Работа

При использовании материалов с сайта, пожалуйста, ставьте ссылку на источник. E-mail для связи: mne@romka.eu.