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

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

其实搭建在 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": "support@github.com",
        "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

共收到 10 条回复

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聚会你说过的那种不用后端的网站后我就有这年头了,但是坑中。。。。

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