Files
ave-cms/help/modules/faq.md
T
2026-07-27 12:58:44 +03:00

4.2 KiB

Вопросы и ответы

Модуль хранит независимые коллекции частых вопросов. Коллекцию можно открыть как отдельную публичную страницу, вставить в любой документ или шаблон и получить через JSON API. Опубликованные вопросы могут автоматически формировать структурированные данные FAQPage.

Быстрый старт

  1. Откройте Модули → Вопросы и ответы.
  2. Создайте коллекцию и задайте стабильный системный код, например delivery.
  3. Сохраните коллекцию, добавьте вопросы и оформите ответы в rich-text редакторе.
  4. Вставьте коллекцию в документ, блок, рубрику или шаблон:
[mod_faq:delivery]

Тег принимает код или ID, однако код удобнее при переносе данных между установками. Публичная страница по умолчанию будет доступна по адресу /faq/delivery, а архив всех опубликованных коллекций — по адресу /faq.

Режимы вывода

Режим Поведение
Аккордеон Ответ открывается посетителем через нативный элемент details.
Только один открыт Открытие следующего вопроса сворачивает предыдущий.
Раскрытый список Все ответы сразу открыты и доступны без взаимодействия.

Переключатель Schema.org добавляет FAQPage JSON-LD. В него попадают только опубликованные вопросы опубликованной коллекции. HTML ответа удаляется из структурированных данных, но сохраняется в обычном публичном выводе.

Шаблоны

Шаблон коллекции получает:

[tag:id] [tag:code] [tag:title] [tag:description]
[tag:mode] [tag:count] [tag:items] [tag:schema]

Шаблон вопроса получает:

[tag:id] [tag:collection-id] [tag:question] [tag:answer]
[tag:group] [tag:open]

[tag:group] и [tag:open] содержат готовые HTML-атрибуты для штатного details. Если разметка полностью заменяется, эти теги можно не использовать.

Архив использует два шаблона. Его оболочка получает [tag:items] и [tag:count], а одна коллекция в архиве — [tag:id], [tag:code], [tag:title], [tag:description], [tag:count] и [tag:url].

API и hook

GET /api/v1/faq/{code-or-id} возвращает коллекцию и массив опубликованных вопросов. Endpoint подходит для собственного аккордеона или живого интерфейса, который не использует серверный HTML.

Фильтр faq.rendering получает массив:

array(
	'collection' => $collection,
	'html' => $html,
)

Обработчик может изменить html и вернуть весь массив. Исходный ответ считается доверенным контентом редактора, поэтому право управления FAQ следует выдавать только сотрудникам, которым разрешено публиковать HTML.

Удаление

Удаление коллекции каскадно удаляет все её вопросы. Uninstall модуля полностью удаляет обе таблицы и данные FAQ. Экспортируйте нужное содержимое до удаления пакета.