分享 超简单, 一步把你 github 的博客变成多人博客.

ichord · 2013年12月24日 · 最后由 jasl 回复于 2013年12月27日 · 3469 次阅读

其实搭建在 github 上的博客都是天然的多人博客,跟贡献代码一样,每个人都可以往某个博客里贡献文章! 所以,我们的目标就是 显示每篇文章的作者 而已!

我们这里需要是用 jekyll 搭建在 github 的博客。

第一步:获得作者信息。

首先我们需要使用了 github 的 Commits API:

GET /repos/:owner/:repo/commits

使用以下参数可以根据文件的路径查询与某文件相关的 commit 信息:

path: Only commits containing this file path will be returned.

返回的信息中就包括了 author 信息:

...
"commit": {
      "author": {
        "name": "Monalisa Octocat",
        "email": "[email protected]",
        "date": "2011-04-14T16:00:49Z"
      },
    },
... 

具体信息查看该 API 文档

总得来说,以我的 blog 为例,整个 API 类似于:

https://api.github.com/repos/ichord/ichord.github.com/commits?path=#{path}

然后,我们要获得某篇文章的文件路径,也就是上面的 path. 这时候就可以用 jekyll 的 Page Variables: path 了,这个 path 就是该文件的完整路径了 (包括后缀名,如 .markdown):

_posts/2012-02-27-difference-between-economics-and-finance.markdown

最终结果就是:

https://api.github.com/repos/ichord/ichord.github.com/commits?path=_posts/2012-02-27-difference-between-economics-and-finance.markdown

wala! 如此你就可以用过 Ajax 请求获得每篇文章的作者信息了!! 这里要注意 github 对 API 请求次数的限制,有必要的时候可以自己缓存作者信息。

最后就是,显示作者信息了,这个请随意。附上我实现的效果。

如果大家想显示更多关于作者的信息的话,可以使用 @lepture

https://github.com/lepture/github-cards

我在自己 blog 的实现这个效果的时候,抄了 @lepture 不少代码,谢谢。XD. 因为只实现这个效果的话,我不想使用整个 jQuery. 然后发现 github-cards 的实现方法太 cool 了,所以...就...谢谢。

实现例子

我已经在我的 blog 实验成功了,欢迎参观。 PS.不好意思,暂时都是流水账。接着会更新一些关于远程工作的文章。XD

front-matter 加个 authors 列表就行了。

#1 楼 @Rei 对喔..... 不过可以自动化。还有头像之类的.. 不用自己写了。

曾经维护过个基于 octopress 多作者博客,还写了些插件来生成作者的文章列表

https://github.com/intridea-east/cnintridea/blob/master/plugins/author_generator.rb

#2 楼 @ichord authors 列表里包括 author 邮箱就可以生成头像了。

#4 楼 @lepture 嗯。但是要自己填。

#3 楼 @doitian 可惜啊,gh 是不支持插件的,必须--safe

之前挖的坑是,因为每个人的 blog 通常会暴露 feed,所以网站维护一个 feed url 列表就好了,然后靠 js 读取渲染,其实这样就能搞成 sns 了 - -

@jasl 其实是 'planet', 类似于 http://planet.ubuntu.com

@jasl !!! 可以搞个 ruby-china planet !!!

#9 楼 @ichord 是啊...这个想法自上次 szRuby 聚会你说过的那种不用后端的网站后我就有这年头了,但是坑中。。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号