Generator는 처리된 파일들을 기준으로 경로(route)를 생성합니다.
개요
hexo.extend.generator.register(name, function (locals) { |
locals
인자는 사이트 변수(site variables)를 포함하며 함수를 통해 전달될 것입니다. 이 인자를 사용하면 데이터베이스에 직접 접근하지 않고도 웹 사이트의 데이터를 얻을 수 있습니다.
경로(route) 업데이트
hexo.extend.generator.register("test", function (locals) { |
속성 | 설명 |
---|---|
path |
접두사 / 를 포함하지 않는 경로. |
data |
데이터 |
layout |
레이아웃. 렌더링할 레이아웃을 지정합니다. 이 값은 string 또는 array입니다. 이 값이 무시된다면 data 의 직접적인 경로가 반환됩니다. |
소스 파일들이 업데이트 되면, Hexo는 모든 generator들을 실행하고 경로(route)를 재구성합니다. 제발 라우터에 직접 접근하지 마시고 데이터를 리턴하세요.
예제
Archive Page
Archive page를 archives/index.html
에 생성합니다. We pass all posts as data to the templates. 우리는 모든 포스트 데이터를 템플릿으로 전달합니다.이 데이터는 템플릿의 page
변수와 같습니다.
다음, 테마 템플릿 렌더링을 위한 layout
속성을 설정합니다. 아래 예시에서 두 개의 레이아웃 설정을 확인할 수 있습니다. 만약 archive
레이아웃이 존재하지 않는다면 index
레이아웃이 사용될 것입니다.
hexo.extend.generator.register("archive", function (locals) { |
Archive Page에 Pagination 사용하기
Hexo 공식 툴인 hexo-pagination을 사용하여 간편하게 pagination을 구현할 수 있습니다.
var pagination = require("hexo-pagination"); |
모든 포스트 생성하기
locals.posts
에 포함된 모든 포스트들을 순회하고 각각의 포스트에 대한 경로(route)를 생성합니다.
hexo.extend.generator.register("post", function (locals) { |
파일 복사
이 시점에 우리는 명시적인 데이터를 반환하지 않고 필요한 경우에만 경로(route)는 fs.ReadStream
를 생성하기 위해 함수에 data
를 설정합니다.
var fs = require("hexo-fs"); |