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大神,提供了初步的思路

操作前提(纯自己理解,如有偏颇,请指正)

  1. 虚机需支持 PHP
  2. 需支持 PHP cURL (请向服务提供商咨询)

资源准备

  1. fooleap大神写的源码(见文末参考资料)
  2. 相关的ftp上传软件,依操作平台和个人喜好而不同;
  3. 代码编辑工具,如记事本,DW等。

实际操作

  1. 从GitHub下载fooleap的源码到本地;
  2. 利用ftp工具,在虚机根目录上新建名为disqus的文件夹;
  3. 将下载到本地的文件夹内的所有文件包括文件夹(目前1层目录共11项)上传至disqus文件夹,所以在本站的服务器上地址为 http://fyzgxy.cn/disqus
  4. 在本地文件夹中,打开存在于api文件夹中的config.php文件进行配置。其中一些配置项需要登录Disqus官网进行查看。该文件中有详细说明,以下为本站一个例子(定义网站域名):

    define('DISQUS_WEBSITE', 'http://fyzgxy.cn');
  5. 配置完config.php文件后将它上传至虚机的api文件夹中并覆盖旧版;
  6. 打开自己博客的模板文件,以typecho为例,在需要加载评论区的地方,比如page.phppost.php输入以下代码并保存:

    <div id="comment"></div>
    <script>
    var disq = new iDisqus('comment', {
    forum: '在此填写你网站的shortname,需要登录disqus官网查看',
    api: '在此填写上传的api地址,如本站为 http://fyzgxy.cn/disqus/api',
    site: '在此填写你网站的域名,如本站为 http://fyzgxy.cn',
    mode: 1,
    timeout: 3000,
    init: true
    });
    </script>

    除了modetimeout这些参数以外,还有其他参数可用,请参考GitHub中的说明取舍;

  7. 打开博客模板文件header.php,在<head> </head>标签之间看着顺眼的地方添加以下代码并保存:

    <link rel="stylesheet" href="http://fyzgxy.cn/disqus/dist/iDisqus.min.css" />
    <script src="http://fyzgxy.cn/disqus/dist/iDisqus.min.js"></script>

    注意,href=src=部分请填写自己网站的相关路径;

  8. 至此,将模板保存后全部上传至虚机相应位置即可实现Disqus墙内科学访问。

心得体会

  • 第6步中的代码,第一行的

    <div id="comment"></div>

    就是一个整体,标签中间原本是引入模板中comments.php文件的语句,即:

    <div id="comment">
    <?php $this->need('comments.php'); ?>
    </div>

在修改时应去掉中间一行语句,并注意是id="comment"而并非id="comments"。经过fooleap指导,如果 id 是其他字符,则应在对应JS文件中也改为对应字符。不过为了直接能用,所以这个小细节或许会容易忽略,要多留心;

  • api 地址一定要根据自己虚机上的路径写,否则墙内无法刷出评论区;
  • 为了使墙内无法科学上网的小伙伴能成功评论,一定要在自己的Disqus中设置允许访客评论功能(在 Guest Commenting 项中勾选 Allow guests to comment);
  • 模板中原Disqus的有关内容都要删掉,否则会有冲突。因为我自己原先是用原Disqus的相关评论代码替换了模板comments.php中的所有内容,然后在文章后调用该 php 文件以简化操作的,所以我的 comments.php 中包括了disqus_thread等源程序的标签或者元素,因此在这里直接删去那个调用文件的语句就行了。但如果文章中其他部分有相关元素,或者不是像我之前这么做的话,还是需要注意一下别有漏网之鱼。

参考资料

附文中只是我自己的操作过程及心得体会,如出现任何错误或者不严谨的地方欢迎评论告知讨论。如有需要,欢迎转载,但请务必告知我,谢谢。