훅
Hook 을 사용하면, 당신의 플러그인이 사이트 빌드에 다방면으로 정교한 작업을 수행할 수 있습니다. 당신의 플러그인에 Hook 이 포함되어 있으면, Jekyll 은 정해진 시점에 해당 Hook 을 호출합니다.
Hook 은 이벤트 이름과 컨테이너에 등록됩니다. 등록하는 방법은, Jekyll::Hooks.register 를 호출하고 컨테이너, 이벤트 이름과 Hook 이 실행될 때 호출할 코드를 연결하는 것입니다. 예를 들어, Jekyll 이 포스트를 렌더링할 때마다 특정 코드를 실행하도록 하려면, 다음과 같이 Hook 을 등록하면 됩니다:
Jekyll::Hooks.register :posts, :post_render do |post|
# code to call after Jekyll renders a post
end
Jekyll 은 :site
와 :pages
, :posts
와
:documents
, :clean
에 관련된 Hook 을 제공합니다. 어떤 상황에서든, Jekyll 은
컨테이너 객체를 첫 번째 매개변수로 사용해 당신의 Hook 을 호출합니다.
모든 :pre_render
와 :site
, :post_render
Hook 은 두 번째 매개변수로
페이로드 해시 또한 전달합니다. :pre_render
의 경우, 페이로드 해시는
렌더링 중 사용할 수 있는 변수들에 대한 완전한 권한을 제공합니다.
:site
, :post_render
의 경우, 페이로드에는 전체 사이트 렌더링이 끝난 후의
최종 값을 가지고 있다 (사이트맵이나 피드 등에 유용하다).
사용 가능한 Hook 들의 전체 목록은 다음과 같습니다:
컨테이너 | 이벤트 | 호출 시점 |
---|---|---|
|
|
사이트 초기화 직후, 환경설정과 렌더링 작업 전. 사이트 환경설정을 조정하기에 적절한 시점이다. |
|
|
사이트가 초기화된 후 |
|
|
디스크로부터 사이트 데이터를 읽어들인 후 |
|
|
전체 사이트를 렌더링하기 직전 |
|
|
전체 사이트를 렌더링한 직후 (파일 생성 전) |
|
|
전체 사이트 파일을 디스크에 생성한 직후 |
|
|
페이지가 초기화될 때마다 |
|
|
페이지 렌더링 직전 |
|
|
페이지 렌더링 직후 (디스크에 생성 전) |
|
|
페이지를 디스크에 생성한 후 |
|
|
포스트가 초기화될 때마다 |
|
|
포스트를 렌더링하기 직전 |
|
|
포스트 렌더링 후 (디스크에 쓰기 전) |
|
|
포스트를 디스크에 생성한 후 |
|
|
문서가 초기화될 때마다 |
|
|
문서 렌더링 직후 |
|
|
문서를 렌더링한 후 (디스크에 쓰기 전) |
|
|
문서를 디스크에 생성한 후 |
|
|
사이트 생성 전 Destination 삭제 도중 |