Hugo のドラフト機能は、未完成の記事ファイルを一時的にほかの記事と同じ場所に保存しておくための機能です。
ページの Front matter 部分に、draft: true
という記述があると、そのページはドラフトとして扱われます。
---
draft: true
---
本文
+++
draft = true
+++
本文
ドラフトとして作成された記事は、デフォルトでは HTML ファイルとして出力されません。
ドラフト記事も出力するようにするには、hugo
コマンドに -D (--buildDrafts)
オプションを指定します。
$ hugo -D (サイトを生成する場合)
$ hugo server -D (サーバーを立ち上げる場合)
hugo
コマンドは、デフォルトで public
ディレクトリに HTML ファイルなどを出力しますが、このとき、public
ディレクトリ内に既に存在するドラフト記事を削除することはありません。
$ hugo -D (ここでドラフト記事も含めて生成される)
$ hugo (次にドラフトモード OFF で生成しても、既存のドラフト記事が削除されない)
Web サイトを公開するときは、ドラフト記事が間違ってアップロードされないように気を付けてください。
記事のアップロード前は、public
ディレクトリを削除してから hugo
コマンドで再生成すると安全です。
$ rm -Rf public && hugo
C:\> rmdir /s /q public & hugo
コマンドラインで hugo list drafts
と実行すると、contents ディレクトリの中の記事のうち、ドラフトとしてマークされている(フロントマターに draft: true
と記述されている)ファイルの一覧を確認することができます。
$ hugo list drafts
draft.md
diaries/temp.md
books/work-shift.md
テンプレートファイル内で、ドラフト記事のリンクを列挙するには以下のようにします。
<h2>ドラフト記事の一覧</h2>
<ul>
{{ range (where .Site.Pages ".Draft" true) }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a>
{{ end }}
</ul>
where .Site.Page ".Draft" true
という部分は、「サイト内のすべてのページ (.Site.Pages
) の中から、ページ変数の .Draft が true である (".Draft" true
) ものを列挙する」という命令です。
テンプレートファイルの中で、今レンダリングしている記事がドラフトである(フロントマターに draft: true
と記述されている) (draft: true
) かどうかを調べるには、Page 変数の .Draft
を参照します。
<h1>{{ .Title }}</h1>
{{ if .Draft }}
<b>これはドラフト記事です。</b>
{{ end }}