フィルターは、特定のデータを変更するために使用されます。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) { |