Генератор создаёт ссылки на основе обработанных файлов.
Краткий обзор
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
для рендеринга шаблонов. В этом примере два варианта: если макета для 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"); |