過濾器用於修改某些特定的數據。Hexo 會依序將數據傳遞給過濾器,然後過濾器會依序修改數據。這個概念借鑒自 WordPress。
概要
hexo.extend.filter.register(type, function() { |
您可以定義 priority
(優先順序)。較低的 priority
表示它會先被執行。預設的 priority
為 10。我們建議使用使用者可設定的優先順序值,讓使用者可以在設定檔中指定,例如 hexo.config.your_plugin.priority
。
執行過濾器
hexo.extend.filter.exec(type, data, options); |
選項 | 描述 |
---|---|
context |
上下文 |
args |
參數。這必須是一個陣列。 |
傳遞到每個過濾器的第一個參數是 data
。傳遞到下一個過濾器的 data
可以通過返回新值來修改。如果沒有返回任何值,則數據保持不變。您甚至可以使用 args
來指定過濾器中的其他參數。例如:
hexo.extend.filter.register("test", function (data, arg1, arg2) { |
您也可以使用以下方法來執行過濾器:
hexo.execFilter(type, data, options); |
取消註冊過濾器
hexo.extend.filter.unregister(type, filter); |
範例
// Unregister a filter which is registered with named function |
// Unregister a filter which is registered with commonjs module |
過濾器列表
以下是 Hexo 使用的過濾器列表。
before_post_render
在文章渲染之前執行。請參考文章渲染以了解執行步驟。
例如,將標題轉換為小寫:
hexo.extend.filter.register("before_post_render", function (data) { |
after_post_render
在文章渲染之後執行。請參考文章渲染以了解執行步驟。
例如,將 @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
在使用 hexo clean
命令刪除生成的檔案和快取後執行。
hexo.extend.filter.register("after_clean", function () { |
server_middleware
將中間件新增到伺服器。 app
是一個 Connect 實例。
例如,將 X-Powered-By: Hexo
新增到回應標頭:
hexo.extend.filter.register("server_middleware", function (app) { |