タイトルなどを設定しよう
💁
ここでは、記事のタイトルなどのメタ情報を設定するための、フロントマターについて説明します。設定できる項目と、どこに反映されるかを挙げていきます。
フロントマターとは
記事のファイルで、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"
同じ名前の設定項目を使うと、エラーになります。