永久連結

永久連結是您頁面、文章或集合的輸出路徑。它們讓您可以將原始碼目錄結構設定為與輸出目錄結構不同。

Front Matter

設定永久連結最簡單的方式是使用 Front Matter。您將 Front Matter 中的 permalink 變數設定為您想要的輸出路徑。

例如,您網站上可能有一個位於 /my_pages/about-me.html 的頁面,而您希望輸出網址為 /about/。您會在頁面的 Front Matter 中設定

---
permalink: /about/
---

全域

為您網站上的每個頁面在 Front Matter 中設定永久連結並不好玩。幸運的是,Jekyll 讓您可以在 _config.yml 中全域設定永久連結結構。

若要設定全域永久連結,您會在 _config.yml 中使用 permalink 變數。您可以使用佔位符來設定您想要的輸出。例如

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

請注意,頁面和集合(不包含 文章草稿)沒有時間和類別(對於頁面,上述 :title 等於 :basename),永久連結樣式的這些面向會在輸出中被忽略。

例如,/:categories/:year/:month/:day/:title:output_ext 樣式的永久連結,對於 posts 彙編,會變成 /:title.html,適用於頁面和彙編(不含 postsdrafts)。

佔位符

以下是可用佔位符的完整清單

變數 說明

year

文章檔名中的年份,四位數字。可透過文件的前置事項 date 覆寫。

short_year

文章檔名中的年份,不含世紀。(00..99)可透過文件的前置事項 date 覆寫。

month

文章檔名中的月份。(01..12)可透過文件的前置事項 date 覆寫。

i_month

文章檔名中的月份,不含前導零。可透過文件的前置事項 date 覆寫。

short_month

三字母的月份縮寫,例如「Jan」。

long_month

4.0

完整的月份名稱,例如「January」。

day

文章檔名中的日期。(01..31)可透過文件的前置事項 date 覆寫。

i_day

文章檔名中的日期,不含前導零。可透過文件的前置事項 date 覆寫。

y_day

文章檔名中的年度序號,含前導零。(001..366)

w_year

4.0

星期年,可能與月份年不同,最多相差三天,分別為 1 月初和 12 月底

week

4.0

當前年份的星期數,從 1 月份大部分日期落在第一個星期開始。(01..53)

w_day

4.0

星期,從星期一開始。(1..7)

short_day

4.0

三字母的星期縮寫,例如「Sun」。

長天

4.0

星期名稱,例如「星期日」。

小時

24 小時制的一天中的小時,從貼文的 date 前置事項中以零填充。(00..23)

分鐘

從貼文的 date 前置事項中的一小時中的分鐘。(00..59)

從貼文的 date 前置事項中的一分鐘中的秒。(00..59)

標題

文件檔名中的標題。可透過文件 slug 前置事項覆寫。保留來源中的大小寫。

slug

文件檔名中的 slug 標題(任何非數字和字母的字元都替換為連字號)。可透過文件 slug 前置事項覆寫。

類別

此貼文指定的類別。如果貼文有多個類別,Jekyll 會建立階層(例如 /category1/category2)。此外,Jekyll 會自動解析 URL 中的雙斜線,因此如果沒有類別,它會忽略此類別。

slugified_categories

4.1

此貼文指定的類別,但已 slugified。如果類別由多個單字組成,Jekyll 會將所有字母轉為小寫,並將任何非字母數字字元替換為連字號。(例如 "Work 2 Progress" 會轉換為 "work-2-progress"

如果貼文有多個類別,Jekyll 會建立階層(例如 /work-2-progress/category2)。此外,Jekyll 會自動解析 URL 中的雙斜線,因此如果沒有類別,它會忽略此類別。

:output_ext

輸出檔案的副檔名。(預設包含且通常不必要。)

內建格式

對於貼文,Jekyll 也提供以下內建樣式以供方便

永久連結樣式 URL 範本

日期

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

美觀

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

序數

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

週日期

4.0

/:categories/:year/W:week/:short_day/:title:output_ext
(W 將會加在 :week 的值前面)

/: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,也就是從檔名產生的 slug。保留來源的字元大小寫。

:output_ext

輸出檔案的副檔名。(預設包含且通常不必要。)

頁面

對於頁面,您必須使用前置標題來覆寫全域永久連結,而且如果您在 _config.yml 中透過前置標題預設設定永久連結,它將會被忽略。

頁面有以下可用的佔位符

變數 說明

:path

相對於網站原始目錄的頁面路徑,不包含頁面的基本檔名。

:basename

頁面的基本檔名

:output_ext

輸出檔案的副檔名。(預設包含且通常不必要。)