タイトルなどを設定しよう
💁
ここでは、記事のタイトルなどのメタ情報を設定するための、フロントマターについて説明します。設定できる項目と、どこに反映されるかを挙げていきます。
フロントマターとは
記事のファイルで、1行目を「---」からはじめた場合、次の「---」までは記事のメタ情報として扱われます。この部分を、フロントマターと呼びます。
このフロントマターは NKSSG 特有のものではなく、静的サイトジェネレータでは一般的によく使われるものです。Markdown 記法でテキストを書く場合によく使われます。NKSSG では、Markdown ファイルに加え、HTML ファイルやテキストファイルでも、フロントマターが設定できます。
メモ
フロントマターは、WordPress の Gutenberg でいう「設定」に対応します。
フロントマターがなくてもエラーは出ませんが、少なくとも、title
の設定は行っておいた方がいいでしょう。ブログとして使うなら、date
の設定もしておいた方がいいです。
フロントマターでの値の設定には、YAML 記法を使います。フロントマターでは、それほど難しい書き方は使いませんが、YAML 機能については次の記事が参考になるでしょう。
フロントマターで設定できる項目
デフォルトでは、フロントマターで以下の設定をすることができます。
title:タイトル
title
は、記事のタイトルです。タイトルタグや記事の見出しに使われます。
指定していない場合、ファイル名が使われます。
slug:スラッグ
slug
は、記事を示す名前です。パーマリンクで使うことを想定しています。slug
を URL に含める場合は、日本語ではなく英語にしたほうがいいです。
指定していない場合、title
のはじめ80文字が使われます。
メモ
slug
をパーマリンクで使うと、public フォルダ内にslug
の値を名前にしたフォルダが作成されます。このとき、長すぎる名前のフォルダを作ろうとするとエラーになるため、文字を切り取っています。
url
url
は、記事の URL です。基本的に、URL は投稿タイプへのパーマリンクの設定内容で決まりますが、そのルールよりも優先して URL を設定したい場合に使います。
site_url
の後に続けたいパスを指定します。
指定していない場合、投稿タイプのパーマリンクの設定から計算される URL が設定されます。
summary:要約
summary
は、記事の要約です。head
タグ内のdescription
などで使われます。
指定していない場合、記事本文のはじめ110文字が使われます。
image:サムネイル
image
は、サムネイルです。本文の前に表示されたり、アーカイブで記事のタイトルと一緒に表示されたりします(テーマによります)。
image
は、次のように設定します。
image:
src: "path/to/img"
src
の部分には、URL
(http
からはじまるもの)、基準フォルダからの絶対パス(/static/
など)、記事ファイルからの相対パス(./sample.png
など)のどれかで指定します。
ローカルにファイルがある場合は、build
したタイミングで、/public/thumb/year/month
の下にコピーされます。ここに出てくる year
と month
は、記事の公開日時が反映されます。
指定していない場合は空のままです。
defalut テーマにおけるサムネイルの扱い
default テーマでは、image
で画像を指定すると、本文の前やアーカイブで表示されます。画像の指定がない場合は、適当な絵文字が表示されます(記事の公開日時をキーに使っています)。
date:公開日時
date
は、記事の公開日時です。未来の日時を指定しても、指定した時刻に自動的にページが公開されるわけではありません。nkssg build
を実行したタイミングが公開日時を過ぎていれば、記事は公開されます。未来の記事でも強制的に公開したい場合は、後で紹介するように、draft: False
と設定します。
指定方法は、年月日 yyyy-mm-dd
か、時間まで含めた形式 yyyy-mm-dd hh:mm:dd
のどちらかを使います。時間を入れなかった場合は、00:00:00
を設定したことになります(つまり、その日の 0 時ちょうど)。
ここで指定した日付は、テーマ内で公開日時を表示するのに使われたり、年アーカイブや月アーカイブを作るときに使われます。
date
を設定していない場合、ファイルの作成日時が使われます。(OS によっては、取得できないケースがあります)
modified:更新日時
modified
は、更新日時です。テーマで使うことがあるかもしれません。
値を設定していない場合は、ファイルの最終更新日時を取得します。
status:公開状況
status
は、記事の公開状況の設定です。draft
, future
, pending
, private
, trash
, auto-draft
のどれかが設定されていれば、ドラフト扱いされます。初期値は、public
(公開)です。
なぜこんなにたくさん値があるの?
本来、draft か public の2つの値があれば、十分なはずです。では残りは何かというと、他の値は WordPress で使われている値です。WordPress から移行したときに、非公開記事が不用意に公開されてしまわないようにしています。
draft:ドラフト
draft
は、ドラフトかどうかの設定です。True
かFalse
かを設定します。ドラフトであれば、build
してもそのファイルは存在しないものとして扱われます。記事ファイルは作られず、アーカイブにも反映されません。
初期値はNone
です。
記事の「公開」「非公開」の判定条件はいくつかあります。draft: False
とすれば、他のどの条件よりも優先して「公開」となりますが、他の条件については、後述する注意点を参考にしてください。
expire:失効日
expire
は、記事を非公開にする日時です。build
したタイミングがexpire
より後なら、ドラフト扱いになります。値を設定していない場合は、何も起こりません。
指定方法は、年月日 yyyy-mm-dd
か、時間まで含めた形式 yyyy-mm-dd hh:mm:dd
のどちらかを使います。時間を入れなかった場合は、00:00:00
を設定したことになります(つまり、その日の 0 時ちょうど)。
expire
で指定したタイミングを過ぎて、nkssg build --clean
を実行し、サーバーに反映させるまでは、対象の記事は公開状態であることに注意しましょう。動的な作りではないので、指定した時刻以降に自動的にページが非表示になるわけではありません。
カテゴリーなど
記事に、カテゴリーやタグの設定ができます。このような分類項目を NKSSG ではタクソノミーと呼びます。
次のようにして、1つの記事に複数の項目を設定できます。
category: ["category1"]
tag: ["tag1", "tag2", "tag3"]
カテゴリーやタグのname
を設定します。slug
ではないので注意しましょう。
記事への設定はこれで完了ですが、別途、nkssg.yml
に対して、カテゴリー全体、タグ全体の設定も必要です。次の記事を参考にしてください。
nkssg.yml
へカテゴリーやタグの設定を行っていない場合、記事へカテゴリーやタグを設定しても反映されません。
order:順番
ブログとして使う場合、記事は日付の新しい方から古い方へ並びます。サイトを作る場合は、ファイルの名前の順になります。
この記事の順番を変えたい場合に、order
を使うことができます。order
には数値を設定します。デフォルトは 0
です。
ブログとして使う場合、マイナスの値にすると、先頭固定表示のような使い方ができます。サイトを作る場合は、記事の順番を指定することができます。ただし、次の記事で解説している機能の方が便利です。
file_id
他の記事からリンクを貼るときに使います。値は、サイト内で重複してはいけません。
file_id
を使って内部リンクを貼る方法は、次の記事を参考にしてください。
設定していない場合は何も起こりません。
カスタムフィールド
ここまでで紹介したものは、NKSSG で処理される設定項目ですが、項目をさらに追加することもできます。ここで追加した値は、本文やテーマ内で使うことができます。
少し上級の内容なので、次の記事にまとめています。
注意点
ドラフトについて
基本的に、docs
内にある HTML ファイル、Markdown ファイル、テキストファイルは、記事ファイルとして扱われ、すべて公開対象となります。初期値は「公開」です。
また、draft: False
とすると、以下の条件すべてに優先して、公開となります。
draft: False
にしていない場合は、フロントマターで設定した値について、以下の条件を1つでも満たすと、ドラフト扱いとなります。つまり、非公開の記事として扱われます。
- draft を
True
にした - status を「ドラフト扱い」になる値に設定した
- date で設定した日時より前に
nkssg build
を行った - expire で設定した日時より後に
nkssg build
を行った
また、フロントマターでこれらの値を設定していなくても、記事のパスが次の条件を満たせばドラフト扱いになります。
docs
の直下のフォルダ名が「ドラフト扱い」になる値
例えば、/docs/draft/
の下にあるファイルは、draft: False
にしていない限り、すべてドラフト扱いとなります。
同じ名前の設定項目は使えない
例えば、タグを複数設定する場合は、次のように書きます。
tag: ["tag1", "tag2"]
これを、次のように書くことはできません。
tag: "tag1"
tag: "tag2"
同じ名前の設定項目を使うと、エラーになります。