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

Аватар пользователя artur.baranok
Опубликовано вт, 07/14/2015 - 13:00 пользователем artur.baranok
Форумы: 

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

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

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

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»);?>

Drupal web development