Форум на сайте - группы, права участников, темы и модерация
Форум как самостоятельный раздел сайта собирается из штатного модуля за пять шагов. Разбираем порядок: группа форумов, форум, вывод компонентом, права участников и модерация сообщений.
Решение
Группа форумов, потом сам форум
Заводим группу, следом форум внутри неё:
Сервисы → Форумы → Группы форумов # сортировка и родительская группаСервисы → Форумы → Список форумов # форум привязывается к группеНастройки форума: активность, индексация, модерация, запрет дублейНастройки форума: типы файлов, e-mail и CAPTCHA для гостейФорум привязывается к группе, поэтому группу заводим первой. Сортировка идёт по возрастанию: меньшее число поднимает группу выше в списке, а родительская группа собирает из групп иерархию.
Вывод форума на публичной части
Ставим комплексный компонент на страницу раздела:
$APPLICATION->IncludeComponent('bitrix:forum', '', [ 'SEF_MODE' => 'Y', 'SEF_FOLDER' => '/community/forum/', // папка, где живёт раздел форума 'SHOW_FORUMS' => 'SELECTED', // показывать только выбранные форумы 'FORUMS' => [$forumId], // новый форум добавляют сюда руками]);Свежий форум открывается по прямой ссылке, но в общем списке не появляется. Причина не в правах и не в активности: отбор компонента показывает только выбранные форумы, а новый в этот список никто не добавил.
Уровни прав участников
Раздаём группам пользователей уровни доступа:
Нет доступа # форума не видно совсемЧтение # темы и сообщения только на просмотрОтвет # ответ в существующей темеНовая тема # создание собственных темМодерирование # работа с чужими сообщениями форумаРедактирование # правка сообщений и настроек форумаПолный доступ # форум целиком, включая удалениеУровни возрастающие, каждый следующий включает предыдущий. Модератору мало уровня на одном форуме: нужен уровень «Модерирование» на каждом форуме плюс право «Запись» на сам модуль форума.
Тема и сообщение из кода
Создаём тему её первым сообщением:
\Bitrix\Main\Loader::includeModule('forum');
$messageId = \CForumMessage::Add([ 'FORUM_ID' => $forumId, 'NEW_TOPIC' => 'Y', // без флага нужен готовый TOPIC_ID 'TITLE' => 'Вопрос по доставке', 'POST_MESSAGE' => 'Текст первого сообщения темы', 'AUTHOR_ID' => $userId, 'APPROVED' => 'Y', // на модерируемом форуме ставят N]);Руками тему заводят только в публичной части сайта. Административный раздел правит названия готовых тем в разделе управления темами, а создать оттуда новую тему нельзя вообще. Классы модуля процедурные, их сигнатуры лежат в справочнике API, а не в учебных курсах.
Модерация и фильтры
Включаем модерацию и фильтр слов:
Сервисы → Форумы → Список форумов → форум → МодерацияНастройки → Настройки модулей → Форум → фильтр нецензурных словШаблоны фильтра: Слово, Транслит, Регулярное выражениеСервисы → Смайлы # с версии 15.5.2 форум берёт системные смайлы ядраМодерация задаётся на уровне форума, а не отдельного сообщения. Премодерация держит новое сообщение скрытым до проверки, постмодерация показывает его сразу и оставляет модератору право удалить написанное позже.
Типичные проблемы
Новый форум открыт по прямой ссылке, а в списке его нет.
Компонент выводит только выбранные форумы, и свежий форум в отбор не попал. Список правится в параметрах компонента, а не в административном разделе.
Страница падает с ошибкой «Указанный форум не найден».
Форум удалён или не привязан к текущему сайту, а компонент хранит его прежний идентификатор. Проверяют список форумов и права групп на найденный форум.
Вложение к сообщению не открывается у рядового участника.
Файл отдаётся с проверкой прав, и уровня ниже «Новая тема» для этого не хватает. У модератора та же ссылка открывается без единой ошибки.
Баллы и звания участников не сошлись после правки шкалы.
Пересчёта задним числом платформа не делает: баллы обновляются при новом сообщении или голосовании. Начисление идёт только при включённой бонусной системе форума.
Тему форума не получается завести из административного раздела.
Темы создаются в публичной части, а админка правит только их названия. Скрипт наполнения форума пишут на классах модуля вместо административных форм.
Частые вопросы
Ещё один форум на сайте с другим оформлением - получится?
Да. Второй экземпляр компонента ставят на отдельную страницу со своим шаблоном и своим отбором форумов. Копировать компонент ради этого не нужно, различаются только параметры и шаблон.
Как настроить форум, чтобы свои сообщения не приходили на почту?
Подписка на тему рассылает все её сообщения, включая написанные самим подписчиком. Галочка «Включать свои сообщения в рассылку» снимается в карточке пользователя на вкладке «Форум».
Как добавить всех существующих пользователей на форум?
Профиль участника форума заводится при первом заходе в раздел. Существующих добавляют перебором выборки пользователей и вызовом CForumUser::Add, а для новых вешают обработчик события добавления пользователя.
Можно прописать свои SEO-теги отдельной теме форума?
Штатных полей заголовка и описания у темы нет: правка через SEO-модуль меняет теги сразу всем страницам форума. Свои значения проставляют в шаблоне компонента по данным текущей темы.
Чем форум отличается от комментариев к новостям и товарам?
Движок один и тот же, различается роль. Форум - видимый раздел сайта со своими группами и темами, а комментарии к элементам скрывают форум за блоком отзывов под карточкой.
Смежное
- Сообщества и социальные модули - оглавление подтемы
- Блоги, форумы, опросы и медиабиблиотека - концепт раздела, устройство четырёх модулей
- Комментарии и отзывы к контенту - тот же модуль в роли скрытого движка комментариев к элементам
- Группы пользователей - кому выдают уровни доступа форума
- Права не применяются - уровень выдан, а доступа нет
- Шаблон чужого компонента - переделка вёрстки форума
- Настройка поиска по сайту - индексация сообщений форума
- Спам через формы сайта - капча и защита от ботов
- Опрос на сайте - соседний социальный модуль
- Блог на сайте: записи, черновики, комментарии и права - соседний модуль сообществ с другими правами
- Медиабиблиотека и видео: коллекции, права, плеер - куда складывать картинки и видео раздела