ジェネレーターは、処理されたファイルに基づいてルートを構築します。
概要
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` 属性を設定します。この例では、2つのレイアウトを設定しています。`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"); |