原文在我自己的博客里,小伙伴们也可以点击阅读原文跳转查看,还有好听的背景音乐~HelloChangYanHelloChangYan是一款typechocommentandretweet插件,顾名思义就是在使用网站评论后,将评论内容和一些参数数据推送回网站,从而达到网站评论和网站评论同步的效果网站上的评论。功能是个不错的功能,但是在下载的插件包中发现了一些bug,作者在使用步骤和文件注释中没有提到这些。想联系作者,但是还是找不到作者的联系方式,只好自己修改上去。主要有两个路径问题,导致500错误字符串替换问题和评论数据异常插入评论表。下面说说bug出现的地方和改进方法。问题和改进问题都出现在feedback.php文件中,先看看这个文件的源码:上图是feedback.php源码的截图,1和2我在图片中标记的地方是需要修改的地方。修改路径的第一部分:require_oncedirname(__FILE__)。'/config.inc.php';上面代码的意思是在当前目录导入config.inc.php文件,但是在我们的目录列表中并没有找到这个文件。回想一下,文件config.inc.php似乎是typecho的配置文件。作者的真实意图应该是引入这个文件,所以我们修改为:require_once'../../../config.inc.php';让它去项目根目录下找到config.inc.php导入,问题就可以解决替换第二处的指定字符串:$title=str_replace('-HelloWorld','',$jsonp->title);从上面的代码可知,去掉了-HelloWorld字符串,得到了一个新的字符串,也就是网站中文章的真实标题。这个title用于在$rows=$db->fetchAll($db->select()->from('table.contents')->where('title=?',$title))中查找文章ID;在这段代码中可以看出。接上一段,其实就是说返回json数据的title值,并没有-HelloWorld字符串。这是什么原因?我们看一下畅言实际返回的json数据(以我的网站为例):从上面的title字段可以看出,返回的title是文章标题+文章作者的组合。通过这一点,我们可以理解,上面的代码是去除多余的文章作者,得到文章的标题。我们需要根据网站的实际情况进行更正。比如我标题中返回的作者是命中水,那么去掉命中水即可。$title=str_replace('-打水','',$jsonp->title);那么如何获取网站的作者呢?我们可以先把畅言返回的json数据保存到本地,然后查看title字段获取。注意:-打水的左右各有一个空格,不要打错;做完上面的工作,简单优化一下代码,大概是这样的:以上就是这次发现的问题和优化方法,我已经打包好了,放在文末的资源目录下,你需要的可以下载;使用说明几乎所有能找到该插件的地方都配有使用步骤的说明,但基本上都是零散或不完整的说明。我总结了这些,放在下面,初次使用的朋友可以作为参考:先把HelloChangYan插件上传到typecho的usr/plugins目录下,复制HelloChangYan目录下的comments.php文件到当前主题目录,替换comments.php到畅言官网注册账号,在后台首页获取畅言秘钥,用APPID和APPKEY登录typecho的博客后台首页,在插件列表中启用HelloChangYan,并打开设置,在设置页面进入畅言,填写appid和畅言appkey文本框。上一步获取的APPID和APPKEY可以在设置页面看到推送地址。此文本框中有一串url。该url为畅言推送评论的推送地址。复制这个链接,然后进入畅言后台,找到系统设置->通用设置->高级设置,在评论转发地址文本框中填写刚刚复制的转发地址,点击确定,然后向下滚动到页面底部即可保存设置。以上配置完成后,回到HelloChangYan的设置页面,在最后一个选项中,启用Changyan。以上就是这个插件的使用说明。资源优化后的HelloChangYan插件包,点我下载
