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 чтобы выглядеть максимально хорошо на широком спектре устройств.

Чтобы задать собственные шрифты, см. документацию по Custom 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 переключится с чёрного текста на белом фоне на белый текст на чёрном фоне. Изображения также будут изменяться.

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

Однако механизм определения, который опирается на вычисление «люминанса», может не включить тёмную тему тогда, когда вы этого хотите. Чтобы принудительно включить её, установите флаг 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 и т. д.

В наших библиотеках, таких как 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; // We update url, too, so notifications can link back to the right page
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, который можно использовать для стилизации.

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


Шаблоны писем 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

При включенной этой настройке:

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

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

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

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

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

Мы можем скрыть кнопки «Показать далее» и переключиться на бесконечную прокрутку, установив флаг 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, однако для повышения производительности рекомендуется использовать интерфейс настройки виджета. См. документацию по пользовательскому 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

При установке maxReplyDepth в 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 plugin отображалась бейдж «Moderator», они также должны быть добавлены как Moderator в панели управления FastComments и иметь подтверждённый email.

Custom Integrations

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

Option One - Secure SSO

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

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

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

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

Requirements

  • Базовые знания разработки backend.
  • Базовые знания работы с секретными 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".

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

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

Requirements

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

Pros

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

Cons

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

Simple SSO API

Пользователи, автоматически создаваемые через поток Simple SSO, сохраняются как объекты SSOUser. К ним можно получить доступ и управлять ими через API SSOUser. Смотрите 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:

  • Email является уникальным идентификатором для Simple SSO.
  • Предоставление электронной почты при использовании Simple SSO не обязательно, однако по умолчанию их комментарии будут отображаться как "Unverified". Если электронная почта не указана, пользователь не может быть полностью аутентифицирован.
  • НОВОЕ С января 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 // comments отсортированы по умолчанию на странице, что может быть «Наиболее релевантные» (например: наиболее поддержанные и т.д.) или «Сначала новые»
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


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

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

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