Hugo 초안 포스트 생성 방법 - Draft Page

여기에서는 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

참고: hugo list drafts|Hugo

템플릿에서 확인

템플릿 파일에서 초안 포스트에 링크를 열거하려면, 먼저 다음과 같이 작성을 한다.

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 옵션을 주고 실행을 시켜야 보인다.




최종 수정 : 2023-05-06