BuildFarBox / doc.farbox.com

The template for doc.farbox.com
32 stars 7 forks source link

如何为post建立像tags一样的作者索引 #4

Open chengjun opened 10 years ago

chengjun commented 10 years ago

Farbox是一个很棒的作品。我在试用。不过,我是一个farbox新手。事实上,我们是一个小组的成员,我们一起写作一个博客(不是一个人占用多个dropbox)。我们使用在post的头部用author来声明作者。例如:


layout: post

title: "科学之路:伽利略的选择"

date: 2014-06-28 12:01

author: superfarbox

tags:


读了一遍farbox的api文档,我知道post.metadata.author就可以得到每一个作者与post的对应关系了。这样可以给archive加上作者信息,比如这里:http://computational-thinking.farbox.com/archive

我实际上想要的是给每一个作者一个页面,正如category和tag一样(每个具体地category和tag都有一个自己的页面,比如“传播网络”这个category对应的页面是http://computational-thinking.farbox.com/category/%E4%BC%A0%E6%92%AD%E7%BD%91%E7%BB%9C)。

但是我的水平实在有限,不知道怎么给author写出这个东西来。category通过category.title,tags则直接就有tag.name和tag.count,author这种我们自己加上去的metadata应该怎么弄呢?有没有解决方法。最好能具体点,俺是菜鸟级别的。

oyiadin commented 10 years ago

我刚刚看了一遍 FarBox 的文档,不过对不起,我没能找到什么方法可以去很好地实现它。不过有一个稍微变通的方法,那就是,把贵站各位作者的文章分别放在不同的路径里,然后以 get_data(path='...') 的方法来获得他们每人单独的文章列表。

不过这个方法并不是很完美,不知道 @hepochen 有没有更好的方法来实现呢。

hepochen commented 10 years ago

@chengjun Thanks!

可以使用slot1(metadata.slot1)这个扩展字段,这样就能获取对应的数据了。但是这个扩展字段的索引,会使用全文搜索的索引,相对效率会低一些。

另外,建议可以直接设定一个tag为author: superfarbox,如果一个tag中包含:,是不会出现在site.tags中的。然后获取数据的时候,可以指定对应的tag就能得到作者的所有文章了。

同理,比如author_info: superfarbox这样的文章还可以作为作作者的介绍,当然,可以设置status: for_author这样的类型,可以避免跟其它文章混淆。获取作者信息(的文章)也可以不通过tag来,还有更高效的办法,直接通过路径获取。比如_system/authors/superfarbox.md 这样约定的路径。 (_system这个目录下的日志默认的status是system,不会混淆正常的文章)

不要谦虚了…… 我遇见过的几个PhD,自己真正动手写代码了,不会差的。 :)


@oyiadin 暑假了?

hepochen commented 10 years ago

@chengjun 更多的就是细节问题的,比如单个post.tags取出来的时候,也可以判断有无auth:xxx(if tag.startswith('auth:'))来进行,或者tag.replace('auth:', '')来获取对应的auth_id。

当别人访问/tag/auth:xxx这样的URL的时候,也可以跳转到专门的页面,比如/author/auth_id来处理。

oyiadin commented 10 years ago

嗯,暑假了。表示刚才重新看了一遍文档之后,真想给现在的 API 赞一个!几个月没注意,太惊喜了现在。还有赛恩姐姐那边,我在等她的设计初稿,嘛,最近自己也有点懒~

chengjun commented 10 years ago

@oyiadin 你的建议虽然可行,但会占用categories。