NKSSG
NakaKen Static Site Generator

簡単に記事を並べる方法

😊

階層型サイトでは、記事を特定の順番で並べたいケースが多いでしょう。NKSSG は、記事を簡単に並べる easy sort という機能を用意しています。

ここでは、easy sort の使い方、使うとどんな効果があるかを見ていきます。

easy sort とは

NKSSG では、記事の順番を指定する方法をいくつか用意していますが、ここで紹介する easy sort 機能を使うのが一番楽です。

ファイル名が、次のようにアンダーバーから始まっている場合を考えます。

_xx_yyyy.md

このとき、NKSSG は、次のように URL を作成します。

/yyyy/

1つ目のアンダーバーから2つ目のアンダーバーまでが削除されます。これにより、記事の順番が管理しやすくなります。アンダーバーから始まらないものに対しては何も起こりません。

この機能は、デフォルトで有効になっています。

easy sort が役立つ例

例えば、次のようなファイル名でサイトを作るとしましょう。

  • い.md
  • ろ.md
  • は.md
  • に.md

この順番に並ぶことが理想ですが、デフォルトではファイルは名前の順番に並んでしまいます。そのため、何も設定しなければ、NKSSG は次のような順番で認識します。

  • /い/
  • /に/
  • /は/
  • /ろ/

順番を指定する方法として、フロントマターでorderを使うという方法があります。

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

しかし、各ファイルを開いて1つ1つ設定していくのは面倒です。それに、ファイルを1つ1つ開けないと、どういう順番を指定したか、確認できません。また、docsフォルダ内での順番とは連動しないので、管理しづらいです。

かといって、ファイル名でソートされるように、ファイルに番号をつけるのはイマイチです。

  • 1-い.md
  • 2-ろ.md
  • 3-は.md
  • 4-に.md

このようにすれば、望み通りの順番で並べることはできますが、番号が URL にまで引き継がれてしまいます

  • /1-い/
  • /2-ろ/
  • /3-は/
  • /4-に/

見た目が悪いだけでなく、例えば、間に記事を挿入したい場合に番号を変えたりすると、URL まで変わってしまうデメリットもあります。

そこで easy sort 機能の登場です。

NKSSG では、ファイル名がアンダーバーから始まっている場合、URL の計算時には、自動的に1つ目のアンダーバーから2つ目のアンダーバーまでが削除されるようになっています。

例えば、ファイル名が次のようになっている場合を考えます。

  • _1_い.md
  • _2_ろ.md
  • _3_は.md
  • _4_に.md

こうすると、NKSSG は、追加で何も設定していなくても、次のような順番で認識されます。

  • い.html
  • ろ.html
  • は.html
  • に.html

各記事の順番は、もとの記事のファイル名の順番が反映されます。順番を決めてから URL の変換処理を行うため、うまくソートできる仕組みになっています。アンダーバーから始まっていないファイルは何も変更されないので、この機能を使わないなら、特に何も意識する必要はありません。

easy sort はフォルダ名にも使える

easy sort は、ファイル名に対してだけでなく、フォルダ名に対しても使えます。フォルダ名も、アンダーバーで始まるものは、1つ目から2つ目までのアンダーバーが削除されて URL が作成されます。

例えば、次のようなフォルダ構造になっているサイトがあったとしましょう。

docs
└── guide
    ├── _010_getting-stated
    │   ├── _010_nkssg-overview.md
    │   ├── _020_quick-start.md
    │   ├── _030_basic-usage.md
    │   └── index.md
    └── _020_blog
        └── index.md

このとき、サイト内では、次のような順番で認識されています。なお、index から始まるファイルだけは、特別に一番先に認識されます。

  • /guide/getting-stated/
  • /guide/getting-stated/nkssg-overview
  • /guide/getting-stated/quick-start
  • /guide/getting-stated/basic-usage
  • /guide/blog/

URL のアルファベット順ではなく、記事ファイルのパスの名前順で認識され、しかも、ソート用の番号の部分は URL には残りません。

これで、セクションアーカイブも、各記事も、自分の好きなように並べることができ、しかも、docsフォルダ下のファイルの並び順とも連動させることができます。階層型サイトの管理がしやすくなります。

追加のトピック

設定に関する注意事項などを挙げていきます。

アンダーバーは半角で

アンダーバーには半角を使ってください。全角だと変換されません。

投稿タイプには使わないで

投稿タイプは、アンダーバーから始めないようにしましょう。投稿タイプの順番は、設定ファイルで行いましょう。TODO

数字以外でもいい

_xx_yyyy.mdxxの部分には、数字だけでなく、文字を入れても構いません。ソートするときに使い、ソートした後はまるまる削除されます。

アンダーバーを使いたい場合

レアケースだと思いますが、URL の1文字目をアンダーバーにしたいことがあるかもしれません。

easy sort を使わないなら、次のようにします:__yyyy.md。アンダーバーを2つ続けて書くと、URL 作成時には、1つ目のアンダーバーが削除されます。

easy sort を使う上に、1文字目もアンダーバーにしたい、という場合は、次のようにします:_xx__yyyy.md。2つ目と3つ目のアンダーバーをつなげます。こうすると、URL 作成時には、/_yyyy/に変換されます。

ファイル名が長くなるのを何とかしたい

頭に番号をつけると、ファイル名が長くなってしまうのがイヤだという人もいるでしょう。同一フォルダ内での順番を指定するだけなので、何桁も使う必要はありませんが、それでも通常よりはファイル名は長くなってしまいます。

そういう場合は、パーマリンクでfilenameではなくslugを使うといいでしょう。slugで設定した値は、そのまま URL に反映されます(slugを指定していない場合は、タイトルが設定され、タイトルがなければファイル名が設定されます)。