FastComments.com

向你的 Jekyll 站点添加评论


这是 FastComments 的官方 Jekyll 库。

在你的 Jekyll 站点中嵌入实时评论、聊天和评审小部件。

仓库

在 GitHub 上查看


实时展示 Internal Link

要在本地查看针对公共 demo 租户运行的所有标签,请克隆仓库并运行:

cd example
bundle install
bundle exec jekyll serve

每个小部件在 example/ 下都有自己的页面,你可以将其直接复制到你自己的 Jekyll 站点中。

安装 Internal Link

Gem

将该 gem 添加到您站点的 Gemfile:jekyll_plugins 组:

group :jekyll_plugins do
  gem "fastcomments-jekyll"
end

然后:

bundle install

(兼容 Jekyll 3.7+ 和 4.x。)

标签 Internal Link

标签描述
fastcomments实时评论,支持回复、投票、审核和实时更新
fastcomments_comment_count当前页面的评论数量
fastcomments_comment_count_bulk用于列表/索引页上多个页面的评论数量
fastcomments_live_chat实时流式聊天小部件
fastcomments_collab_chat协作式内联评论(文本注释)
fastcomments_image_chat图像注释评论
fastcomments_recent_comments整个站点的最新评论
fastcomments_recent_discussions最近活跃的讨论线程
fastcomments_reviews_summary星级评分汇总
fastcomments_top_pages讨论最多的页面
fastcomments_user_activity_feed每个用户的活动动态

示例

{% raw %}{# 评论数量。该小部件会自行渲染标签,例如 "0 comments" #}
{% fastcomments_comment_count %}

{# 实时聊天 #}
{% fastcomments_live_chat %}

{# 协作聊天。通过 CSS 选择器将其指向某个内容元素 #}
<article id="post-body">
  <p>Highlight me to leave a comment.</p>
</article>
{% fastcomments_collab_chat target="#post-body" %}

{# 图像聊天。通过 CSS 选择器将其指向某个图像元素 #}
<img id="hero" src="/hero.jpg" alt="Hero image">
{% fastcomments_image_chat target="#hero" %}

{# 评价摘要 #}
{% fastcomments_reviews_summary %}

{# 用户活动动态。需要一个用户 ID #}
{% fastcomments_user_activity_feed user_id="demo:demo-user" %}

{# 博客索引页的批量评论计数 #}
{% for post in site.posts %}
  <a href="\{{ post.url }}">\{{ post.title }}</a>
  <span class="fast-comments-count" data-fast-comments-url-id="\{{ post.url }}"></span>
{% endfor %}
{% fastcomments_comment_count_bulk %}{% endraw %}

配置 Internal Link

配置来自三个来源。较后的来源优先:

  1. 全局默认值 位于 _config.ymlfastcomments: 键下。
  2. 页面上下文,为页面作用域的小部件自动派生(见下文)。
  3. 标签属性 写在标签自身上。

因此,标签上的 url_id 会覆盖页面派生值,而页面派生值会覆盖任何全局默认值。

属性语法

属性是以 snake_casekey=value 对:

{% raw %}{% fastcomments url_id="my-stable-id" readonly=true count=20 %}{% endraw %}
  • 带引号的 值 ("..."'...') 是字面字符串。
  • 不带引号的 true/false 会成为布尔值,数字会成为数字。
  • 不带引号的 其他任何内容会作为页面上下文中的 Liquid 变量解析,例如 url_id=page.slug。 (Liquid 不会在标签的属性内展开 {% raw %}\{{ ... }}{% endraw %},因此请使用裸形式 page.slug,而不是 "{% raw %}\{{ page.slug }}{% endraw %}"。)

snake_case 的属性和配置键会被自动映射到 FastComments 所期望的 camelCase 键(tenant_idtenantIdurl_idurlIdpage_titlepageTitlehas_dark_backgroundhasDarkBackground,等等)。来自 小部件配置 的任何其他选项也会以相同方式直接传递。

页面派生值

对于页面作用域的小部件(fastcomments, fastcomments_comment_count, fastcomments_live_chat, fastcomments_collab_chat, fastcomments_image_chat)这些值会自动从当前页面填充,除非您自行设置:

  • url_idpage.url (一个独立于访问域名的稳定标识符)
  • urlsite.url + page.url (仅当在 _config.yml 中设置了 url 时)
  • page_titlepage.title

站点范围的小部件(最近评论/讨论、热门页面、评论汇总、用户活动提要、批量计数)不与页面绑定,也不会派生这些值。

欧盟数据驻留

欧盟客户添加 region: eu,可全局设置:

fastcomments:
  tenant_id: your-tenant-id
  region: eu

或按标签设置:{% raw %}{% fastcomments region="eu" %}{% endraw %}。小部件随后将从欧盟 CDN 加载。

维护状态 Internal Link

这些组件是我们核心 VanillaJS 组件的包装器。我们可以自动更新这些组件(修复错误、添加功能)而无需发布此库,因此即便它可能有一段时间未发布,也不代表 FastComments 并未处于积极开发中!欢迎查看我们的博客以获取更新。在未对本库进行版本提升的情况下,破坏性 API 更改或功能绝不会被发布到底层核心库。


需要帮助?

如果在使用 Jekyll 库时遇到任何问题或有疑问,请:

贡献

欢迎贡献!请访问 GitHub 仓库 获取贡献指南。