生成器根据处理后的原始文件建立路由。
概要
hexo.extend.generator.register(name, function(locals){ |
locals 参数会被传递到此函数,其中包含 网站变量,请尽量利用此参数取得网站数据,避免直接访问数据库。
更新路由
hexo.extend.generator.register('test', function(locals){ |
| 属性 | 描述 |
|---|---|
path | 路径。不可包含开头的 /。 |
data | 数据 |
layout | 布局。指定用于渲染的模板,可为字符串或数组,如果省略此属性的话则会直接输出 data。 |
在原始文件更新时,Hexo 会执行所有生成器并重建路由,请直接回传数据,不要直接操作路由。
示例
归档页面
在 archives/index.html 建立一归档页面,把所有文章当作数据传入模板内,这个数据也就等同于模板中的 page 变量。
然后,设置 layout 属性好让 Hexo 使用主题模板来渲染,在此例中同时设定了两个布局,当 archive 布局不存在时,会继续尝试 index 布局。
hexo.extend.generator.register('archive', function(locals){ |
有分页的归档页面
您可以通过 hexo-pagination 这个方便的官方工具来轻松建立分页归档。
var pagination = require('hexo-pagination'); |
生成所有文章
遍历 locals.posts 中的所有文章并生成所有文章的路由。
hexo.extend.generator.register('post', function(locals){ |
复制文件
这次我们不明确返回数据,而是将 data 设置为一个函数,这样路由只会在需要时才会构建 fs.ReadStream。
var fs = require('hexo-fs'); |