今天在将博客主题移植至 Hexo 时,想要获取某个分类(Category)或者标签(Tag)下的所有文章(准确来说是想获得文章总数),在使用中文关键词搜索时,没有获得任何有用的信息(或许是我搜索姿势不对)。换用英文关键词「hexo category all posts」后搜索到了所需的信息,遂决定写一篇文章记录一下。

获取特定分类下的文章

let result = site.categories.findOne({name: 'example'})

同样的,你可以这样获取特定标签下的文章:

site.tags.findOne({name: 'example'})

其中 name 指定要查找分类的名称,返回值是一个 Warehouse(Hexo 作者开发的一个轻量级数据库) Document 对象。你可以直接使用 result.length 来获得该分类 / 标签下的文章总数。你也可以用 forEach 来遍历每篇文章:

result.posts.forEach(function(post) {
    // do what you want to do with each post
});

result.posts 是一个 Warehouse 的 Model 对象,所以你可以使用一些 Model 的高级方法(具体可用方法参见 Warehouse 文档)。举个栗子:

```ejs <% site.tags.findOne({name: ‘example’}).posts.sort(‘date’, -1).limit(5).each(function(post)