首页指南Webflow 上的公开评论不必自己养后端

Webflow 上的公开评论不必自己养后端

Site settings 里贴一行,模板上放一个 Code Embed,然后发布。安装就这些。

更新

一个已经发布的 Webflow 页面,没地方收留言:背后没有数据库,也没有地方去跑那段往数据库里写的代码。走得通的路是托管小部件,Site settings 里放一个 <script> 标签,讨论串该出现的位置放一个空元素在 Code Embed 里,登录、存储和审核就跟着小部件一起过来。用 BootSignal 的话,这是粘两次、发布一次。开始之前值得先确认的只有一件事:Webflow 这两个功能都要付费。

Webflow 确实有留言功能,只是跟这件事无关

搜这个题目常常会搜歪,因为 Webflow 本身就带着一套留言功能。它住在 Designer 里,服务的是搭站点的人:设计师在某个版块上留一句话,客户回一句,处理完就标成已解决。这些一个字都到不了发布出去的页面,读你博客文章的访客也看不见。

公开评论是另一回事,里面有三件 Webflow 没有解决的事:知道写的人是谁、把写下来的东西留住、让你把不该留的删掉。CMS 存的是你自己写的内容,Forms 收上来的东西只有你读得到。这两样都不构成对话。

先读一段真在跑的讨论串,再去粘代码

预览

2 条评论

添加评论…
以 Alex 身份评论发布
  • M
    Maya2 小时前

    真的一行就搞定了,没想到安装这么简单!

  • J
    Jordan昨天

    连登录都是共享的,不用再额外接入。👍

这不是截图:小部件正在自己画出来,里面是示范用的评论。放进发布后的 Webflow 页面,长相一模一样。

在检查别的之前,先检查方案

两半各自的去处

加载器和挂载元素去的地方不一样,把两者搞混是最常见的第一次失败。加载器管全站,位置在 Site settings 的 Custom code 标签页、Footer code 字段,Webflow 会把这一栏输出到每一页收尾的 </body> 之前。Webflow 建议 script 标签放这里,而不是 Head code,免得拖慢加载;非放进 head 不可的外部脚本,它建议加 asyncdefer,所以下面那一行带着 defer。挂载元素看的是位置,它属于一个 Code Embed 元素,拖到版面上讨论串该坐的那一点。

  1. 接了自定义域名,预发地址还在,两个都要登记

    每个 Webflow 项目在建好的当天就拿到一个 .webflow.io 地址,之后接上自定义域名也不会把它收回去:讲 Code Embed 的那篇文档正是让你拿这个地址当测试和收意见的预发域名,而且 yourdomain.com 上线之后,它照样供着发布出去的站点。所以你手上其实有两个主机名,而小部件只在控制台列着的主机名上应答。your-project.webflow.io 不是 yourdomain.com 的子域名,登记了正式域名不等于顺手把预发也登记了。把两个挂到同一个 site id 底下,那串值就是下一步加载器要带的东西。每个主机名在方案里各算一个域名,所以自定义域名还没接上的话,先登记预发地址,等上线那天再把正式的加进去。

  2. Footer code 里粘一次,往后每一页都带着它

    Site settings、Custom code 标签页、Footer code 字段,然后按 Save changes。Webflow 会把这一栏输出到它发布的每一页,包括你还没搭出来的页面,所以这个标签粘一次就再也不用碰。每个字段能装下 50,000 个字符,一行加载器连边都够不着。

    代码
    <script src="https://bootsignal.com/bootsignal.js"
            data-site-id="YOUR_SITE_ID" data-lang="zh-cn" defer></script>
  3. 在正文下面放一个 Code Embed,把挂载元素粘进去

    打开 Add 面板,在 Collection page 模板的文章正文下面加一个 Code Embed 元素,粘上挂载元素,保存并关掉弹窗。这里不用再放别的:刚才那个加载器会自己找到这个元素,把内容填进去。

    代码
    <div data-bootsignal="comments" data-thread-id="page-key"></div>
  4. 先发布到预发地址,在那边读讨论串

    Webflow 说自定义代码的效果在 preview 模式里就看得到,这一点对标签本身成立,可小部件还多加一个条件:它拿页面的主机名去比对你登记的域名,而 Designer 的 preview 地址属于 Webflow,不属于你。发布到你的 .webflow.io 地址,用一个普通浏览器标签页打开它。画布上那个装着 script 标签的 Code Embed 会显示一个占位方块,那是预料之中的样子,不代表哪里坏了。

一份模板,每篇文章一串讨论

data-thread-id="page-key" 照抄不改,站上每篇文章就共用同一段对话,这通常不是谁想要的结果。这个属性只是一把钥匙,把它绑到每篇文章各不相同的东西上,分流自己就发生了。

在 Collection page 的 Code Embed 编辑框里,Webflow 允许你把 CMS 字段插进代码。光标放到 data-thread-id 的两个引号中间,插入文章的 Slug 字段。Webflow 会在发布时换成真正的 slug,所以改一次模板,集合里每篇文章就各有各的讨论串。

小部件带着什么一起来

  • 嵌套回复,讨论会长成一棵树,而不是摊成一堆各说各话的纸条。
  • Google 登录,你域名上每个 BootSignal 小部件共用,刚才为了给文章打分登录过的读者,要写评论时已经是登录状态。
  • 不用再开一组密码,也不用记,因为整条路上只有 Google 账号这一种登录。
  • 托管的存储外面包着一份按域名给的白名单,小部件只在你登记的域名上应答,别处复制一份你的页面也叫不动它。
  • 审核在控制台里做:删掉一条评论,封掉写它的人。
  • 界面文字备了韩语、英语和日语,用加载器上的 data-lang 切换。

Webflow 站点上有评论,走得通的路有三条

路线你要自己做、自己养的东西评论存在哪里之后要付出什么
自己做一套登录、数据库、API、一个审核界面你自己的机器主机费用,加上这个站点活着的每一天它要吃掉的工时
靠广告养的评论服务不用做他们的平台免费版会把广告推到你读者眼前,付费档按每月页面浏览量算钱
固定收费的托管小部件不用做厂商那边,范围限定在你的域名一个域名一份订阅,文章火不火都不影响
真正要选的是谁来养后端。只有第一行会让你手上多出几台服务器。

要是你是从一套现成的评论系统搬过来,而不是从零开始,那么比功能表更该问的是搬迁那几件事,Disqus 替代方案那一页把它们走了一遍。

这笔钱和 Webflow 那笔放在一起看

Webflow 的 Site plan 按站点收费。BootSignal 按注册域名收费,每月 $20 或每年 $200,小部件全都包含在内,流量不另算钱。文章火了,账单不动;以后在同一个 Webflow 项目上再加倒计时或者阅读进度条,账单也不动。会让它动的是主机名:预发和正式是两个注册域名,控制台可以一个一个往上加。

把评论放到我的 Webflow 文章下面

登记一个域名,把一行粘进 Site settings,发布。

第二个小部件不用再动 Site settings

目录里其余的东西全都搭刚才粘好的那个 script 标签。有两个放在 Webflow 博客文章上特别划算:

预览
👍 42❤️ 18🎉 7😮 3

表情回应,给那些永远不会写评论、但愿意点一下表情的读者。

预览

阅读进度条,细细的一条,访客往下读,它就往前填。

先看主机名,再看那两个 Save 按钮

  1. 地址栏里的那个地址,必须是你登记过的主机名之一。your-project.webflow.ioyourdomain.com 是两条各自独立的记录,Designer 的 preview 网址两者都不是,所以 preview 里空着、发布出来的页面上有东西,那说明它在正常工作。
  2. Designer 画布上出现占位方块,对任何装着 script 标签的 Code Embed 来说都正常。要判断装没装好,去看发布出来的网址。
  3. 在发布出来的页面上打开浏览器控制台。没登记过的主机名会在那里说出来,不会闷声失败,而预发正是大家最常漏掉的那一个。
  4. 核对加载器里的 site id 和控制台上的是不是一致,包括复制粘贴时多出来的错字。
  5. 核对那段标记落在 Code Embed 里,而不是落进 rich text 区块;后者会把标签当成看得见的文字印出来,不会把它跑起来。
  6. 核对 Site settings 存过了。加载器和嵌入元素在两个不同的界面上,存了一边不等于存了另一边。

常见问题

Webflow 有给访客用的自带评论功能吗?
没有。Webflow commenting 是 Designer 里给搭站点的人用的审阅工具,从来不会出现在发布出去的页面上。要开放公开评论,得靠第三方小部件。
加自定义代码一定要付费的 Webflow 方案吗?
是。Webflow 把自定义代码和 Code Embed 元素都锁在付费 Workspace(Core、Growth、Agency 或 Freelancer)或者生效中的 Site plan 后面,两篇帮助文档写的是同一个条件。定价页的对比表也把 Custom code 那一行排除在免费档之外。
为什么 Designer 里的嵌入只显示一个空方块?
那正是它该有的样子。只要 Code Embed 里装着 script 标签,Webflow 就在画布上画一个占位,而不是把它执行掉。切到 preview 也定不了案,因为小部件只在你登记过的主机名上应答,而 preview 的地址是 Webflow 的。发布到你的 .webflow.io 预发地址,在那边读讨论串。
怎么让每篇博客文章各有一串讨论?
data-thread-id 绑到一个 CMS 字段上。在 Collection page 的 Code Embed 编辑框里可以把文章的 Slug 插进属性值,改一次模板,之后每篇文章就各自分开一串。
小部件的界面语言在哪里改成韩语或者日语?
在加载器标签的 data-lang 值上。界面文字备了韩语、英语和日语,上面那段代码里填的是 zh-cn,评论区遇到这个值会退回英语,带中文的小部件(比如倒计时)则照它走。要改就到 Site settings 的 Custom code 标签页、Footer code 字段改掉这个值,按 Save changes,再发布一次。Webflow 把这一栏输出到每一页,所以改一次就是全站生效,而且变的不只是讨论串,是这个加载器带动的每一个小部件。
这会跟 Webflow 已经加载的 jQuery 打架吗?
不会。Webflow 在新发布的站点上放 jQuery 3.5.1,也提醒自定义代码再引入另一个版本的 jQuery 可能引发冲突。BootSignal 的加载器是纯 JavaScript,一个框架都不引入,所以没有第二份可以撞上;它只把讨论串填进你放好的那个空元素,不去碰 Webflow 画出来的任何东西。
同一个加载器还能跑什么

其余用同样方式装在 Webflow 上的东西都在这里。

数据来源