Функционал форума основан на базовом функционале системы. Это подразумевает, что ввод и вывод данных осуществляется посредством компонентов форума, в которых и находится основная часть кода. Макеты дизайна системы не требуют никаких доработок для обеспечивания нормального функционирования форума. Дополнительные расширения форума в макетах (вывод списка последних сообщений, количества форумов и т.п.) добавляются как обычные компонентные расширения.
Такой подход позволяет максимально гибко настраивать форум без изменения ядра системы и файлов модуля. Все основные запросы к БД (базе данных) находятся в системных настройках компонентов, что даёт возможность расширять их и оптимизировать под конкретные задачи проекта. Нет никаких ограничений на изменение внешнего вида форума.
Для повышения производительности в БД находится несколько таблиц, которые хранят информацию о категориях и разделах форума, количестве топиков и ответов, просмотров на них и т.п. Данные попадают в эти таблицы при трансляции системных событий, которые затрагивают функционал форума. Например, при добавлении сообщения (стандартный функционал системы) в раздел форума обновляется информация в БД о количестве сообщений на форуме.
Для упрощения работы с данными из БД в модуле предусмотрен определённый набор функционала, о котором будет рассказано ниже.
Для того чтобы на сайте появился новый форум, следует выполнить несколько несложных действий. Основное действие — это добавление корневого раздела форумов (раздел в котором находятся все форумы, и таких разделов может быть несколько). Корневой раздел форумов может так же называться родительским или корневым форумом, все эти определения синонимичны.
Чтобы создать новый корневой раздел форумов, достаточно в административной панели системы добавить новый раздел и подключить к нему компонент «Список форумов». Стоит заметить, что в этом случае параметр TRACKING_MODE в настройках модуля не должен быть равен 0, подробности в разделе «Константы модуля». После этого, система автоматически идентифицирует этот раздел, как относящийся к модулю «Форум». Если требуется создать трансляцию списка форумов в данном разделе посредством RSS, это сделать весьма несложно. Достаточно в созданный раздел добавить ещё один компонент «Список форумов», указав при этом, что для отображения следует использовать шаблон компонента «RSS».
Следует отметить, что функционал форума не поддерживает модуль "Кэширование". Отображение многих данных зависит от привилегий пользователя (ссылки на редактирование сообщений, назначение прав пользователям и т.п.). Ко всему прочему, издержки на поддержание актуальности кэша столь динамичного контента слишком велики.
Далее можно приступить непосредственно к добавлению форумов в раздел. Сделать это можно как минимум двумя разными способами:
Зайти на сайт (front-office), найти раздел форум и нажать на ссылку "Добавить форум" (при условии достаточных прав — администратор корневого раздела, отобразится форма добавления). В появившейся форме нужно ввести информацию о новом форуме.
В административной панели системы следует добавить новый подраздел в корневой раздел форумов. Далее следует подключить к разделу сначала компонент «Топики», а затем компонент «Ответы». Присвоив каждому легкоидентифицируемые ключевые слова, например, topic и reply, соответственно. Стоит заметить, что в этом случае параметр TRACKING_MODE в настройках модуля не должен быть равен 0, подробности в разделе «Константы модуля». Система автоматически идентифицирует этот раздел как относящийся к модулю «Форум».
Описанных действий достаточно для начала работы форума.
Права на разделы форума назначаются и учитываются так же, как и на любые другие разделы системы. Если установить право на чтение раздела конкретного форума под названием «Зарегистрированные», то содержимое раздела смогут увидеть только зарегистрированные пользователи. Описаное актуально и для компонентов в разделе.
В каждом форуме можно также указать, кто может добавлять топики «Важное», «Объявление», а так же закрывать и открывать топики. Для этого следует выбрать раздел форума в карте сайта, перейти к списку используемых компонентов, выбрать настройки компонента в разделе «Топики» (название может отличаться, если при создании было указано другое) и перейти к «Визуальным настройкам компонента». Далее из списка следует выбрать желаемое значение.
Может возникнуть ситуация, когда наряду с обычными форумами в разделе подразумевается наличие форума, который могут видеть только определённые пользователи. Список форумов формируется запросом к БД MySQL в компоненте «Список форумов», можно модифицировать этот запрос, но это замедлит формирование списка. Альтернатива данному способу — создать отдельный раздел с форумами, которые будут видны определённым пользователям или группам пользователей.
Для подключения этого функционала необходимо создать в личном кабинете соответствующий раздел и добавить в него компонент "Форум v2: Для личного кабинета". В настройках модуля личный кабинет(системные) необходимо выбрать этот раздел в настройке "Раздел с материалами пользователя"
Функционал модуля выполнен в объектно-ориентированном стиле. В форуме присутствуют 4 основные сущности, которые связаны с компонентами форума:
Объект списка форумов. По сути, это объект управления корневыми разделами форумов. Связанный компонент: "Список форумов".
Объект форумов. Содержит в себе методы для получения информации о форумах, а также методы модификации этой информации. Связанный компонент: "Топики". Данный компонент даёт понять системе, что раздел относится к модулю "Форум", поэтому он и связан с этим объектом и объектом топиков.
Объект топиков. Содержит в себе методы для получения информации о топиках, а также методы модификации данной информации. Связанный компонент: "Топики".
Объект ответов. Содержит в себе методы для получения информации об ответах на топики, а также методы модификации данной информации. Связанный компонент: "Ответы".
Ниже приведён список доступных методов для каждого объекта. Все описанные методы относятся к публичному уровню доступа (public).