パーマリンク

パーマリンクは、ページ、投稿、またはコレクションの出力パスです。ソースコードのディレクトリと出力のディレクトリを異なる構造にすることができます。

フロントマター

パーマリンクを設定する最も簡単な方法は、フロントマターを使用することです。フロントマターでpermalink変数に必要な出力パスを設定します。

たとえば、サイト上に/my_pages/about-me.htmlにあるページがあり、出力URLを/about/にしたいとします。ページのフロントマターでは、以下のように設定します。

---
permalink: /about/
---

グローバル設定

サイトのすべてのページのフロントマターでパーマリンクを設定するのは面倒です。幸いなことに、Jekyllでは_config.ymlでグローバルにパーマリンク構造を設定できます。

グローバルパーマリンクを設定するには、_config.ymlpermalink変数を使用します。必要な出力にプレースホルダーを使用できます。例えば

permalink: /:categories/:year/:month/:day/:title:output_ext

ページとコレクション(postsdraftsを除く)には時間とカテゴリがないことに注意してください(ページの場合、上記の:title:basenameと同等です)。パーマリンクスタイルのこれらの側面は、出力では無視されます。

たとえば、postsコレクションのパーマリンクスタイル/:categories/:year/:month/:day/:title:output_extは、ページとコレクション(postsdraftsを除く)では/:title.htmlになります。

プレースホルダー

使用可能なプレースホルダーの完全なリストを以下に示します。

変数 説明

year

投稿のファイル名から取得した4桁の年。ドキュメントのdateフロントマターで上書きできます。

short_year

投稿のファイル名から取得した世紀のない年。(00..99) ドキュメントのdateフロントマターで上書きできます。

month

投稿のファイル名から取得した月。(01..12) ドキュメントのdateフロントマターで上書きできます。

i_month

投稿のファイル名から取得した、先頭のゼロがない月。ドキュメントのdateフロントマターで上書きできます。

short_month

3文字の月の略語、例:「1月」。

long_month

4.0

完全な月の名前、例:「1月」。

day

投稿のファイル名から取得した月の日。(01..31) ドキュメントのdateフロントマターで上書きできます。

i_day

投稿のファイル名から取得した、先頭のゼロがない月の日。ドキュメントの`date`フロントマターで上書きできます。

y_day

投稿のファイル名から取得した、先頭のゼロが付いた年の通算日。(001..366)

w_year

4.0

1月と12月の最大3日間、月の年と異なる場合がある週の年

week

4.0

現在の年の週番号。1月は、その週の大部分の日が含まれる最初の週から始まります。(01..53)

w_day

4.0

月曜日から始まる曜日。(1..7)

short_day

4.0

曜日の3文字の略語、例:「日」。

long_day

4.0

曜日の名前、例:「日曜日」。

hour

投稿のdateフロントマターから取得した、24時間制のゼロパディングされた時刻。(00..23)

minute

投稿のdateフロントマターから取得した分の値。(00..59)

second

投稿のdateフロントマターから取得した秒の値。(00..59)

title

ドキュメントのファイル名から取得したタイトル。ドキュメントのslugフロントマターで上書きできます。ソースの大文字小文字を保持します。

slug

ドキュメントのファイル名からスラッグ化されたタイトル(数字と文字以外の文字はすべてハイフンに置き換えられます)。ドキュメントのslugフロントマターで上書きできます。

categories

この投稿に指定されたカテゴリ。投稿に複数のカテゴリがある場合、Jekyllは階層を作成します(例:/category1/category2)。また、JekyllはURLの二重スラッシュを自動的に解析するため、カテゴリが存在しない場合はこれを無視します。

slugified_categories

4.1

この投稿に指定されたカテゴリですが、*スラッグ化*されています。カテゴリが複数の単語で構成されている場合、Jekyllはすべてのアルファベットを小文字に変換し、英数字以外の文字をハイフンに置き換えます。(例:"Work 2 Progress""work-2-progress"に変換されます)

投稿に複数のカテゴリがある場合、Jekyllは階層を作成します(例:/work-2-progress/category2)。また、JekyllはURLの二重スラッシュを自動的に解析するため、カテゴリが存在しない場合はこれを無視します。

:output_ext

出力ファイルの拡張子。(デフォルトで含まれており、通常は不要です。)

組み込みフォーマット

投稿の場合、Jekyllは便宜上、次の組み込みスタイルも提供します。

パーマリンクスタイル URLテンプレート

date

/:categories/:year/:month/:day/:title:output_ext

pretty

/:categories/:year/:month/:day/:title/

ordinal

/:categories/:year/:y_day/:title:output_ext

weekdate

4.0

/:categories/:year/W:week/:short_day/:title:output_ext
W:weekの値の前に付加されます)

none

/:categories/:title:output_ext

permalink: /:categories/:year/:month/:day/:title/と入力する代わりに、permalink: prettyと入力するだけで済みます。

フロントマターによるパーマリンクの指定

組み込みのパーマリンクスタイルは、フロントマターでは認識されません。そのため、permalink: prettyは機能しません。

コレクション

コレクション(postsdraftsを含む)の場合、_config.ymlのコレクション設定でグローバルパーマリンクを上書きするオプションがあります。

collections:
  my_collection:
    output: true
    permalink: /:collection/:name

コレクションでは、次のプレースホルダーを使用できます。

変数 説明

:collection

含まれているコレクションのラベル。

:path

コレクションのディレクトリを基準としたドキュメントへのパス。ドキュメントの基本ファイル名を含みます。

:name

ドキュメントの基本ファイル名。スペースと英数字以外の文字のすべてのシーケンスはハイフンに置き換えられます。

:title

:titleテンプレート変数は、ドキュメントにslug フロントマター変数の値が存在する場合はその値を使用します。定義されていない場合は、:title:name、つまりファイル名から生成されたスラッグと同等になります。ソースの大文字小文字を保持します。

:output_ext

出力ファイルの拡張子。(デフォルトで含まれており、通常は不要です。)

ページ

ページの場合、グローバルパーマリンクを上書きするにはフロントマターを使用する必要があり、_config.ymlのフロントマターのデフォルトでパーマリンクを設定した場合、それは無視されます。

ページでは、次のプレースホルダーを使用できます。

変数 説明

:path

サイトのソースディレクトリを基準としたページへのパス。ページの基本ファイル名は除きます。

:basename

ページの基本ファイル名。

:output_ext

出力ファイルの拡張子。(デフォルトで含まれており、通常は不要です。)