Component Forum

Компонент: Forum

Если тематика сайта предполагает обратную связь от посетителей, то форум будет одним из лучших решений организации общения людей на сайте. Фреймворк предоставляет такой компонент.

Форум реализован как расширение компонента Comments, который обеспечивает основной функционал. За разграничение прав доступа к управлению контентом отвечает компонент Users. Поэтому вместе с установкой компонента Forum требуется установка и этих компонентов.

Вывод на сайте

После установки компонента адрес главной страницы форума (/forum/) необходимо добавить в навигацию сайта.

Следующим шагом будет добавление основных разделов. Сделать это можно в админке в разделе «Форум» (admin/forum/), заполнив необходимые поля: заголовок, описание (если требуется), установить галку в чекбоксе «Может иметь темы» для возможности добавления новых тем, в поле «Сортировка» можно задать очередность вывода разделов.

Если требуется формировать ЧПУ для раздела, то на вкладке «Доп. параметры» в поле «мнемокод» пишем нужное мнемоническое имя.

Теперь форум стал доступен для наполнения контентом.

Следующей задачей будет изменение настроек под конкретные нужды проекта.

Настройки конфигурации

Для изменения настроек конфигурации необходимо завести папку /app/components/Forum/app/config/, скопировать в нее файл common.php из папки /app/components/Forum/config/. И менять нужные настройки уже в этом файле.

//app/components/Forum/app/config/common.php
return array(
	'perpage' => 20,
	'include_subsections' => true,
	'searchable' => false,
	'date_format' => 'd.m.Y в H:i',
	'editor' => array(
		'bbcode' => true,
		'smiles' => array('type' => 'vk'),
	),
	'notifications' => array(
		'from' => 'forum@hostname',
		'admin_email' => 'var:forum.admin_email',
		'subjects' => array(
			'new_post' => 'Новое сообщение на форуме',
			'topic_closed' => 'Тема закрыта',
		),
	),
	'auto_subscribe_author' => true,
	'show_topic_pager_in_list' => true,
	'hide_topic_intro' => true,
	'attaches' => array(
		'enable' => true,
		'valid_extensions' => array(),
		'invalid_extensions' => array(),
	),
	'avatar_size' => '100x100',
);

Все доступные настройки

  • perpage - определить количество тем в разделе и количество сообщений в теме. Значение по умолчанию: (int) 20.
  • include_subsections - выводить ли дерево подразделов или только первого уровня. Значение по умолчанию: (bool) true.
  • searchable - индексация разделов и тем для компонента FTSearch: Поисковая система. Значение по умолчанию: (bool) true.
  • date_format - изменить текущий формат времени добавленного сообщения. Значение по умолчанию: (string) d.m.Y в H:i.
  • editor - настройка редактора формы добавления сообщения. По умолчанию она закомментирована, и настройки берутся из компонента Comments. Если описание настройки раскомментировать и добавить свои натсройки, то они будут влиять только на форму добавления сообщения в темах. Параметры:
    • bbcode - включить или отключить теги редактирования Bbcode. Значение (bool) true/false.
    • smiles - подключить набор смайликов. Значение (array) ключ type => значение (на выбор 2 предустановленных параметра vk, balls или пользовательский).
  • notifications - настройка оповещений. Отсылается 2 вида сообщений: при добавлении нового сообщения, и при закрытии темы.
  • auto_subscribe_author - автоподписка автора на получение уведомления о новых ответах.
  • show_topic_pager_in_list - выводить навигацию под заголовком темы.
  • hide_topic_intro - не отображать первое сообщение на второй и последующих страницах.
  • attaches - разрешить загрузку файлов, картинок.
  • avatar_size - размер аватарки (по умолчанию 100х100пксл)

Шаблоны

Если есть необходимость изменить внешний вид страниц форума (например убрать какие-либо блоки или добавить), то, кроме изменения таблиц стилей, можно и нужно изменять шаблоны по своему усмотрению. Шаблоны для переопределения не забываем выносить в папку app/components/Forum/app/views/.

Основные шаблоны:

  • Для главной страница форума с разделами:
    • page-header.phtml - отображение служебной информации в «шапке»
    • page-footer.phtml - отображение служебной информации в «подвале»
    • section-page.phtml - вывод блоков заголовка, подвала, шапки
    • section-page-subsection.phtml - отображение списка разделов
  • Для страницы с темами раздела:
    • section-page-topics.phtml - список всех тем
    • Форма поиска
      • search-page.phtml - форма расширенного поиска
      • search-form.phtml - форма поиска (строка поиска, статистика, ссылка на расширенный поиск)
  • Форма добавления новой темы
    • topic-form.phtml
  • Страница вывода темы и всех сообщений по этой теме
    • topic-page вывод формы добавления нового сообщения (из компонента Comments)
    • topic-page-posts - вывод всего списка сообщений
    • topic-page-posts-post - отображение блока с одним сообщением в теме
    • topic-edit - форма редактирования сообщения

Все шаблоны доступны в папке app/components/Forum/views/.

Поиск по форуму

Блок поиска выводится в разделе со списком тем. Реализован расширенный поиск, который включает в себя:

  • Поиск по автору
  • Выбор раздела форума или другого форума, если их организовано больше одного
  • Возможность поиска в подфорумах
  • Выбор временного периода, за который будет формироваться выборка сообщений

Для реализации другого формата поиска необходимо учесть, что все последующие сообщения (кроме первого) реализованы с помощью компонента Comments, т.е. по сути являются комментариями.

Организация прав доступа к управлению форумом

Разграничение прав доступа на модерирование форума реализовано на основе компонента Users. Основные настройки производятся в админке в разделе «Пользователи» (admin/users/).

1. Единоличный доступ.

Отдельного пользователя можно назначить администратором форума, устанавив чекбокс в поле «Администратор» (admin/users/). Ему предоставляются полные права на управление контентом тем и лент сообщений в этих темах.

2. Группа доступа (для групп лиц).

1) В админке admin/users/groups/ в разделе «Группы доступа» создаем группу, где:

  • Код группы - произвольное мнемоническое имя, обычно, связанное по смыслу с названием раздела или нескольких разделов.
  • Название - либо название раздела, либо краткое описание.

2) В списке пользователей (admin/users) у каждой выбранной записи, необходимо на вкладке «Группа доступа» выбрать и отметить галкой нужную группу.

3) Теперь в разделе «Форум» (admin/forum/) в выбранной теме необходимо установить код группы в те поля на вкладке «Дополнительные параметры», которые будут определять функционал для данной группы.

События

Реализована возможность подписаться на некоторые события при создании или удалении темы.

component.forum.section.before.add
Вызывается до того как будет добавлена новая тема.

  • параметры: (object Component.Forum.DB.Sections.Item) тема

component.forum.section.after.add
Вызывается после того, как будет добавлена тема.

  • параметры: (object Component.Forum.DB.Sections.Item) тема

component.forum.section.before.delete
Вызывается до того как тема будет удалена.

  • параметры: (object Component.Forum.DB.Sections.Item) тема

component.forum.section.after.delete
Вызывается после того, как будет удалена тема.

  • параметры: (object Component.Forum.DB.Sections.Item) тема

Т.к. лента сообщений реализована с использованием компонента Comments, можно подписаться на события этого компонента.

06.10.2014
Все статьи