FastComments.com

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

Контекст

Здесь вы найдете подробную документацию по каждой из функций и параметров, которые поддерживает виджет комментариев.

Эта документация охватит основные концепции и подробно рассмотрит каждую область функциональности, включая практические руководства и распространённые подводные камни.

Будут приведены примеры кода с выделением соответствующих строк. Там, где это применимо, будут предоставлены скриншоты страниц настройки.

Примеры кода будут использовать нашу библиотеку на чистом JavaScript, однако параметры конфигурации используют те же самые имена для всех версий виджета комментариев (React, Vue и т.д.).

Большинство настроек и функций, описанных в этом руководстве, не требуют написания какого-либо кода.

Отображение тех же комментариев на разных страницах Internal Link


Поскольку параметр urlId позволяет нам определить, к какой странице или идентификатору привязаны комментарии, мы можем просто установить urlId на одинаковое значение на этих страницах.

The Same Comments on Multiple Pages
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "urlId": "https://example.com/source-page"
8}];
9</script>
10

Пользовательские шрифты Internal Link

FastComments создан для кастомизации, и шрифт, который используют наши виджеты, не является исключением.

По умолчанию FastComments использует system font stack, чтобы выглядеть максимально хорошо на широком диапазоне устройств.

Чтобы задать собственные шрифты, см. Документация по пользовательскому CSS.

Там вы найдёте способ определить пользовательский CSS, который позволит вам задать желаемые шрифты.

Как задать шрифт

Чтобы переопределить шрифт, мы рекомендуем определять ваш CSS с использованием селекторов .fast-comments, textarea. Например:

Пример внешнего шрифта
Copy CopyRun External Link
1
2@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap');
3.fast-comments, textarea {
4 font-family: 'Roboto', sans-serif;
5}
6

Поддержка тёмного фона (тёмная тема) Internal Link

По умолчанию виджет комментариев FastComments автоматически определяет тёмный режим на большинстве сайтов.

Когда обнаруживается тёмный режим, FastComments переключит чёрный текст на белом фоне на белый текст на чёрном фоне. Изображения также будут изменены.

При загрузке страницы виджет попытается определить, насколько тёмный фон страницы позади виджета комментариев. Это означает, что страница может иметь белый фон, но если вы поместите виджет комментариев внутри контейнера с чёрным фоном, тёмный режим должен всё равно автоматически включиться, чтобы сделать комментарии читаемыми.

Однако механизм обнаружения, который опирается на определение "luminance", может не включать тёмный режим тогда, когда вы хотите. Чтобы принудительно его включить, установите флаг hasDarkBackground в true следующим образом:

Force Dark Background Mode
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "hasDarkBackground": true
8}];
9</script>
10

Связывание комментариев со страницами Internal Link

При отправке уведомлений по электронной почте, или при отображении комментариев в интерфейсах пользователя, таких как страница модерации, полезно иметь возможность ссылаться из комментария на страницу, на которой он находится.

Если URL ID не всегда является идентификатором, то нам надо сохранить URL в другом месте. Именно для этого существует свойство "url", определённое следующим образом.

Defining a Custom URL
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "url": "https://example.com/article-5"
8}];
9</script>
10

Обычный сценарий использования — привязать поток комментариев к какому‑то идентификатору, например статье, а затем ссылаться назад на конкретную страницу, например:

Defining Custom URL and URL IDs together
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "url": "https://example.com/article-5",
8 "urlId": "article-5"
9}];
10</script>
11

URL не очищается от распространённых маркетинговых параметров. По умолчанию сохраняется тот URL текущей страницы, который есть в данный момент.


Определение, какую страницу отображать Internal Link


При получении и отображении комментариев виджету комментариев нужно знать, с какой страницы начинать. По умолчанию он начинает с первой страницы, отображая только эту страницу.

Если необходимо, точную страницу, которую нужно отобразить, можно передать виджету комментариев через настройку startingPage.

Specifying The Page to Render
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "startingPage": 1
8}];
9</script>
10

Обратите внимание, что нумерация страниц начинается с нуля, поэтому приведённый выше пример отображает вторую страницу.


Переключение веток комментариев без перезагрузки страницы Internal Link

Мы рассмотрели, что urlId — это идентификатор страницы или статьи, к которой привязаны комментарии.

И ещё, в кратце: если urlId не задан, он по умолчанию будет равен URL текущей страницы.

А как быть с SPA (Single-Page Applications), где страница или содержимое, к которому привязаны комментарии, меняется динамически без полной перезагрузки страницы?

Angular, React, Vue, etc

С нашими библиотеками, такими как Angular и React, достаточно просто обновить свойство urlId, передаваемое в виджет — это приведёт к обновлению виджета комментариев. Например, вы можете увидеть это в действии для React-приложения здесь.

VanillaJS

Если вы используете библиотеку VanillaJS, всё немного сложнее, так как нет фреймворка вроде Angular или React, который бы обрабатывал привязку данных или распространение состояния.

Когда вы создаёте экземпляр виджета VanillaJS, он возвращает несколько функций, которые можно вызвать для его обновления.

Вот рабочий пример, где мы меняем хэш страницы и обновляем виджет комментариев:

Пример переключения хэша страницы
Copy CopyRun External Link
1
2<script src="https://cdn.fastcomments.com/js/embed-v2.min.js"></script>
3<button id="change-page"></button>
4<div id="fastcomments-widget"></div>
5<script>
6 (function fastCommentsMain() {
7 let config = {
8 tenantId: 'demo'
9 };
10 let instance = window.FastCommentsUI(document.getElementById('fastcomments-widget'), config);
11
12 let page = '#page-1';
13 function getNextPage() {
14 if (page === '#page-1') {
15 return '#page-2';
16 } else {
17 return '#page-1';
18 }
19 }
20
21 let button = document.getElementById('change-page');
22 function nextPage() {
23 page = getNextPage();
24 button.innerText = 'Go to ' + getNextPage();
25 window.location.hash = page;
26 let locationString = window.location.toString();
27
28 config.url = locationString; // Мы также обновляем url, чтобы уведомления могли ссылаться на правильную страницу
29 config.urlId = locationString;
30
31 instance.update(config);
32 }
33 nextPage();
34 button.addEventListener('click', nextPage);
35 })();
36</script>
37

Отключить перенаправление изображений Internal Link

По умолчанию FastComments позволяет пользователям загружать изображения. Когда пользователь нажимает на это изображение, FastComments, по умолчанию, откроет новую вкладку, чтобы показать изображение полностью. Установка этого флага в true отключает такое поведение:

Disable Image Redirect
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "disableImageRedirect": true
8}];
9</script>
10

Если вы не планируете перехватывать щелчок по изображению самостоятельно (см. onImageClicked), мы рекомендуем сочетать это с некоторыми стилями чтобы убрать видимость того, что изображение можно нажать.

Выделение новых комментариев Internal Link

FastComments предоставляет несколько способов выделять новые комментарии.

Прежде всего, по умолчанию комментарии, которые вызвали уведомление в приложении (ответы, ответы в той же ветке или комментарии на странице, на которую вы подписаны), автоматически подсвечиваются — аватар пользователя слегка светится. Цвет можно настроить через CSS с помощью класса is-unread.

К комментариям, опубликованным за последние 24 часа, применяется класс 24hr, который можно использовать для стилизации.

Наконец, любые новые живые комментарии, которые появляются в сессии пользователя, будут выделяться в течение нескольких секунд с помощью анимации. Это делается через CSS-класс is-live, который также можно настроить.

Шаблоны писем Internal Link


Письма, отправляемые FastComments вашим клиентам, можно настроить. Шаблон, логика, и переводы — всё это можно изменить. Текст можно настраивать для каждого локаля, а стили можно даже изменять для каждого домена. Узнайте больше о пользовательских шаблонах писем здесь.


Размещать новые комментарии в реальном времени внизу Internal Link

По умолчанию новые комментарии в реальном времени появляются в верхней части списка комментариев по мере их публикации.

Когда эта опция включена, новые комментарии в реальном времени будут добавляться в нижнюю часть списка. Это влияет на то, как комментарии появляются при их публикации в режиме реального времени, пока пользователи просматривают ветку комментариев.

New Live Comments to Bottom
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "newCommentsToBottom": true
8}];
9</script>
10

With this setting enabled:

  • Новые комментарии в реальном времени, опубликованные другими пользователями, будут появляться в нижней части списка комментариев
  • Пользователи будут видеть, как новые комментарии появляются ниже уже существующих в режиме реального времени
  • Это влияет только на обновления комментариев в реальном времени - не на первоначальную загрузку страницы
  • Это может помочь поддерживать поток чтения, когда пользователи следят за обсуждением

Note that this setting only affects where new live comments are placed as they arrive in real-time. It does not affect the initial sort order when the page loads.

Включение бесконечной прокрутки Internal Link

По умолчанию виджет FastComments автоматически изменяет свой вертикальный размер, чтобы вмещать все видимые комментарии. Постраничная навигация выполняется с помощью кнопки "View Next" в конце текущей страницы — это взаимодействие, которое, как мы обнаружили, большинству пользователей кажется наиболее удобным.

Тем не менее, в некоторых случаях предпочитают бесконечную прокрутку. Например, мы используем эту функцию в нашем продукте Stream Chat.

Мы можем скрыть кнопки "View Next" и переключиться на бесконечную прокрутку, установив флаг enableInfiniteScrolling в true:

Enabling Infinite Scrolling
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "enableInfiniteScrolling": true
8}];
9</script>
10

Также требуется добавить пользовательский CSS. Добавьте пользовательский CSS для селектора .comments, чтобы включить прокрутку, например:

Включение бесконечной прокрутки
Copy CopyRun External Link
1
2.comments {
3 max-height: 500px;
4 overflow-y: auto;
5}
6

Полный рабочий пример будет выглядеть так:

Enabling Infinite Scrolling
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "enableInfiniteScrolling": true,
8 "customCSS": ".comments { max-height: 500px; overflow-y: auto; }"
9}];
10</script>
11

В приведённом выше примере мы используем свойство customCSS, однако для повышения производительности рекомендуется использовать UI конфигурации виджета. Смотрите документацию по Custom CSS.


Отображать все комментарии сразу — отключить пагинацию Internal Link

Чтобы отключить пагинацию и отобразить все комментарии сразу, установите startingPage в -1.

Render All Comments
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "startingPage": -1
8}];
9</script>
10

Запретить добавление новых верхнеуровневых комментариев Internal Link

Установка noNewRootComments в true заставит виджет скрыть область корневого ответа, но при этом позволит пользователям отвечать на дочерние комментарии. Вы, например, можете задать это условно при загрузке страницы, чтобы разрешить только некоторым пользователям оставлять комментарии верхнего уровня.

Prevent New Root Comments
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "noNewRootComments": true
8}];
9</script>
10

Максимальная глубина ответов Internal Link

По умолчанию FastComments позволяет неограниченно вкладывать ответы, создавая древовидную структуру, где пользователи могут отвечать на ответы бесконечно.

Опция maxReplyDepth позволяет ограничить глубину веток ответов. Когда достигается максимальная глубина, пользователи больше не увидят кнопку ответа в комментариях на этом уровне.

Limiting Reply Depth to 2 Levels
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "maxReplyDepth": 2
8}];
9</script>
10

With maxReplyDepth set to 2:

  • Пользователи могут оставлять комментарии на верхнем уровне (уровень 0)
  • Пользователи могут отвечать на комментарии верхнего уровня (уровень 1)
  • Пользователи могут отвечать на эти ответы (уровень 2)
  • Дальнейшие ответы глубже уровня 2 не допускаются

Установка значения 1 позволит отвечать только на комментарии верхнего уровня, создавая более плоскую структуру обсуждения.

Установка maxReplyDepth в 0 отключит все ответы, разрешив только комментарии верхнего уровня. Если не указано, ответы могут вкладываться без ограничений.

Обзор единого входа (SSO) Internal Link

SSO, или single-sign-on, — это набор соглашений, позволяющих вам или вашим пользователям использовать FastComments без необходимости создавать ещё одну учётную запись.

Предполагая, что вы не разрешаете анонимные комментарии, для комментирования в FastComments требуется учётная запись. Мы делаем процесс регистрации очень простым — пользователь просто оставляет свой email при комментировании. Однако мы понимаем, что даже это может быть лишним трением, от которого некоторые сайты хотят избавиться.

Мы можем уменьшить это трение, имея только один поток входа для всего вашего сайта.

How do I get it?

Все типы аккаунтов в настоящее время получают доступ к SSO. Однако максимальное количество пользователей SSO будет варьироваться в зависимости от вашего пакета. Как и с другими функциями, планы Pro и выше предоставляют прямую поддержку разработки.

Давайте сравним варианты, а затем разберём детали каждого.

User and Comment Migrations

При миграции с платформы с SSO, такой как Disqus, у вас уже будут пользователи и их комментарии.

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

Пользователи сами добавляются автоматически при первом просмотре веток комментариев. Альтернативно, их можно предварительно добавить через API, но у этой работы нет многих преимуществ.

Если комментарии импортированы, а пользователи SSO не добавлены вручную через API, то комментарии будут автоматически перенесены в аккаунт пользователя при первом создании его аккаунта при просмотре любой ветки комментариев. После этого они смогут управлять, редактировать и удалять комментарии, которые изначально написали.

Автоматическая миграция выполняется по email или имени пользователя. Некоторые платформы не предоставляют email при экспорте, например Disqus, поэтому в таком случае мы используем имя пользователя.

  • Пока вы передаёте совпадающее имя пользователя и email в SSO-пейлоаде, мы добавим email в отдельные объекты комментариев, чтобы уведомления и упоминания работали.

Если требуется импортировать комментарии и пользователей одновременно, работайте со службой поддержки, чтобы перенести комментарии на соответствующие аккаунты пользователей после того, как пользователи будут импортированы через API.

Итак, чтобы суммировать самый простой путь миграции:

  1. Импортируйте комментарии.
    1. Аватары и другие медиа мигрируются автоматически при использовании Import UI в Manage Data -> Imports.
  2. Настройте Secure или Simple SSO.
  3. Позвольте миграции происходить автоматически для каждого пользователя при их первом входе.
    1. Это обычно добавляет менее секунды к времени загрузки страницы, если у пользователя менее 50k комментариев.

WordPress Users

Если вы используете наш плагин WordPress, то писать код не нужно! Просто перейдите на страницу администратора плагина, нажмите SSO Settings, а затем Enable.

Это приведёт вас в мастер с одним нажатием кнопки, который создаст ваш API-ключ, отправит его на ваш WordPress и включит SSO. Мы объединили это в одно нажатие для вашего удобства.

Обратите внимание, что если вы устанавливаете плагин впервые, вам придётся пройти процесс настройки, прежде чем вы увидите страницу администратора с кнопкой SSO Settings.

WordPress SSO - Moderators

Обратите внимание, что в настоящее время для отображения бейджа «Модератор» рядом с вашими модераторами при комментировании с помощью плагина FastComments для WordPress, они также должны быть добавлены в качестве Модератора на панели FastComments и иметь подтверждённый email.

Custom Integrations

Для пользовательских интеграций есть два варианта.

Option One - Secure SSO

С Secure SSO FastComments знает, что пользователь, который комментирует, голосует и читает комментарии, — это реальный пользователь на вашем сайте.

Пока вы создаёте корректный пейлоад, пользователь всегда получает бесшовный опыт комментирования.

С Secure SSO SSO-пейлоад создаётся на стороне сервера с использованием HMAC-аутентификации и затем передаётся виджету на клиенте.

С Secure SSO аккаунт пользователя полностью отделён от остальной базы пользователей FastComments. Это означает, что если у нас есть два партнёра Компания A и Компания B, у каждого может быть SSO-пользователь с именем пользователя "Bob".

Requirements

  • Базовые навыки разработки серверной части.
  • Базовые знания по работе с секретными API-ключами.
  • Базовые знания по разработке API или серверному рендерингу.

Pros

  • Безопасно.
  • Бесшовный опыт комментирования.

Cons

  • Требуется разработка серверной части.

Updating User Data

С Secure SSO каждый раз, когда вы передаёте SSO-пейлоад пользователя, мы обновляем его профиль с последней информацией. Например, если у пользователя имя пользователя X, и вы передаёте Y в SSO-пейлоаде, его имя пользователя станет Y.

Если вы хотите удалить значения, используя этот подход, установите их в null (не undefined).

Secure SSO API

Мы также предоставляем API для взаимодействия с SSO-пользователями. Смотрите the docs.

Обратите внимание, что при использовании Secure SSO пользователи автоматически создаются в фоне при загрузке страницы. Вам не нужно массово импортировать ваших пользователей.

Option Two - Simple SSO

Альтернатива Secure SSO — просто передавать информацию о пользователе в виджет комментариев.

Предоставление email при Simple SSO не обязательно, однако без него их комментарии будут отображаться как "Unverified".

Примечание! По состоянию на начало 2022 года имена пользователей при Simple SSO не обязаны быть уникальными по всему FastComments.com.

Идеально, Simple SSO следует выбирать только при разработке на платформе, которая не предоставляет доступ к серверной части.

Requirements

  • Базовые знания клиентской разработки.
  • Необходимо знать по крайней мере email пользователя.

Pros

  • Просто.
  • Вся активность по-прежнему проверяется.
  • Пользователь никогда не вводит своё имя пользователя или email.

Cons

  • Менее безопасно, чем Secure SSO, поскольку пейлоад на стороне клиента может быть подделан для притворства любым пользователем.

Simple SSO API

Пользователи, автоматически созданные через поток Simple SSO, хранятся как SSOUser объекты. К ним можно получить доступ и управлять ими через SSOUser API. Смотрите the docs.

Пользовательские интеграции — простой единый вход (SSO) Internal Link

С помощью Simple SSO мы можем предоставить виджету комментариев информацию о пользователе, чтобы не приходилось вводить имя пользователя или электронную почту для комментирования.

Мы можем настроить Simple SSO следующим образом:

Simple SSO
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "simpleSSO": {
8 "username": "Bob",
9 "email": "bob@example.com",
10 "avatar": "https://example.com/bob.png",
11 "websiteUrl": "https://example.com/profiles/bob",
12 "displayName": "Bob's Name",
13 "displayLabel": "VIP User",
14 "loginURL": "https://example.com/login",
15 "logoutURL": "https://example.com/logout",
16 "badgeConfig": {
17 "badgeIds": [
18 "badge-id-1",
19 "badge-id-2"
20 ],
21 "override": false
22 }
23 }
24}];
25</script>
26

Пользователь будет авторизован, и за кулисами будет создан SSO-пользователь. У пользователя будет установлено createdFromSimpleSSO в true, если данные получены через API.

Notes:

  • Электронная почта является уникальным идентификатором для Simple SSO.
  • Указание электронной почты при использовании Simple SSO не обязательно, однако по умолчанию их комментарии будут отображаться как "Не подтверждено". Если электронная почта не указана, пользователь не может быть полностью аутентифицирован.
  • НОВОЕ С января 2022 года: имена пользователей не обязаны быть уникальными на всём сайте fastcomments.com
  • Simple SSO может автоматически создавать и обновлять SSO-пользователей, если указана электронная почта и пользователь изначально не был создан через Secure SSO.
  • Вы можете указать значки для пользователя с помощью свойства badgeConfig. Массив badgeIds содержит идентификаторы значков, которые следует связать с пользователем. Если override установлен в true, это заменит все существующие значки, отображаемые в комментариях; если false, новые значки будут добавлены к существующим.

Пользовательские интеграции — миграция с Disqus SSO Internal Link

Главные различия между Disqus и FastComments Secure SSO в том, что Disqus использует SHA1 для шифрования, тогда как мы используем SHA256. Это означает, что миграция с Disqus проста - поменяйте используемый алгоритм хеширования с SHA1 на SHA256 и обновите имена свойств, передаваемых в UI.

Пользовательские интеграции — миграция с Commento SSO Internal Link

Commento использует принципиально иной подход к SSO - они требуют, чтобы у вас был endpoint, который они вызывают для аутентификации пользователя. FastComments работает наоборот - просто закодируйте и захешируйте информацию о пользователе, используя ваш secret key, и передайте её.

Обратные вызовы Internal Link

Все библиотеки для виджета комментариев (в настоящее время Angular, React, Vue) поддерживают обратные вызовы.

Обратные вызовы задаются в объекте конфигурации и имеют одинаковую сигнатуру для каждой библиотеки.

Поддерживаемые обратные вызовы:

  • onInit
  • onAuthenticationChange
  • onRender
  • commentCountUpdated
  • onReplySuccess
  • onVoteSuccess
  • onImageClicked
  • onOpenProfile
  • onCommentSubmitStart
  • onCommentsRendered

Точные сигнатуры можно найти в Определениях TypeScript.

Вот пример, в котором используются все обратные вызовы:

Примеры обратных вызовов
Copy CopyRun External Link
1
2<script src="https://cdn.fastcomments.com/js/embed-v2.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.FastCommentsUI(document.getElementById('fastcomments-widget'), {
6 tenantId: 'demo',
7 onInit: function () {
8 console.log('Library started to fetch comments!');
9 },
10 onAuthenticationChange: function (eventName, userObj) {
11 console.log('User authenticated!', eventName, userObj);
12 },
13 onRender: function () {
14 console.log('Render event happened!');
15 },
16 commentCountUpdated: function (newCount) {
17 console.log('New comment count:', newCount);
18 },
19 onReplySuccess: function (comment) {
20 console.log('New comment saved!', comment);
21 },
22 onVoteSuccess: function (comment, voteId, direction, status) {
23 console.log('New vote saved!', comment, voteId, direction, status);
24 },
25 onImageClicked: function (src) {
26 console.log('Image clicked!', src);
27 },
28 onOpenProfile: function (userId) {
29 console.log('User tried to open profile', userId);
30 // return true; // вернуть true, чтобы предотвратить поведение по умолчанию (открытие профиля пользователя на fastcomments.com).
31 },
32 onCommentSubmitStart: function(comment, continueSubmitFn, cancelFn) {
33 console.log('Trying to submit comment', comment);
34 setTimeout(function() { // имитация асинхронного поведения (вызов API и т.д.).
35 if(confirm('Should submit?')) {
36 continueSubmitFn();
37 } else {
38 cancelFn('Some optional error message');
39 }
40 }, 1000);
41 },
42 onCommentsRendered: function(comments) {
43 // комментарии отсортированы по умолчанию на странице, что может быть Most Relevant (например: наиболее оценённые и т.д.), или Newest First
44 const topCommentInList = comments[0];
45 console.log('First Comment Rendered:', topCommentInList.avatarSrc, topCommentInList.commenterName, topCommentInList.commentHTML);
46 }
47 });
48</script>
49

Заголовки страниц Internal Link

Текущий заголовок страницы связан с указанным urlId и сохраняется для использования в инструментах модерации.

По умолчанию он извлекается из document.title.

При необходимости можно указать собственный заголовок страницы следующим образом:

Specifying The Page Title
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "pageTitle": "Article 42"
8}];
9</script>
10

Счётчик комментариев и учёт всех вложенных ответов Internal Link

Количество комментариев, отображаемое в верхней части виджета комментариев, может показывать либо все «комментарии верхнего уровня», то есть те ответы, которые являются ответами непосредственно на страницу или саму статью, либо это может быть подсчёт всех вложенных комментариев.

По умолчанию это true — то есть считается второй вариант — все комментарии. В более старых версиях виджета комментариев значение по умолчанию было false.

Мы можем изменить поведение, чтобы это был подсчёт всех вложенных комментариев, установив флаг countAll в true.

Counting All Comments
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "countAll": true
8}];
9</script>
10

Если мы хотели, чтобы счётчик отражал только комментарии верхнего уровня, мы устанавливаем флаг в false.

Counting Top Level Comments
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "countAll": false
8}];
9</script>
10

В настоящее время это нельзя настроить без изменений в коде.

Идентификаторы групп для упоминаний Internal Link

Список идентификаторов, используемых для автозаполнения @упоминаний. Полезно, когда вы хотите предотвратить отметку пользователей, если у них нет пересекающихся групп.

Если указано, в автозаполнении после ввода символа @ будут предлагаться только пользователи из других групп.

Limit Groups for Mentions
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "mentionGroupIds": [
8 "yxZAhjzda",
9 "QT19nXbqB"
10 ]
11}];
12</script>
13