Как стать автором
Обновить

Создание форума на drupal

Время на прочтение3 мин
Количество просмотров22K
Недавно мне захотелось сделать форум на drupal. Нет, не так просто, нужна пара уточнений.
1) Проект уже существовал на движке drupal, являлся чем-то вроде сервиса вопросов-ответов, хотя отвечал один я.
2) Когда набралось тем 50, мне захотелось переделать все это в стиле форума, сохранив вопросы и ответы
3) Ну и, естественно, хотелось, чтобы все это было красиво, а форум был удобный.

У друпала есть встроенный модуль форум, однако он недостаточно удобен. Установка же модуля advanced_forum тоже все не решила — у меня осталась большая проблема: хотелось стандартной для phpbb форумов кнопки «новые сообщения» — по умолчанию drupal такой возможность не представлял.

Чтобы решить эти проблемы, пришлось повозиться с кодом. В процессе я нашел баг в текущем релизе модуля drupal advanced_forum. Она, как выяснилось позже, исправлен в alpha-версии, однако она у меня не пошла — возникли какие-то другие конфликты.

Так или иначе, этот пост посвящен настройке удобного форума на drupal. Решение описанной выше проблемы будет предложено.



Итак, начнем (вспоминаю вот этот пост habrahabr.ru/blogs/drupal/19005, который сподвигнул меня на изучение друпала, и надеюсь, что у меня получится не сильно хуже). Начнем с простого, шаманство оставим на потом.

1) Включаем модуль forum, cкачиваем и включаем модуль drupal.org/project/advanced_forum. Должен появиться тип материала forum. По адресу admin/content/forum (я здесь и далее буду опускать url сайта) заводим форумы, их описания. По адресу admin/user/permissions даем всем права на пользование форумом.

2) Выбираем стиль для advanced_forum по адресу admin/settings/advanced-forum. Я использовал blue_lagoon_stacked. Цветовая гамма исправляется путем редактирования файла modules/advanced_forum/styles/blue_lagoon_stacked/advanced_forum.css, все достаточно тривиально.

3) Скачиваем и включаем модуль drupal.org/project/forum_access, он позволит создать форумных модераторов. Не забываем дать права на все форумы для всех пользователей в

4) Смайлики, скачиваем и устанавливаем drupal.org/project/smileys

5) Цитирование. Потребуется модуль drupal.org/project/quote

6) Чтобы намертво запретить комментарии комментариев и получить классическую линейную форумную логику ответов, берем drupal.org/project/flatcomments Этот модуль, кстати, позволит и имеющиеся комментарии сплюснуть.

7) Для подписки на темы возьмем drupal.org/project/subscriptions Можно, кстати, по умолчанию настроить, чтобы пользователь по-умолчанию был подписан на ежедневные оповещения о новых темах.




8) Переходим к обещанному шаманству. Начинаем с исправления бага в версии advanced_forum 6.x-1.1. При отметке всех сообщений прочитанными он правит дату посещения пользователя у тех нод, у которых либо дата последнего комментария больше, либо дата создания. Но дело в том, что это не совсем верный подход — нода могла быть изменена, дата создания может быть меньше, а дата изменения — больше. Поэтому берем файл modules/advanced_forum/advanced_forum.module и правим в двух местах WHERE (n.created > %d на WHERE (n.changed > %d

9) Далее создаем view, показывающее непрочитанные сообщения. Для этого скачиваем и включаем drupal.org/project/views (если вы еще жто не сделали), новый view типа материал/node, фильтр на тип материала=forum и has new content. Поля: материал — заголовок, материал — последний комментатор, материал — дата последнего коментария. Первые два поля сделать ссылками. В заголовке делаем ссылку на /forum/markasread — пометить все прочитанными

10) Продолжение шаманства — встраиваем ссылку на непрочитанные сообщения (допустим, этот view мы разместили по адресу new_posts) в ссылки форума. Для этого в modules/advanced_forum/styles/naked/advf-forums.tpl в самом конце перед div class=«forum-top-links» пишем
<? php $links[«new_posts»]=array(«title»=>«Список обновленных тем»,«href»=>«адрес сайта/new_posts»);?>

Радуемся результату. Вопросы? Пишите!
Теги:
Хабы:
+12
Комментарии37

Публикации

Изменить настройки темы

Истории

Ближайшие события