首页指南想让评论落在正文下面,Blogger 只留了一条路

想让评论落在正文下面,Blogger 只留了一条路

省事的那条路通向侧边栏。要把评论放到正文下面,得走另一条。

更新

Blogger 上省事的路和对的路不是同一条。布局里的 HTML/JavaScript 小工具两分钟就装好了,可小部件会原样出现在那个小工具所在的布局区域:侧边栏、页眉或者页脚。想让评论紧贴在每篇博文正文下面,就得打开 主题背景 > 修改 HTML,把挂载元素接在 <data:post.body/> 后面,因为 Blogger 的后台里没有一处可以只给单篇博文塞代码。以上没有一步要求 Blogger 的付费档位。动手改之前,先把主题备份下载下来。

Blogger 本来就有评论,先弄清你要换掉的是什么

Blogger 的主题里从一开始就带着评论区,画它的和画博文的是同一个 Blog 微件。翻一眼布局数据标记的清单,allowCommentsnumCommentsaddCommentUrl 就和博文标题、正文的标记并排列着。这说明自带评论不是后来加上去的功能,而是主题的一部分。哪怕只想改改样子,最后也还是要打开模板代码。

换掉它的理由大致三种:想在一个地方管好几个站点的评论,想撤掉一眼就能看出主题写于哪一年的评论框,想让博客和自己其他地方的评论长成一个样。别指望能把旧的搬过去。通过 Blogger 表单发出来的评论留在 Blogger 里,新小部件在每篇博文下面都从空的开始。

有一件事是站在你这边的。BootSignal 评论要访客用 Google 登录,而来到一个由 Google 运营的博客平台的读者,多半已经登录着。

打开主题编辑器之前,先看看评论区本身

预览

2 条评论

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

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

  • J
    Jordan昨天

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

小部件在这一块自己画出来的样子,里面的评论是占位数据。放进 Blogger 博文里,它也在主题给的宽度内长成同一个样子。

三个入口,各自要付的代价

Blogger 给了三处可以粘 HTML 的地方,其中能把评论区放到博文正文下面的只有一处。开始点鼠标之前,先认准你要的是哪一行。

入口小部件出现的位置要不要改代码每篇博文各自的评论区怎么撤回
布局 > 添加小工具(HTML/JavaScript)你选的那个布局区域,也就是侧边栏、页眉或页脚不用不行,所有页面共用一段对话在布局里删掉这个小工具
主题背景 > 修改 HTML,接在 <data:post.body/> 后面每篇博文正文下面,只在博文页出现要,Blogger 的主题 XML可以,按博文分开把下载好的主题备份重新套上
博文编辑器的 HTML 视图只在那一篇博文里一点点只有那一篇再修改一次那篇博文
前两条路,Blogger 帮助中心把步骤一步一步写下来了。第三行那个编辑器视图的切换,帮助文档里从没写过,所以把它当成拿一篇博文试水的办法,而不是一种受支持的安装方式。

这三条没有一条要升级档位才打得开。布局里的添加小工具、主题背景的修改 HTML、主题备份,帮助中心都写着,一个付费条件也没附。Google 没有单独放出 Blogger 的价目页,所以这句话该读成没有东西挡着你,而不是一个可以拿去引用的承诺。blogger.com 上提到钱的地方只有一处:买一个自定义域名来替掉 blogspot.com 的地址。要花钱的是下面写着的 BootSignal。

A 路:用小工具在侧边栏放一个

  1. 先登记 blogspot 地址,或者取代它的那个域名

    Blogger 博客从建站那天起就住在 yourname.blogspot.com,除非有人在 设置 > 正在发布 > 自定义域名(Settings > Publishing > Custom domain)里挂上自己的域名。挂上之后,blogspot 地址就不再直接端出博客,而是把人转到那个域名去。Blogger 在那个界面上写着,这个转向要过一阵子才真的生效。所以打开你的 BootSignal 站点设置,把发布出去的博文在地址栏里显示的主机名填进去;如果刚换域名不久、旧链接还会落到 blogspot 地址上,就把它也一并填上。带国家代码的写法不用单独登记:yourname.blogspot.co.uk 这类地址会跳到 .com 那边,所以不管读者在哪个国家,最后到的都是你登记过的主机名。登记完会拿到一个 site id,要填进 Blogger 的就只有这一个值。小部件拿 location.hostname 去核对这份清单,不在清单上的地方它什么都不画。

  2. 添加 HTML/JavaScript 小工具

    登录 Blogger,选择要更新的博客。在左侧的菜单中,点击 布局(Layout)。在你想要修改的区域,点击 添加小工具(Add a Gadget)。在打开的窗口中选择 HTML/JavaScript,然后点击添加图标。这个小工具只有两个栏:标题和内容。除非你想在评论区上面再加个小标题,标题留空就行;把下面两行粘进内容栏,再点左下方的 保存

    代码
    <script src="https://bootsignal.com/bootsignal.js"
            data-site-id="YOUR_SITE_ID" data-lang="zh-cn" defer></script>
    <div data-bootsignal="comments" data-thread-id="blogger-sidebar"></div>
  3. 打开线上博客,用眼睛确认一遍

    小工具画在它所属的布局区域里。放进侧边栏,评论区就在侧边栏,而且每个页面上都有。更要紧的是,它不是每篇博文一段,而是整个博客共用一段对话,因为你粘进去的 data-thread-id 是一个写死的键。这条路的诚实边界就在这儿:拿它当留言板还说得过去,但读者说要在这篇文章下面留言时,想的并不是这个。

B 路:每篇博文下面一个真正的评论区

  1. 打开主题编辑器

    登录 Blogger,选择要更新的博客。在左侧的菜单中,点击 主题背景(Theme)。在“我的主题背景”下,点击更多操作图标,选 修改 HTML(Edit HTML)。现在整份模板都装在一个文本框里,这就是刚才让你先下载备份的原因。

  2. 找出 Blog 微件和正文标记

    type='Blog' 的那个 b:widget 标记,按惯例它是 id='Blog1'。Blogger 的每个微件都有一个 id='main' 的 includable,官方主题还会把博文的标记拆到第二个 includable(通常是 id='post')里,再用 b:include 调进来。你不必顺着这条链走。直接在文件里搜 <data:post.body/>,文档把它写作博文的内容,它就是你的锚点。

  3. 把挂载元素接在正文标记后面

    夹在 b:if 之间的东西只在单篇博文页上画出来,因为文档写着 data:blog.pageType 的取值是 item、archive、index 之一。Blogger 写属性引号时会做 XML 转义,所以条件看上去是 &quot;item&quot;,这不是绕路,Blogger 自己的示例就长这样。expr: 前缀的作用是让数据标记进到属性值里,而不是当成内容打印出来,data:post.id 则给每篇博文一个各自的会话键。data:post.url 也能用,代价是以后一改固定链接,对话就留在旧键下面了。

    代码
    <b:if cond='data:blog.pageType == &quot;item&quot;'>
      <div data-bootsignal='comments' expr:data-thread-id='data:post.id'></div>
    </b:if>
  4. 加载器在模板末尾放一次就够

    加载器放在任何每个页面都会执行的位置都行,同一个文件里 </body> 前面是最不让人意外的地方。明年再加五个挂载元素,模板里的脚本标记也还是这一个。这份文件是 XML 形状的,所以给 defer 写上明确的值,开了的标记都要闭合。

    代码
    <script src='https://bootsignal.com/bootsignal.js'
            data-site-id='YOUR_SITE_ID' data-lang='zh-cn' defer='defer'></script>
  5. 保存,然后到已发布的博文上看

    保存,在线上博客里打开一篇真正的博文,往正文下面翻。别拿主题预览下判断:那是 Blogger 在自己的编辑器里画出来的,不是读者拿到的页面,而第三方脚本在那里面怎么跑,帮助中心也没写过。

让每篇 Blogger 博文都有自己的评论区

登记 blogspot 地址或自定义域名,复制 site id,粘两段代码。

把 Blogger 自带的评论表单关掉

两个一起开着,每篇博文末尾就会摆两个评论框。读者随手挑一个,对话分成两半,你要在两个地方回。新小部件上线之前,先决定哪一个留下。

开关有两处。全站那个在 Blogger 的设置界面里,评论相关的项目聚在一起的地方;帮助中心讲写博文的那一篇没写这些标签,所以别信任何地方抄来的标签,包括这一篇,看你屏幕上此刻写着什么。确定的是主题那一侧,而且那份文件你已经打开了:Blog 微件里,自带评论区是用 b:include 调进来的。把这个 include 包进一个永远不成立的 b:if,或者干脆删掉那一行,表单就从页面上退场了。

按博文来看,主题一般读 data:post.allowComments 决定要不要出自带表单,所以给某一篇关掉评论,只有那一篇的表单会消失。不管用哪个开关,你撤掉的那一块,正是一直以来画着你已有评论的那一块。评论还存在 Blogger 里,只是不再出现在页面上。

Blogger 的安装真正出岔子的几处

混合内容,Google 把它算作硬失败

这话是 Google 的说法。页面先用 HTTPS 安全地拿到最初的 HTML,之后又用不安全的 HTTP 去加载后续内容时,就会出现混合内容错误,而它的后果被写成 "will degrade both HTTPS security and the user experience of your blog.",意思是 HTTPS 的安全性和博客的使用体验会一起被拉低。开的方子是对半排查:把不是 Google 出品的小工具摘掉,看一遍博客,再一个一个装回去,直到罪魁祸首自己冒头。BootSignal 的加载器和它去取的东西全都只走 HTTPS,所以你的博客要是本来就在报这些警告,先把那边清干净,不然你会花一个下午去怪刚装上的小部件。

存不下去的保存

Blogger 的主题是它自己的一套 XML 风格标记语言:b:sectionb:widgetb:includableb:includeb:ifb:loop,属性值都做过 XML 转义。落到实处就是,粘进去的脚本里如果带着生的 <&&&,文件可能就存不下去。帮助中心既没写这种失败,也没提过 CDATA 的要求,所以把它当嫌疑人而不是规矩:保存被拒、编辑器又指向你刚粘的那一带,就先看这几个字符。这一篇里的两段代码都没有它们。

小部件核对的那个主机名

挂载元素画出来了却没有评论加载,或者登录被弹回去,先看域名。小部件只在登记到你 site id 的主机名上应答,Google 登录还要核对页面来源,所以 yourname.blogspot.comyourname.com 不是一个博客的两个名字,而是两条登记。手机上也看一眼:b:widget 上除了 pageType 还有一个 mobile 属性,主题完全可能在桌面端显示某个微件,到小屏幕上就把它撤掉。

为什么一篇博文火了,账单也不动

BootSignal 按登记域名计价,每月 $20 或每年 $200,目录里的小部件全都包含在内,明年才出的那些也算,价格里没有一项跟浏览量或评论数挂钩。这件事在 Blogger 上比在别处更要紧:一篇被谁转走的 blogspot 博文,可能从一天四十个人读,变成整整一周每天四万个人读,而按流量计价的评论工具,偏偏挑那一周变贵。另一个用别的地址的博客算第二条登记,在控制台里加。

目录里有 38 个付费小部件和 33 个免费的浏览器工具,哪个归哪边,价格页上写着。跟其他托管评论服务把价钱并排放的比较,放在对比专区,因为那些数字会动,过期的数字比没有更糟。

主题文件还开着,顺手再加一行

刚粘上的加载器同时带动其他所有 BootSignal 小部件,所以第二个只要一个 div。在 Blogger 博文里最顺手的搭档是浏览量:它接会话键的方式一样,可以直接和博文共用同一个键。

预览👁 1,248 浏览

按博文分开计数的浏览量。不用登录,一次访问加一次。

主题 HTML,就放在评论挂载元素旁边
<div data-bootsignal='viewcount' expr:data-thread-id='data:post.id'></div>

关掉编辑器之前,把现在带着你改动的主题备份再下载一次,再把两段代码和 site id 记进一个跟博客笔记放在一起的文本文件。下次换主题,Blogger 会替换掉 HTML,两个挂载元素也一起没。有那个文件,装回去两分钟;没有,就是一晚上重读这一页。

常见问题

不改主题,能把评论区放到博文下面吗?
不能。Blogger 没有给单篇博文注入代码的栏位。HTML/JavaScript 小工具住在布局区域里,也就是侧边栏、页眉或页脚;就算只是想让这个小工具只在博文页显示,也要用到 b:widget 标记上的 pageType 属性,而那个属性只能从主题背景 > 修改 HTML 进去改。正文下面的挂载元素,只能写进主题里,接在 <data:post.body/> 后面。
想先拿一篇博文试试,不动模板行吗?
行,博文编辑器就是干这个的地方。它的 HTML 视图能让你把挂载元素和加载器直接粘进正文,那一篇就有了评论区,博客其余部分一动不动。有两件事让它只能算试水,不算安装:往后写的每一篇你都得重复这次粘贴;而且帮助中心讲博文的那一篇,写了新博文、预览、保存、发布和更新,却完全没提编辑器里那个视图切换,所以切过去再切回来之后 <script> 会变成什么样,没人给你保证。点发布之前,把 HTML 再读一遍。
主题编辑器的预览里那一块是空的,是不是粘错了?
多半不是,而且靠那个预览也判断不出来。它画的是 Blogger 编辑器里的模板,不是读者拿到的页面,第三方脚本在里面怎么跑,文档没写过,所以预览空着说明不了任何事。保存,打开一篇已发布的博文,在线上博客里下判断。要是那边也没有,就按上面写的混合内容和主机名依次查。
想留一句就走的读者,会被登录挡住吗?
会。身份路径只有 Google 一条:没有填名字和邮箱的表单,也没有匿名框。这道门槛在 Blogger 上比别处低,因为正看着一个 Google 运营的博客的读者,往往已经登录着 Google,点一下就过去了。真正落在门外的,是那些不肯为一句话去开账号的人。你现在的评论要是大半来自这种人,关掉自带表单之前先掂量一下。
已经留在 Blogger 博文上的评论会怎么样?
它们照旧存在 Blogger 里,也照旧由自带评论区画出来,新小部件那边每篇博文都是空的对话。在主题里删掉或者用条件挡住那一块,旧评论并没有消失,只是不再出现在页面上。有哪些内容是你不愿意从眼前消失的,删那一行之前先另外收好。
从 blogspot 换到自定义域名之后,评论区安静了,这是为什么?
小部件拿 location.hostname 去和登记在你 site id 上的域名核对,Google 登录还要核对页面来源,而新主机名在你填进去之前是个陌生地址。到控制台里登记自定义域名;Blogger 还在从 blogspot 地址往那边转的这段时间里,把那个地址也一并留着,等到没有东西再指向它了再撤掉。
登记 Blogger 博客

登记 blogspot.com 地址或自定义域名,就能拿到 site id。

数据来源