资讯专栏INFORMATION COLUMN

Typecho 《HelloChangYan》插件500错误以及优化

zhaochunqi / 3026人阅读

摘要:功能是个好功能,但是在下载的插件包中发现了一些,而且在使用步骤以及文件注释中作者并没有提及这些,想联系作者,但是始终找不到作者的联系方式,那只有自己修改了。资源优化之后的插件包,点我下载


原文是在我自己博客中,小伙伴也可以点阅读原文进行跳转查看,还有好听的背景音乐噢~

HelloChangYan

HelloChangYan是一个typecho的畅言评论回推插件,顾名思义就是在网站中使用了畅言评论之后,把评论内容以及一些参数数据回推到网站,达到网站评论和畅言同步的效果。

功能是个好功能,但是在下载的插件包中发现了一些BUG,而且在使用步骤以及文件注释中作者并没有提及这些,想联系作者,但是始终找不到作者的联系方式,那只有自己修改了。主要有两点

路径问题,导致出现500报错

字符串替换问题,导致评论数据插入评论表异常

下面就谈一下出现bug的地方和改善方法

问题以及改善

问题都是出现在feedback.php文件中,先看一下这个文件的源码:

上图为feedback.php的源码截图,我在图中做了标记的1、2两处就是需要修改的地方。

修改路径

第一处:

require_once dirname(__FILE__) . "/config.inc.php";

上述这段代码的意思是引入在当前目录中的config.inc.php文件,但是在我们的目录列表中并没有找到这个文件,回想一下,config.inc.php这个文件好像就是typecho的配置文件,作者的真正意图应该是想要引入这个文件,所以我们修改为:

require_once "../../../config.inc.php";

让它去项目根目录找到config.inc.php并引入,便可解决问题

替换指定字符串

第二处:

$title = str_replace(" - Hello World", "", $jsonp->title);

由上述代码得知,是去掉 - Hello World字符串,并得到一个新的字符串,也就是网站中存在的真实的文章标题。这个标题用来查找文章ID,在$rows = $db->fetchAll($db->select()->from("table.contents")->where("title = ?", $title));这段代码中可以看出。
接上段,实际上畅言返回json数据的title值,并没有 - Hello World字符串,这是什么原因呢?我们看一下,畅言实际返回的json数据(以我的网站为例):

从上面title字段中可以看出,返回的title是一个文章标题+文章撰写人的一个组合。通过这点我们就可以理解了,上面的代码是为了去掉多余的文章撰写人,得到文章标题。我们需要根据网站中的实际情况进行修正,比如我的标题中返回的撰写人是命中水,那么去掉命中水就可以了。

$title = str_replace(" - 命中水", "", $jsonp->title);

那么如何获取网站撰写人呢?我们可以先把畅言返回的json数据保存在本地,然后查看title字段得到。

注意:在 - 命中水中的左右各有一个空格,不要漏了;

做完上述工作,再把代码简单优化一下,差不多就是这个样子:

以上就是这次发现的问题和优化方法,我已经打包好了,放在文章末尾资源目录下,需要的可以去下载;

使用说明

找到这个插件的地方几乎都配有使用步骤描述,但是描述基本上都是零散或者不全面的,我把这些整理总结了一下,放在下面,第一次使用的小伙伴可以作为参考:

先把HelloChangYan插件上传到typecho的usr/plugins目录下

把HelloChangYan目录里的comments.php文件复制到现在正在使用的主题目录下,替换掉comments.php

去畅言官网注册一个账户,并在后台首页得到畅言秘钥,APP IDAPP KEY

登陆typecho的博客后台主页,在插件列表里启用HelloChangYan,并打开设置,在设置页的畅言appid畅言appkey文本框中填写,上一步骤获取的APP IDAPP KEY

在设置页可以看到回推地址,这个文本框中有一串url,这个url就是畅言推送评论的回推地址,复制这个链接,然后进入畅言后台,找到系统设置->通用设置->高级设置,在评论回推地址的文本框里填写刚刚复制的回推地址,点击确定,并下拉到页面最底部,保存设置。

上面都配置好之后,回到HelloChangYan的设置页,在最后一个选项中,启用畅言即可。

以上就是这款插件的使用说明了。

资源

优化之后的HelloChangYan插件包,点我下载

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25660.html

相关文章

  • 优化typecho性能,使typecho可以流畅支持200w posts

    摘要:由于是一个用于个人的博客系统,所以其设计之初就不支持过大的数据量。在表数据量较大的情况下,表可能会容易损坏或者索引丢失,尤其是引擎。 由于Typecho是一个用于个人的博客系统,所以其设计之初就不支持过大的数据量。但最近不少朋友向我求助,希望用typecho来搭建数据量较大的商业网站(譬如外贸团队),于是有了修改typecho使支持大量post的想法,最终实现了HPTypecho(Hi...

    pekonchan 评论0 收藏0
  • typecho插件编写教程6 - 调用接口

    摘要:此文原本发表于我的博客老高的技术博客,欢迎和老高交流此篇我们开始调用接口,我们在插件类中新定义一个方法,起名为,在方法中我们通过系统配置获取接口调用地址。 此文原本发表于我的博客 老高的技术博客 ,欢迎和老高交流! 此篇我们开始调用接口,我们在插件类中新定义一个方法,起名为send_post,在方法中我们通过系统配置获取接口调用地址。 百度给的例子中使用了php的CURL,更...

    endless_road 评论0 收藏0
  • SegmentFault 专访 Typecho 发起人:Joyqi

    摘要:基于使用多种数据库储存数据,在许可证下发行的开源程序,使用做版本管理。精简的是代码架构运行效率,在功能扩展性和安全性方面丝毫没有打折扣。解析器,这是这一版新引入的解析器,也是正在使用的,主要可以保证和渲染的严格一致性。 showImg(https://segmentfault.com/img/bVSHIC); 在 8 月 22 日晚 20:00 的讲座 【Typecho 那些事(上)】...

    sanyang 评论0 收藏0
  • typecho插件编写教程1 - 从HelloWorld说起

    摘要:看起来很简单吧其实里面还是有不少坑的。激活插件方法如果激活失败直接抛出异常禁用插件方法如果禁用失败直接抛出异常获取插件配置面板配置面板个人用户的配置面板插件实现方法插件流程插件的基本流程是这样的。下一节老高会更详细的说明插件类的方法。 最近老高正在编写一个关于typecho的插件,由于typecho不像wordpress,有那么多的文档参考,写一个插件还是遇到了很多的坑,不过随着研究的...

    yintaolaowanzi 评论0 收藏0
  • typecho插件编写教程5 - 核心代码

    摘要:此文原本发表于我的博客老高的技术博客,欢迎和老高交流之前啰嗦了很多,现在开始写核心代码。至此我们已经拿到了文章的永久链接,下一步就是给百度服务器发送数据了本节完 此文原本发表于我的博客 老高的技术博客 ,欢迎和老高交流! 之前啰嗦了很多,现在开始写核心代码。 分析一下,发布文章的时候,我们需要的信息就是当前文章的URL,我们需要想办法从$contents、 $class中拿到他。...

    GraphQuery 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<