NKSSG
NakaKen Static Site Generator

タイトルなどを設定しよう

💁

ここでは、記事のタイトルなどのメタ情報を設定するための、フロントマターについて説明します。設定できる項目と、どこに反映されるかを挙げていきます。

フロントマターとは

記事のファイルで、1行目を「---」からはじめた場合、次の「---」までは記事のメタ情報として扱われます。この部分を、フロントマターと呼びます。

このフロントマターは NKSSG 特有のものではなく、静的サイトジェネレータでは一般的によく使われるものです。Markdown 記法でテキストを書く場合によく使われます。NKSSG では、Markdown ファイルに加え、HTML ファイルやテキストファイルでも、フロントマターが設定できます。

メモ

フロントマターは、WordPress の Gutenberg でいう「設定」に対応します。

フロントマターがなくてもエラーは出ませんが、少なくとも、titleの設定は行っておいた方がいいでしょう。ブログとして使うなら、dateの設定もしておいた方がいいです。

フロントマターでの値の設定には、YAML 記法を使います。フロントマターでは、それほど難しい書き方は使いませんが、YAML 機能については次の記事が参考になるでしょう。

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の部分には、URLhttpからはじまるもの)、基準フォルダからの絶対パス(/static/など)、記事ファイルからの相対パス(./sample.pngなど)のどれかで指定します。

ローカルにファイルがある場合は、build したタイミングで、/public/thumb/year/month の下にコピーされます。ここに出てくる yearmonth は、記事の公開日時が反映されます。

指定していない場合は空のままです。

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は、ドラフトかどうかの設定です。TrueFalseかを設定します。ドラフトであれば、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"

同じ名前の設定項目を使うと、エラーになります。