用 Feed 实现 Blogger 分页

使用 Blogger 建博客,一个很不爽的问题是在首页下方没有分页功能,这会直接导致有兴趣的读者没有办法方便的翻阅以前的旧帖子;而 Blogger 提供的模板,无论是老的 Template,还是新的 Layout,都没有相关的标签来实现这个功能,因此要加上这个功能,就只能继续 hack 了。

这两天利用 Blogger 的完整帖子的 Feed,配合 PHP 实现了这个功能。思路为:

  • 读取原始的 index.html,把帖子的部分去掉,也就是 <Blogger>…</Blogger> 这段内容
  • 读取以下 Feed 地址,解析出文章的日期、时间、标题、正文、标签等,按照原来模板的格式,用 PHP 输出到原来 index.html 放文章的地方
    http://www.blogger.com/feeds/[blogId]/posts/full?max-results=[step]&start-index=[startIndex]&orderby=published
  • 根据当前页码以及总帖数计算分页,在页面底部添加分页链接
  • 如果有条件,可以利用 .htaccess 文件,将分页的 URL 由原来的
    xxx.php?page=x

    形式替换成对搜索引擎更友好的

    /index/x

    形式

如此一来,就可以在自己不存储任何文章数据的情况下,实现分页功能。当然,直到目前,以上的 Feed 地址仍然是被墙的,需要翻墙或者使用 HTTP 代理才能成功地获取内容。

发表评论

Login with Sina Weibo account

或者,也可以直接用下面的表单。 电子邮件地址不会被公开。

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

8 条评论

  1. 果然是因为尖括号的问题…你的blog真漂亮,第一眼看就被惊艳到了。另外,这个分页效果似乎还有点问题,当直接跳到最后一页时仍然会显示后续数字:一共26页,直接点Last到第26页,后面还会显示27、28……出现Page 31/26 这样的错误。

  2. 谢谢你的回复,我留言了几次都未能成功,不知道是不是使用了尖括号的问题,再试一下。blogspot不支持PHP,在备份的XML文件中也找不到(Blogger)(/Blogger)这样的标记。可以把修改过程再说详细点吗?

  3. 这篇描述的就是如何在首页上实现的分页;至于 blogspot.com 上分页,也可以用类似的办法实现,只是不需要那么麻烦,直接用 JavaScript 读取 Feed 的内容,解析后再用 AJAX 的思路显示到页面上就可以了。AJAX 的页内评论,简单来讲是把评论表单的内容通过 PHP 程序直接 POST 给 Blogger 接收评论的 URL,然后再通过评论的 Feed 地址取得新的评论列表,再更新到当前页面上。Blogspot 上的 Blog 上面要这样做,没有办法写 PHP 程序,因此只能自己写 JavaScript 来实现将评论内容 POST 到 Blogger。

  4. 突然发现你的评论貌似采用了Ajax,请问这个是怎么实现的?blogspot这样的博客也可以吗?

  5. 请问你博客首页的分页功能也是这样实现的吗?没有架设自己服务器的blogspot.com博客该怎么修改才能实现分页效果呢?