Фильтры используются для изменения указанных данных. Hexo передает данные для фильтров в определенной последовательности и фильтров изменения данных один за другим. Эта концепция была заимствована из WordPress
Краткий обзор
hexo.extend.filter.register(type, function() { |
Вы можете определить приоритет. Низкий приоритет означает, что он будет выполняться в первую очередь. Приоритет по умолчанию равен 10. Рекомендуется использовать настраиваемое пользователем значение приоритета, которое возможно указать в конфигурации, например hexo.config.your_plugin.priority
.
Использование фильтров
hexo.extend.filter.exec(type, data, options); |
Опция | Описание |
---|---|
context |
Контекст |
args |
Аргументы. Должны быть в виде массива. |
Первый аргумент, передаваемый в каждый фильтр, это data
. Данные data
, передаваемые в следующий фильтр, могут быть изменены путем возврата нового значения. Если же ничего не возвращается, данные остаются без изменений. Вы даже можете использовать аргументы, чтобы указать другие аргументы в фильтрах. Например:
hexo.extend.filter.register("test", function (data, arg1, arg2) { |
Также можно использовать следующие методы для выполнения фильтров:
hexo.execFilter(type, data, options); |
Отмена фильтров
hexo.extend.filter.unregister(type, filter); |
Example
// Unregister a filter which is registered with named function |
// Unregister a filter which is registered with commonjs module |
Список фильтров
Здесь находится список фильтров, используемых в Hexo.
before_post_render
Выполняется перед началом обработки поста. См. post rendering для изучения этапов обработки.
Например, перевести название в нижний регистр:
hexo.extend.filter.register("before_post_render", function (data) { |
after_post_render
Выполняется после завершения обработки поста. См. post rendering для изучения этапов выполнения.
Например, чтобы заменить @username
ссылкой на профиль в Twitter:
hexo.extend.filter.register("after_post_render", function (data) { |
before_exit
Выполняется перед выходом из Hexo. Срабатывает сразу после выполнения hexo.exit
.
hexo.extend.filter.register("before_exit", function () { |
before_generate
Выполнится перед началом генерации.
hexo.extend.filter.register("before_generate", function () { |
after_generate
Выполнится после окончания генерации.
hexo.extend.filter.register("after_generate", function () { |
template_locals
Позволяет изменять локальные переменные в шаблонах.
Например, чтобы добавить переменную текущего времени в шаблон:
hexo.extend.filter.register("template_locals", function (locals) { |
after_init
Выполнится после начала инициализации Hexo - запустится только после того, как полностью отработает команда hexo.init
.
hexo.extend.filter.register("after_init", function () { |
new_post_path
Выполняется при создании поста для определения пути постоянной ссылки.
hexo.extend.filter.register("new_post_path", function (data, replace) { |
post_permalink
Используется при создании поста для определения пути постоянной ссылки.
hexo.extend.filter.register("post_permalink", function (data) { |
after_render
Выполнится после завершения обработки. См. рендеринг для подробностей.
after_clean
Executed after generated files and cache are removed with hexo clean
command.
hexo.extend.filter.register("after_clean", function () { |
server_middleware
Добавляет промежуточные задачи для сервера. app
является экземпляром Connect.
Например, чтобы добавить X-Powered-By: Hexo
в заголовке ответа:
hexo.extend.filter.register("server_middleware", function (app) { |