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 들의 전체 목록은 다음과 같습니다:

컨테이너 이벤트 호출 시점

:site

:after_init

사이트 초기화 직후, 환경설정과 렌더링 작업 전. 사이트 환경설정을 조정하기에 적절한 시점이다.

:site

:after_reset

사이트가 초기화된 후

:site

:post_read

디스크로부터 사이트 데이터를 읽어들인 후

:site

:pre_render

전체 사이트를 렌더링하기 직전

:site

:post_render

전체 사이트를 렌더링한 직후 (파일 생성 전)

:site

:post_write

전체 사이트 파일을 디스크에 생성한 직후

:pages

:post_init

페이지가 초기화될 때마다

:pages

:pre_render

페이지 렌더링 직전

:pages

:post_render

페이지 렌더링 직후 (디스크에 생성 전)

:pages

:post_write

페이지를 디스크에 생성한 후

:posts

:post_init

포스트가 초기화될 때마다

:posts

:pre_render

포스트를 렌더링하기 직전

:posts

:post_render

포스트 렌더링 후 (디스크에 쓰기 전)

:posts

:post_write

포스트를 디스크에 생성한 후

:documents

:post_init

문서가 초기화될 때마다

:documents

:pre_render

문서 렌더링 직후

:documents

:post_render

문서를 렌더링한 후 (디스크에 쓰기 전)

:documents

:post_write

문서를 디스크에 생성한 후

:clean

:on_obsolete

사이트 생성 전 Destination 삭제 도중