<font color=#27cf5e size=4>前言</font>


上一篇文章我们已经讲了如何让Typecho用上多说社会化评论系统 , 那么我们如何在首页上或者一些地方显示评论数呢?这里需要注意一点,多说的评论数与本地的评论数并不同步的,细心的同学或许已经发现,明明有好多人给我的文章评论了,为什么首页上文章的评论数还是显示 0 呢?因为,你使用的是多说评论系统,而不是官方自带的评论系统,两者的数据并不储存在同一地方,而首页上显示文章评论数的地方是获取自带的评论系统数据。自然无法正常显示。那么我们如何解决这一问题呢?往下看

<font color=#27cf5e size=4>让首页正确显示评论数的解决方法</font>


方法一: 插件

其实早有人开发了一款让多说评论数据同步到Typecho的插件,具体插件的下载地址我在这里就不提供了撒,大家自行百度获取。不过 我个人觉得这个插件十分鸡助的感觉,为什么这么说呢?因为这款插件的原理就是下载多说评论数据到本地数据库。等于就是说 你只不过是借用多说的外壳,实际上数据还是储存在本地的(时间久了会逐渐占空间),你说你土豪?你说你空间大?不在乎?那我还没说最鸡助的地方,就是这款插件并不会实时下载多说评论数据到本地数据库,必须要手动执行命令。这……我就不用多做解释了吧,你应该懂。


方法二: 代码

通过PHP 获取评论数然后再稍作修改首页文件就可以实现 实时的 正确的显示评论数,嗯……这么一句话就介绍完了 看来的确比第一个方法要好很多,还是注意啦,这个方法呢 经过我个人的实验 是挺好用的 不过会有一个小小的缺憾,就是当你使用了这个方法以后,进入你的网站首页速度会稍有延迟,其他页面不会有影响(因为首页获取评论数的原因导致)。目前我个人能力不足无法解决,而且我有强迫症的原因,所以最后我选择了第三种方法。先说说看这个方法是如何实现吧!首先这个方法的原作者我也忘记是谁了,后来不能用了,经过 @Jrotty 重新修改了以后,让这个方法又起死回生了。原文地址:很神奇的传送门

步骤:

1.在当前主题文件夹下新建一个 <font color=#00a2ff>getDuoshuoComments.php</font> 文件,代码如下

 <?php function getDuoshuoComments($threads){
$url = 'https://api.duoshuo.com/threads/counts.json?short_name=ryongyon&threads=' . $threads;
$jsonComm = file_get_contents($url);
$arrayComm = json_decode($jsonComm, TRUE);
$counts = $arrayComm['response'][$threads]['comments'];
if(!is_int($counts)){
return 0;
}
return $counts;
}

2.这里需要改的是第二行的 <font color=#00a2ff>short_name=ryongyon</font>,其中 <font color=#00a2ff>ryognyon</font> 替换为你在多说创建的二级域名。不清楚的可以到多说管理后台查看。举个例子:你在多说创建的二级域名为 <font color=#00a2ff>123456.duoshuo.com</font>,那么 <font color=#00a2ff>short_name=ryongyon</font> 就修改为 <font color=#00a2ff>short_name=123456</font>

3.然后再需要显示评论数的文件添加 <font color=#00a2ff>include('getDuoshuoComments.php');</font> (这里我们说的是首页,所以我们要在当前主题文件夹中的index.php添加这行代码,千万不要忘记代码最后的 ; )

示例图:
示例图

4.最后在需要显示评论数的地方添加:<?php echo getDuoshuoComments($this->cid); ?>

就大功告成了!

示例图:
示例图

示例图

<font color=#DC143C size=4>注意事项</font>
以上示例图是以我个人当前所用的主题模板为例子,每个人使用的主题模板不同,代码或许有所差异,不过只需要找到显示首页显示评论数的相应代码进行修改就可以了。


方法三: 使用官方自带评论系统

如果你动手能力不强,经不起折腾的朋友还是老老实实的用回官方自带的评论系统吧!或者你也可以直接让首页不现实文章评论数,这也是一个很好的方法。