2018-01-24 ::博客笔记:: 0 条评论
Note:文末附有实现Disqus墙内访问的具体操作步骤以及我的心得体会。
越来越多的个人博客站点使用了第三方评论系统Disqus,而且对于评论内容便于管理和通知,加上我自己对虚机数据库一无所知,于是在写这个博客模板的最开始我也开始使用Disqus系统接收评论。但是如此好用的评论系统居然被墙,国内用户如果不会科学上网的话压根没办法进行评论,于是大神们纷纷想办法通过各种吊炸天的办法实现墙内的正常访问。这方面通过小F知道了大神fooleap,他通过各种我也不明白的方法实现了墙内访问Disqus。
初步了解实现方法后,其实我并不懂怎么做,大神在GitHub上写的说明我也没怎么看懂,所以就放弃了,然后在博客上注明如果墙内的朋友想和我交流就发邮件给我。本来不怎么觉得会有朋友认真的发邮件给我一起交流,然而昨天早上收到一封邮件,是一位墙内的朋友针对我的博文提出的一些疑问希望我能给予解答。说实话我当时是惊讶并且开心的,因为我知道在国内使用邮件的频率不高,大家也没有用邮件交流的习惯,所以能收到博友专门认真写的交流邮件实在出乎我的意料。谢谢这位网名 Qidei 的朋友的来信。在来信中他提到墙内访问我的博客,没有评论的地方。我突然意识到一个问题,本来我以为墙内访问评论内容,就算是被墙,也可能只是刷不出来评论内容,但是评论的大体框架应该都是在的。但是他这么一说,我才知道原来被墙后相关区域什么内容都没了,这就很容易让人误以为我没有设置评论区,也不给别人提供交流的地方,那我的博客还开个什么劲?所以我今天特地翻墙回去,发现确实评论区一片空白,简直破坏我模板的设计。。。
所以我坚定了信心,一定要实现Disqus墙内访问!
再次打开fooleap大神的博客和他的GitHub源码研究了下,发现无从入手。去小F那里搜了一下她原来折腾Disqus时候的文章,发现过程仅仅就是配置一个php文件然后上传大神的源码到虚机后就可以实现,如果过程明白的话5分钟都不用就可以实现功能。虽然这么说,但是我还是没有从他们的言语中发现能入手的点,可能我这个小白还是太笨了。。。
恰巧知道Loekman之前也在折腾这个事情并且成功了,所以我就邮件联系了他,想看看能不能给点指导。没想到他不辞辛苦的居然写了份详细步骤给我,就像网上安装破解版软件那样的教程,每一步都清晰明了,再加上我自己看源码介绍的理解,发现原来步骤如此简单,只不过自己水平不够,纯自己研究可能确实不会。
按照以上各位大神的指导和帮助,也要感谢我爸我妈在国内的帮助,打开电脑让我远程操控调试,同时也和fooleap大神在他的博客经过几回具体问题的请教探讨后,本站的Disqus墙内访问终于顺利实现了!不过需要注意的是,因为大神的源码我不懂,实现的具体方法我也不会,所以如果在使用的期间博客评论系统有任何问题出现,我并不能及时解决。如果有任何问题无法评论,请通过邮件告知我,我再和大神们请教去 :)
最后,再感叹一下大神们尽职尽责的帮助,感谢一下他们耐心的指导和高效率的回复!同时也感谢 Qidei 让我下定决心解决这个问题!
附:实现Disqus墙内访问具体操作流程及心得
在此先感谢以下朋友的无私帮助:
- fooleap:提供了使用Disqus API实现科学访问的方法和源码
- Loekman:专门为我写了一篇实用操作指导,让我知道如何上手
- 小F:让我知道了Disqus这个东西,间接认识了fooleap大神,提供了初步的思路
事先声明(重要!)
本操作流程完成于2018年1月24日,并根据当时最新版本的源码(1层目录共11项)进行编写。之后的源码如有更新,我并不保证本操作流程继续有效,具体问题还请移步 fooleap 博客请教。谢谢!
操作前提(纯自己理解,如有偏颇,请指正)
- 虚机需支持 PHP
- 需支持 PHP cURL (请向服务提供商咨询)
资源准备
- fooleap大神写的源码(见文末参考资料)
- 相关的ftp上传软件,依操作平台和个人喜好而不同;
- 代码编辑工具,如记事本,DW等。
实际操作
- 从GitHub下载fooleap的源码到本地;
- 利用ftp工具,在虚机根目录上新建名为
disqus
的文件夹; - 将下载到本地的文件夹内的所有文件包括文件夹(目前1层目录共11项)上传至
disqus
文件夹,所以在本站的服务器上地址为 http://leiminnet.cn/disqus; 在本地文件夹中,打开存在于
api
文件夹中的config.php
文件进行配置。其中一些配置项需要登录Disqus官网进行查看。该文件中有详细说明,以下为本站一个例子(定义网站域名):define('DISQUS_WEBSITE', 'http://leiminnet.cn');
- 配置完
config.php
文件后将它上传至虚机的api
文件夹中并覆盖旧版; 打开自己博客的模板文件,以Typecho为例,在需要加载评论区的相应模板(比如
page.php
和post.php
模板文件)中,找到以下代码位置:<div id="comment"> <?php $this->need('comments.php'); ?> </div>
以上代码表示在模板此处引入
comments.php
页面实现博客系统自带的评论功能。请将这三行代码删掉,并复制粘贴以下代码到此处:<div id="comment"></div> <script> var disq = new iDisqus('comment', { forum: '在此填写你网站的shortname,需要登录disqus官网查看', api: '在此填写上传的api地址,如本站为 http://leiminnet.cn/disqus/api', site: '在此填写你网站的域名,如本站为 http://leiminnet.cn', mode: 1, timeout: 3000, init: true }); </script>
以上代码即为使用 api 进行 disqus 评论区的引入。除了
mode
,timeout
这些参数以外,还有其他参数可用,请参考GitHub中的说明取舍;打开博客模板文件
header.php
,在<head> </head>
标签之间看着顺眼的地方添加以下代码并保存:<link rel="stylesheet" href="http://leiminnet.cn/disqus/dist/iDisqus.min.css" /> <script src="http://leiminnet.cn/disqus/dist/iDisqus.min.js"></script>
注意,
href=
和src=
部分请填写自己网站的相关路径;- 至此,将模板保存后全部上传至自己虚机,覆盖原模板文件,即可实现Disqus墙内科学访问。
心得体会
第6步中替换的代码,第一行的
<div id="comment"></div>
就是一个整体,不要再在标签内添加任何其他东西。注意是
id="comment"
而并非id="comments"
。经过fooleap指正,如果 id 是其他字符,则应在对应JS文件中也改为对应字符。不过为了下载来的代码直接能用,所以这个小细节或许会容易忽略,要多留心;- api 地址一定要根据自己虚机上的路径写,否则墙内无法刷出评论区;
- 为了使墙内无法科学上网的小伙伴能成功评论,一定要在自己的Disqus中设置允许访客评论功能(在 Guest Commenting 项中勾选 Allow guests to comment);
- 按照fooleap大神GitHub中的说明,已将 Disqus 原生评论框加载代码打包在内。配置时需将网页上所有与 Disqus 相关的元素清除,例如 id 为 disqus_thread 的容器、disqus_config 函数等,否则会有冲突。实现评论计数的相关代码对此无影响。因为我自己原先是用原Disqus的相关评论代码替换了模板
comments.php
中的所有内容,然后在文章后调用该 php 文件以简化操作的,所以我的 comments.php 中包括了disqus_thread
等源程序的标签或者元素,因此在这里直接删去那个调用文件的语句就行了。但如果文章中其他部分有相关元素,或者不是像我之前这么做的话,还是需要注意一下别有漏网之鱼。
参考资料
附文中只是我自己的操作过程及心得体会,如出现任何错误或者不严谨的地方欢迎评论告知讨论。如有需要,欢迎转载,但请务必告知我,谢谢。