摘要
相信很多人都已经实现的coding与Github的同时托管NEXT博客。但相信很多人都会碰到coding与github到
底是使用duoshuo还是disqus的问题,毕竟多说适合国内,而disqus适合国外。如何选择都不是最好的。那
有没办法实现国内coding使用多说。国外github使用disqus,其实是可以得。仅需您做部分代码的修改。本
章为此而介绍。
HEXO-建站系列
HEXO-优化系列
HEXO-进阶系列
前沿
本章将会描述如何实现coding使用多说的插件作为底部评论,而github使用disqus插件作为底部评论。其次
本介绍并不会涉及如何获取和设置多说和disqus,所以如果您需要了解相关信息,
请关注本系列的”HEXO-建站系列”
多说与disqus文件代码分析
无论多说与disqus都需要在主题下的_config.yml
进行启用相关配置选项,代码如下
1 |
|
正常情况下你只能启用其中的一个,这是由于NEXT下的代码逻辑所决定.以下部分我们介绍多说与disqus相关
代码文件,你就会明白上面所说情况的原因。
多说涉及文件与分析
多说与disqus的功能实现文件
多说与disqus功能实现分别对应一个swig文件,文件的位置在:themes\next\layout\_scripts\third-party\comments
下面
- disqus.swig
- duoshuo.swig
以上两个文件分别是多说与disqus实现代码(代码包含了多说与disqus实现的js代码)
页面显示的多数与disqus的关键文件
直接决定是否在文章页面显示的多说或者disqus的关键代码在themes\next\layout\_partials\comments.swig
总结
故本章目的实现的关键就在comments.swig、disqus.swig、duoshuo.swig。
comments.swig包含了关于多说与disqus是否页面显示的判断
disqus.swig、duoshuo.swig 包含了相关官方功能实现的代码。
默认情况下:1
如果多说与disqus都在`_config.yml`开启,最终`comments.swig`判断标准是以多说为优先。
所以如果您要实现coding
与github
分开加载对应的评论框,你需要修改comments.swig
的显示判断标准
同时你还要在相关的功能文件disqus.swig、duoshuo.swig
设置判断您网站属于哪个域名判断,从而加载
对应评论框的代码。
原理描述为此,以下细说实现过程:
实现代码
修改comments.swig
判断标准
目的:修改comments.swig
不区分多说与disqus的优先。其实就是一个if esleif
的取消
原代码
1 | {% if page.comments %} |
修改后的代码:
1 | {% if page.comments %} |
修改duoshuo.swig
判断标准
目的:判断你的域名,即判断你当前访问的域名是否是yourname.coding.net
.是就加载多说代码,
否不加载
原代码
1 | {% if (theme.duoshuo and theme.duoshuo.shortname) or theme.duoshuo_shortname %} |
修改后的代码:
需要添加的代码:目的判断你的域名是否是yourname.coding.net
.实现判断性加载
您需要替换chinadomain
字段的值为你真实的coding.net
的网站
1 | host = window.location.href; |
最终结果:
1 | {% if (theme.duoshuo and theme.duoshuo.shortname) or theme.duoshuo_shortname %} |
同理修改disqus.swig
判断标准
原代码
1 | {% if theme.disqus_shortname %} |
修改后的代码:
需要添加的代码:目的判断你的域名是否是yourname.coding.net
.实现判断性加载
您需要替换chinadomain
字段的值为你真实的coding.net
的网站
1 | host = window.location.href; |
```
总结
当你修改完并保存后,就可以实现coding加载多说,github加载disqus.实现国外与国内评论框的分别加载
结语
如果你还需要了解更多技术文章信息,请继续关注Jory博客