Friday, October 17, 2008

Blogger 的相关文章和热门文章

看到很多别人的 Blog 在文章页面下方都有“相关文章”和“热门文章”的列表,无疑能够增加访问者继续阅读文章的兴趣。可是 Google 的 Blogger 没有这样的功能,于是自己想办法也添加了一个。

由于 Blogger 并没有提供相关的模板标签(Tags)来支持这样的功能,因此自己只好用 PHP 和 MySQL 建立了一个简单的数据维护和查询系统,然后用 AJAX 的方式在页面上显示出来。具体来讲有以下内容:
  • 利用 Google Blogger 的 Feed 接口将文章的 ID、标题、标签、URL、发布及修改时间等内容用程序导入到数据库。
  • Google Analytics 的页面浏览数统计(统计报告 » 内容 » 最常见内容)数据导出成文本文件,再通过程序导入到数据库。
  • 用 PHP 建立一个“相关文章”的查询接口。输入参数为文章的 ID,输出为指定数量的相关文章列表。具体算法上,先用 ID 查出基准文章的标签,然后在数据库中文章中比对标签匹配的数量,按照标签匹配数量从多到少找出相关的文章。
  • 对于热门文章,有两种计算方法。一种是按有史以来所有文章的浏览量来排序,但是用这种方法得到的结果,基本上都是 2005 年很老的文章,而很多有意义的新文章却很难出现。于是我采用了另一种算法,即按照每日平均浏览量来排序,这样比较新的浏览量比较大的文章也能出现了。

修改好模板以后,将整个 Blog 重新发布,现在这些功能已经调试好并上线了。顺便抱怨一下,对于用 FTP 发布的 Blogger 来讲,帖子多了以后,整站重新发布,真是一个漫长的过程啊。

在修改模板的同时,也顺便改了一下首页上提示阅读全文的方式,将原来的“点击这里阅读全文”的文字链接改成了图标,希望这样看起来更醒目一些,在我另一个非技术的 Blog 上可以看到效果。

另外,最初做的模板的 PSD 文件找不到了,也忘了当时在标题部分用的哪种字体。这给后面添加新的标题带来很多麻烦。于是趁这次修改模板,一并将标题的图片都修改了。找了很多字体,也研究了很久,挑了 10 种非衬线(Sans Serif)字体出来,最后选中的竟然是 Windows XP 自带的 Lucida Sans Unicode。

Labels: , , , , , ,

Thursday, May 29, 2008

用 AJAX 实现 Blogger 页内评论

之前服务器上有 Java 环境时,一直用一个自己写的 Servlet 作为中间代理来向 Blogger 的评论页面 POST 表单数据,实现页面内的评论操作,后来转挂在朋友的 IIS 服务器下,由于对 ASP 不熟,这一功能就一度取消了。现在购买了新的 Linux PHP 服务器,因此用 PHP 重新写了一个同样功能的中间代理来实现这一功能,并且实现成了 AJAX 的模式。评论内容的读取也一样通过 Blogger Feed 的 JSON 模式读取,因此提交评论后可以立即显示出来,而不用再等待 Blogger 重新生成 HTML 页面并通过 FTP 上传这一漫长的过程。(虽然实际上后台它还是不可避免的执行了这个过程。)

经过多次测试,应该可以用了。关于 Spam 的问题,以前的验证码是直接读取的 Blogger 页面的 Captcha 图片,现在 Google 改变了表单结构以至于程序已经无法自动做这个动作。所以我取消了 Blogger 自己的 Captcha 验证,自己写了个简单的加减法验证,虽然仍然不能完全杜绝 Spam,但已经比几天前测试时裸奔的情况好多了。当时夸张到一个下午一张帖子被贴了 50 多条 Spam 评论。毕竟传说 Google 的 Captcha 也已经被破解了么,同样不能完全杜绝 Spam。 ;-)

另外,Backlink 不显示的问题也修正了。不过,经过前端时间页面恶意代码事件的影响,目前似乎已经没什么 Backlink 了…… :-(

Labels: , , , , , , ,