FastComments.com

自定义与配置

背景

在这里,您将找到有关评论小部件所支持的每个功能和设置的深入文档。

本档将涵盖核心概念,并深入探讨每个功能领域,包含操作指南和常见陷阱。

将提供代码示例,并突出显示相关行。必要时还会提供配置页面的截图。

代码示例将使用我们的纯 JavaScript 库,但配置选项在所有版本的评论小部件(React、Vue 等)中使用完全相同的名称。

本指南中概述的大多数配置和功能无需编写任何代码。


在不同页面呈现相同评论 Internal Link


由于 urlId 参数允许我们定义评论所绑定的页面或 id,我们只需在这些页面上将 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 的方法,从而允许您设置所需的字体。

如何定义字体

要覆盖字体,我们建议使用 .fast-comments, textarea 选择器来定义您的 CSS。例如:

自定义外部字体示例
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 不总是一个 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 即为随评论存储的 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 是评论所绑定的页面或文章的 id。

另外,回顾一下,如果未定义,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; // 我们也更新 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 类,可用于样式化。

最后,任何在用户会话中出现的新实时评论会通过动画高亮显示数秒。这是通过 is-live CSS 类实现的,也可以自定义。


电子邮件模板 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 小部件会按垂直方向调整大小以适应所有可见评论。分页通过当前页面末尾的 "View Next" 按钮实现,因为我们发现这种交互对大多数用户来说是最为舒适的。

但是,在某些情况下更偏好使用无限滚动。例如,我们在 Stream Chat 产品中使用此功能。

我们可以通过将 enableInfiniteScrolling 标志设置为 true 来隐藏 "View Next" 按钮并切换到无限滚动:

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。为 .comments 选择器添加自定义 CSS 以启用滚动,例如:

启用无限滚动
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 属性,但出于性能原因,建议改为使用 Widget Configuration UI。 查看自定义 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:

  • 用户可以在顶层发表评论 (depth 0)
  • 用户可以回复顶级评论 (depth 1)
  • 用户可以回复这些回复 (depth 2)
  • 超出 depth 2 不再允许进一步回复

Setting to 1 would only allow replies to top-level comments, creating a flatter discussion structure.

Setting maxReplyDepth to 0 would disable all replies, allowing only top-level comments. If not specified, replies can be nested without limit.

单点登录(SSO)概述 Internal Link

SSO,或单点登录,是一组约定,用于允许您或您的用户在不必创建另一个账号的情况下使用 FastComments。

假设您不允许匿名评论,发表评论需要一个账号。我们让这个注册流程非常简单——用户在评论时只需留下他们的邮箱。 不过,我们也理解即便如此,某些站点仍希望尽量减少摩擦。

我们可以通过为整个站点只保留一个登录流程来减少这种摩擦。

How do I get it?

所有账号类型目前都可访问 SSO。不过,SSO 用户的最大数量会根据您的套餐而有所不同。与其他功能一样,Pro 计划及以上提供直接的开发支持。

我们先比较这些选项,然后详细介绍每一种。

User and Comment Migrations

从像 Disqus 这样的具有 SSO 的平台迁移时,您通常已经拥有用户及其评论。

评论作为迁移的一部分被导入,可以通过 API、我们的导入 UI 或客服支持完成。如果导入 UI 支持您正在迁移的平台,则优先使用导入 UI,因为它集成了错误处理、头像和媒体的提取与上传,以及批处理作业监控系统。

如果使用导入 UI(位于 Manage Data -> Imports)则头像及其他媒体会自动迁移。

用户本身会在首次查看评论线程时自动被添加。或者,也可以通过 API 预先添加,但这样做并没有太多优势。

如果评论被导入,而 SSO 用户没有通过 API 手动添加,那么当用户首次查看任何评论线程并创建账户时,评论会自动迁移到该用户的账户。之后他们就可以管理、编辑和删除他们最初发表的评论。

自动迁移是通过邮箱或用户名完成的。有些平台在导出时不提供邮箱,例如 Disqus,因此在这种情况下我们会回退到使用用户名。

  • 只要您在 SSO payload 中传入匹配的用户名和一个邮箱,我们就会将该邮箱添加到各个评论对象中,以便通知和提及功能能够正常工作。

如果希望在一次性导入评论和用户,可以在通过 API 导入用户后与支持团队合作,将评论迁移到各自用户的账户。

总结来说,迁移的最简路径是:

  1. 导入评论。
    1. 如果使用 Manage Data -> Imports 中的导入 UI,头像和其他媒体会自动迁移。
  2. 设置 Secure 或 Simple SSO。
  3. 让迁移在每个用户首次登录时自动发生。
    1. 如果用户的评论少于 50k,通常这会在页面加载时增加不到一秒的时间。

WordPress Users

如果您使用我们的 WordPress 插件,则无需编写任何代码!只需转到插件的管理页面,点击 SSO 设置,然后启用。

这会带您进入一个单按钮向导,该向导将为您创建 API key,将其发送到您的 WordPress 安装并开启 SSO。我们已将此过程整合为单按钮操作以简化流程。

注意,如果您是第一次安装该插件,则必须完成设置流程,之后才能看到包含 SSO 设置按钮的管理页面。

WordPress SSO - Moderators

请注意,当前要在使用 FastComments WordPress 插件评论时在版主旁显示 “Moderator” 徽章, 他们还必须在 FastComments 仪表板中被添加为版主,并且其邮箱已通过验证。

Custom Integrations

对于自定义集成,有两种选择。

Option One - Secure SSO

使用 Secure SSO 时,FastComments 可以确定正在发表评论、投票和阅读评论的用户确实是您站点上的真实用户。

只要您创建了有效的 payload,用户就会始终拥有无缝的评论体验。

使用 Secure SSO 时,SSO payload 在 服务器端 使用 HMAC 验证创建,然后传递到 客户端 的小部件中。

使用 Secure SSO 时,用户的账户与其余 FastComments 用户库是 完全独立 的。这意味着如果我们有两个合作方 Company A 和 Company B,每一方都可以有一个用户名为 "Bob" 的 SSO 用户。

Requirements

  • 需要一些后端开发基础知识。
  • 需要了解如何处理秘密 API 密钥。
  • 需要一些 API 开发或服务器端渲染的基础知识。

Pros

  • 安全。
  • 无缝的评论体验。

Cons

  • 需要后端开发。

Updating User Data

使用 Secure SSO 时,每次您传递 SSO 用户 payload,我们都会用最新信息更新该用户。例如,如果 用户的用户名为 X,而您在 SSO payload 中传入 Y,那么他们的用户名将变为 Y

如果您想使用这种方法移除某些值,请将其设置为 null(而非 undefined)。

Secure SSO API

我们还提供与 SSO 用户交互的 API。参见 文档

注意,在使用 Secure SSO 时,用户会在页面加载时在后台自动创建。您不必批量导入用户。

Option Two - Simple SSO

Secure SSO 的替代方案是简单地将用户信息传递给评论小部件。

使用 Simple SSO 时并不强制提供邮箱,但如果没有邮箱,他们的评论将显示为 “Unverified”。

注意! 截至 2022 年初,使用 Simple SSO 的用户名不需要在整个 FastComments.com 上唯一。

理想情况下,仅当在不提供后端访问的平台上开发时才选择 Simple SSO。

Requirements

  • 需要一些客户端开发的基础知识。
  • 至少需要知道用户的邮箱。

Pros

  • 简单。
  • 所有活动仍会被验证。
  • 用户无需输入其用户名或邮箱。

Cons

  • 比 Secure SSO 安全性低,因为客户端的 payload 可能被伪造以冒充任意用户。

Simple SSO API

通过 Simple SSO 流程自动创建的用户以 SSOUser 对象形式存储。可以通过 SSOUser API 访问和管理它们。参见 文档

自定义集成 - 简易单点登录(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 用户。如果从 API 获取,该用户的 createdFromSimpleSSO 将被设置为 true

Notes:

  • 电子邮件是 Simple SSO 的唯一标识符。
  • 向 Simple SSO 提供电子邮件不是必需的,但默认情况下,他们的评论将显示为 “未验证”。 如果未提供电子邮件,则用户无法完全通过身份验证。
  • 自 2022 年 1 月起:用户名在整个 fastcomments.com 上不必唯一
  • 如果提供了电子邮件,且该用户最初不是通过 Secure SSO 创建的,Simple SSO 可以自动创建和更新 SSO 用户。
  • 您可以使用 badgeConfig 属性为用户指定徽章。badgeIds 数组包含要与用户关联的徽章 ID。如果 override 设置为 true,它将替换评论中显示的所有现有徽章;如果为 false,则会在现有徽章上追加。

自定义集成 - 从 Disqus SSO 迁移 Internal Link

Disqus 与 FastComments Secure SSO 之间最大的区别是 Disqus 使用 SHA1 进行加密,而我们使用 SHA256。

这意味着从 Disqus 迁移很容易 - 将所使用的哈希算法从 SHA1 改为 SHA256 并更新传递给 UI 的属性名称。

自定义集成 - 从 Commento SSO 迁移 Internal Link

Commento 使用一种截然不同的 SSO 方法 - 他们要求你有一个端点,他们会调用该端点来验证用户。FastComments 则相反 - 只需使用你的密钥对用户的信息进行编码和哈希并传递即可。

回调 Internal Link

所有用于评论小部件的库(当前为 Angular、React、Vue)都支持回调。

这些回调在配置对象中指定,并且每个库的签名相同。

支持的回调有:

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

确切的签名可以在 TypeScript definitions 中找到。

下面是一个使用了所有回调的示例:

回调示例
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

目前无法在不修改代码的情况下进行自定义。

提及组 ID Internal Link

用于 @mentions 自动完成 的 ID 列表。当你希望在用户没有交集群组时防止标记他们时非常有用。

当指定后,输入 @ 字符后,自动完成中只会提供属于其他群组的用户。

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