Hugo 초안 포스트 생성 방법 - Draft Page
초안 포스트
Hugo의 초안(draft) 기능은 미완성 기사 파일을 일시적으로 다른 기사와 같은 위치에 저장하는 기능이다. 페이지의 머릿말(Front matter) 부분에 draft: true
라고 하는 기입되어 있으면, 그 페이지는 드래프트로서 다루어진다.
YAML 형식의 경우
---
draft: true
---
본문
TOML 형식의 경우
+++
draft = true
+++
본문
초안으로 작성된 포스트는 기본적으로 HTML 파일로 출력되지 않는다. 초안 포스트도 출력하도록 하려면, hugo
명령에 -D
(--buildDrafts
) 옵션을 지정한다.
초안 포스트 출력
% hugo -D # 사이트를 생성하는 경우
% hugo server -D # 서버를 기동하는 경우
public 디렉터리에 출력되는 초안 포스트에 주의
hugo
명령은 디폴트로 public
디렉터리에 HTML 파일 등을 출력하지만, 이 때, public
디렉터리내에 이미 존재하는 초안 포스트를 삭제하지는 않는다.
% hugo -D # 이것으로 draft 포스트를 토함해서 생성된다.
% hugo # 다음에 draft 모드 OFF로 생성해도 기존 초안 포스트가 삭제되지 않는다.
웹 사이트를 게시할 때는 초안 기사가 잘못 업로드되지 않도록 주의가 필요하다. 포스트를 업로드하기 전에 public
디렉터리를 삭제한 다음에 hugo
명령으로 다시 생성하는 것이 안전하다.
Linux / macOS의 경우
% rm -Rf public && hugo
Windows의 경우
C:\> rmdir /s /q public & hugo
초안 포스트 목록 확인
커멘트 라인에서 확인
커멘드 라인에서 hugo list drafts
실행하면, contents
디렉터리의 포스트 중에 초안으로 체크되어 (머릿말에 draft: true
로 되어) 있는 목록을 볼 수 있다.
% hugo list drafts
content/draft.md
content/post/sample2.md
템플릿에서 확인
템플릿 파일에서 초안 포스트에 링크를 열거하려면, 먼저 다음과 같이 작성을 한다.
layouts/index.html
<h2>Draft Pages</h2>
<ul>
{{ range (where .Site.Pages ".Draft" true) }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
where .Site.Page ".Draft" true
라고 되어 있는 부분은 초안 포스트를를 추출하기 위한 검색 조건을 지정하고 있다.- 사이트의 모든 페이지(
.Site.Pages
)에서 페이지 변수.Draft
의 값이true
로 되어 있는(".Draft" true
)을 열거하도록 지정되어 있다.
그러고, 기동 명령에 -D
옵션을 주고 실행을 시킨다.
% hugo server -D
포스트에서 초안 포스트인지 판별
템플릿 파일에서 현재 렌더링중인 기사가 초안인지(머릿말에 draft: true
으로 작성되어 있음) 여부를 확인하려면, Page 변수인 .Draft
를 참조한다.
layouts/_default/single.html
<h1>{{ .Title }}</h1>
{{ if .Draft }}
<b>주의: 이 포스트는 아직 초안입니다.</b>
{{ end }}
물론 기동은 명령에 -D
옵션을 주고 실행을 시켜야 보인다.