前言
目前自己的主题
Guozhi 已支持使用 Disqus, 多说和友言评论,代码逻辑和配置也做了些优化,应该是比较完善了。简单分离整理一下,分享于此,方便大家添加到自己制作或使用的主题中。
文件结构
参考以下文件结构把复制的代码和下载的文件放到合适的位置,必要时自行修改文件引用位置。
1 2 3 4 5
| yelee/_config.yml -----/layout/_partial/article.ejs ---------------------/comments/disqus.ejs ------------------------------/duoshuo.ejs ------------------------------/youyan.ejs
|
关联模块
在合适位置添加以下代码,以便引入评论模块代码。代码使用我比较熟悉的 EJS 书写,使用 Swig, Jade 等其他模板的,请自行转换。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <% if (!is_home() && post.comments){ %> <% if (theme.duoshuo.on) { %> <%- partial('comments/duoshuo', { key: post.path, title: post.title, url: config.url+url_for(post.path), }) %> <% } else if (theme.youyan.on) { %> <%- partial('comments/youyan') %> <% } else if (theme.disqus.on) { %> <%- partial('comments/disqus', { shortname: theme.disqus.shortname }) %> <% } else if (config.disqus_shortname) { %> <%- partial('comments/disqus', { shortname: config.disqus_shortname }) %> <% } %> <% } %>
|
代码简析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <!-- <% if (!is_home() && post.comments){ %> <!-- <% if (theme.duoshuo.on) { %> <!-- <%- partial('comments/duoshuo', { key: post.path, title: post.title, url: config.url+url_for(post.path), }) %> <!-- <% } else if (theme.youyan.on) { %> <%- partial('comments/youyan') %> <!-- <% } else if (theme.disqus.on) { %> <%- partial('comments/disqus', { shortname: theme.disqus.shortname }) %> <!-- <% } else if (config.disqus_shortname) { %> <!-- <%- partial('comments/disqus', { shortname: config.disqus_shortname }) %> <% } %> <% } %>
|
新评论系统添加
- 如果你想使用畅言或者其他社会化评论系统,并能灵活切换,请参考上文,新加一个 else if 判断引入服务商提供的代码,同时参考后文的配置添加新的设置项。
配置更新
在主题中添加以下设置项进行评论功能的配置。评论设置为二级选项,因为之前不少人设置了 duoshuo: true
,结果都进群聊了。要启用某一个评论系统,只需去掉 on 前的 “#”,同时按照说明设置好对应个人账号信息即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| disqus: shortname: duoshuo: domain: youyan: id:
|
模块代码
模块代码已附在下载文件中,在此同时列出备用。依旧是使用 EJS 编写,引入一些信息,设置了几个变量,使用其他模板引擎请自行转换。所有评论模块都设置了 id="comments"
,以便有需要时通过锚点定位跳转到评论区。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <section id="comments"> <div id="disqus_thread"></div> <script type="text/javascript"> var disqus_shortname = '<%= shortname%>'; (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> </section>
|
多说评论
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <div class="duoshuo" id="comments"> <div class="ds-thread" data-thread-key="<%= key%>" data-title="<%= title%>" data-url="<%= url%>"></div> <script type="text/javascript"> var duoshuoQuery = {short_name:"<%= theme.duoshuo.domain%>"}; (function() { var ds = document.createElement('script'); ds.type = 'text/javascript';ds.async = true; ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; ds.charset = 'UTF-8'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds); })(); </script> </div>
|
友言评论
1 2 3 4
| <section class="youyan" id="comments"> <div id="uyan_frame"></div> <script src="http://v2.uyan.cc/code/uyan.js?uid=<%= theme.youyan.id%>"></script> </section>
|
相关链接
- 多说评论: http://duoshuo.com/
- 友言评论: http://www.uyan.cc/
- Disqus: https://disqus.com/
- refactor: comments code & configuration 评论模块优化 by MOxFIVE on
2016/01/01
: https://github.com/MOxFIVE/hexo-theme-yelee/commit/3138ca36bd209fd9f79b60fbb6b15b44673560b5