Skip to main content Link Search Menu Expand Document (external link)

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 삭제 도중