生成器根据处理过的文件构建路由。
¥A generator builds routes based on processed files.
概要
¥Synopsis
hexo.extend.generator.register(name, function (locals) { |
locals
参数将传递到包含 站点变量 的函数中。你应该使用此参数获取网站数据,从而避免直接访问数据库。
¥A locals
argument will get passed into the function, containing the site variables. You should use this argument to get the website data, thereby avoiding having to access the database directly.
更新路由
¥Update Routes
hexo.extend.generator.register("test", function (locals) { |
属性 | 描述 |
---|---|
path |
不包括前缀 / 的路径。 |
data |
数据 |
layout |
布局。指定要渲染的布局。值可以是字符串或数组。如果忽略它,则路由将直接返回 data 。 |
当源文件更新时,Hexo 将执行所有生成器并重建路由。请返回数据,不要直接访问路由。
¥When the source files are updated, Hexo will execute all generators and rebuild the routes. Please return the data and do not access the router directly.
示例
¥Example
存档页面
¥Archive Page
在 archives/index.html
创建一个存档页面。我们将所有帖子作为数据传递给模板。此数据相当于模板中的 page
变量。
¥Create an archive page at archives/index.html
. We pass all posts as data to the templates. This data is equivalent to the page
variable in templates.
接下来,设置 layout
属性以使用主题模板进行渲染。我们在此示例中设置了两种布局:如果 archive
布局不存在,则将使用 index
布局。
¥Next, set the layout
attribute to render with the theme templates. We’re setting two layouts in this example: if the archive
layout doesn’t exist, the index
layout will be used instead.
hexo.extend.generator.register("archive", function (locals) { |
带分页的存档页面
¥Archive Page with Pagination
你可以使用方便的官方工具 hexo-pagination 轻松构建带分页的存档页面。
¥You can use the convenient official tool hexo-pagination to easily build archive pages with pagination.
var pagination = require("hexo-pagination"); |
生成所有帖子
¥Generate All Posts
遍历 locals.posts
中的所有帖子并为所有帖子创建路由。
¥Iterate over all posts in locals.posts
and create routes for all the posts.
hexo.extend.generator.register("post", function (locals) { |
复制文件
¥Copy Files
这次我们不显式返回数据,而是将 data
设置为函数,这样路由仅在需要时构建 fs.ReadStream
。
¥This time we don’t return the data explicitly but instead set data
to a function so the route will build fs.ReadStream
only when needed.
var fs = require("hexo-fs"); |