前言:
看到next issue 有人提出双评论系统的问题,实现方案及效果各不同正好我也考虑实现类似的双评论系统方案
为方便主题升级及管理修改方便,特此研究了一下实现原理,按照此文所讲述方式,实现自己的组合评论系统也不难
以下内容基于Next 5.1.4实现,支持主题升级,原理不变,细节会有变化
Next官方已经发布6.0.2版本,将延时加载加入了disqus。
双评论系统
原理:主要修改布局代码,配合主题配置控制显示
双评论效果演示
演示来必力与Disqus组合,gitment暂时未启用
主题配置
来必力默认只有livere_uid,需要新增配置
1 | livere:#新增 |
第三方评论模板支持
themes\next\layout\third-partycomments\xxx.swig文件
删除自己开启条件之外的控制语句,注意最后的endif 也要删除
如:
- gitment
1 | {% raw %} |
删除最外围的
{% if not (theme.duoshuo and theme.duoshuo.shortname) and not theme.duoshuo_shortname %} {% endif %}
- 来必力
1 | {% raw %} |
删除最外围的
{% if not (theme.duoshuo and theme.duoshuo.shortname) and not theme.duoshuo_shortname and not (theme.disqus.enable and theme.disqus.shortname) and not theme.hypercomments_id %}{% endif %}
- Disqus
1 | {% raw %} |
删除最外围的
{% if not (theme.duoshuo and theme.duoshuo.shortname) and not theme.duoshuo_shortname %}{% endif %}
上述代码主题升级到6.0.1时有变化,原理不变
布局顺序调整
按所需顺序调整comments各评论系统div顺序,我的顺序从上到下是
来必力
gitment
disqus
整体评论布局支持
- 创建
themes\next\layout_partials\comments\custom-comments.swig模板文件
组合需要在一起显示的评论系统,用一个div 承载,好处是如果添加了背景,可以将几个评论系统显示在一起。
条件语句使用逻辑或控制整体div显示,每个评论系统自己控制逻辑不变
核心代码:
1 | {% raw %} |
- \themes\next\layout_partials\comments.swig 文件末尾引入上述模板
{% include 'comments/custom-comments.swig' %}
注意:此代码在主题升级到6.0.1时会有变化,如下
1 | {% raw %} |
放在末尾可以覆盖前面的配置
这样做的好处是,减少原comments模板文件的修改,方便升级更新
- 添加或修改disqus 加载按钮位置
按钮放置于所有评论系统div之前
点击加载之后,将加载出的Disqus置于已有评论之后
添加以下代码到模板
1 | <div style="text-align:center;"> |
custom-comments完整代码
1 | {% raw %} |
参考,感谢大佬