Генератор создаёт ссылки на основе обработанных файлов.
Краткий обзор
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'); |