为 Hexo 的 Indigo 主题增加畅言评论系统

作者 : 开心源码 本文共2537个字,预计阅读时间需要7分钟 发布时间: 2022-05-12 共197人阅读

image
Indigo 主题并没有内置 畅言 的评论系统,我按照内置其余主题的方式增加了畅言,还是比较简单的,下面是配置过程。

1. 获取畅言的 APPID 等参数

这个过程不多说了,进入 畅言 网站去注册客户,增加网站,而后可以获取到 appidconf 这两个参数。

2. 增加配置信息

打开 themes\indigo\_config.yml 文件,在 hyper_id: false 这一行的下一行增加畅言的配置信息,这样多个评论配置集中到一起。

# 畅言 https://changyan.kuaizhan.com/changyan:  enable: true  appid: cyrKR7poQ  conf: prod_0c82d8a819e99315df4f23a81edd7377  sid: urlname # 文章唯一标识,设置为页面头部变量,如不启用 sid,设为:false

仿照了 valine 的配置方式,可以方便的启用或者禁用。其中的 appidconf 是第 1 步拿到的那两个参数,sid 为文章唯一标识,能设置为:

  • 页面头部(Front-matter,就是文件最上方以 --- 分隔的区域)信息中的某一参数,但要求这个参数要能够唯一标识这篇文章。
  • 不启用设置为 false,这时畅言会自动以当前文章 URL 作为标识,但畅言提到强烈要求设置 sid
  • 上面示例代码中的 urlname 是我自己设置的参数来作为永久链接。

关于 sid,畅言是这样说明的:
畅言默认通过文章url进行评论框匹配,因而,你可能会遇到以下两种问题:
1)同一文章显示不同评论框:同一篇文章有多个URL地址,但每个页面显示不同的评论框;
2)评论错乱:文章链接发生变动导致评论错乱。

3. 创立 chanyan.ejs 文件

themes\indigo\layout\_partial\plugins\changyan.ejs 这个路径下创立文件,完整程序代码如下:

<% if (theme.changyan.enable) { %><style>  .comments {    margin-top: 40px;    padding: 30px;    background: #fff;    box-shadow: 0 0 4px rgba(0, 0, 0, .2);    border-radius: 4px;  }  #pop_ad,  #feedAv {    margin-top: -250px !important;    transform: scale(0);  }</style><section class="comments" id="comments">  <% if (theme.changyan.sid) { %>  <div id="SOHUCS" sid="<%= page[theme.changyan.sid] %>"></div>  <% } else { %>  <div id="SOHUCS"></div>  <% } %>  <script>    (function () {      var appid = '<%= theme.changyan.appid %>'      var conf = '<%= theme.changyan.conf %>'      var width = window.innerWidth || document.documentElement.clientWidth      if (width < 960) {        window.document.write('<script id="changyan_mobile_js" charset="utf-8" type="text/javascript" src="https://changyan.sohu.com/upload/mobile/wap-js/changyan_mobile.js?client_id=' + appid + '&conf=' + conf + '"><\/script>')      } else {        var loadJs = function (d, a) {          var c = document.getElementsByTagName('head')[0] || document.head || document.documentElement          var b = document.createElement('script')          b.setAttribute('src', d)          if (typeof a === 'function') {            if (window.attachEvent) {              b.onreadystatechange = function () {                var e = b.readyState                if (e === 'loaded' || e === 'complete') {                  b.onreadystatechange = null                  a()                }              }            } else { b.onload = a }          } c.appendChild(b)        }        loadJs('https://changyan.sohu.com/upload/changyan.js', function () { window.changyan.api.config({ appid: appid, conf: conf }) })      }    })()  </script></section><% } %>

以上代码中,大部分是畅言后端给出的安装代码,这是电脑端/手机端自适应代码,把其中的 appidconf 替换成了变量,其余的安装代码没有动。其中有几点特别解释下:

  • 代码完全可以不用任何修改直接复制,可配置的参数都放到 themes\indigo\_config.yml 了。
  • 畅言后端可以选择评论框的颜色主题,但没有边框和背景,所以我把 valine 的样式复制过来了。
  • 至于样式里面的 #pop_ad#feedAv 两个,就是谁用谁知道了,不可说。

4. 修改 comment.ejs 文件

打开 themes\indigo\layout\_partial\post\comment.ejs,在文件末尾 <%} %> 的前面增加一行代码:

<%- partial('../plugins/changyan') %>

一律完成,赶快 F5 看看效果吧。

不过,最终我可能不会选择畅言,由于有这些使用限制:

  • 需要填入备案号且审核通过,否则只能用 15 天,本想找一下 coding.me 的备案号,结果这个域名也没备案,这就尴尬了;
  • 客户发表评论要绑定手机号;
  • 有广告。

原文在:https://ziyue.life/201812/ad52hc4b.html

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 为 Hexo 的 Indigo 主题增加畅言评论系统

发表回复