前置事項預設值
使用 前置事項 是您可以在網站的頁面和文章中指定設定的一種方式。設定例如預設版面、自訂標題或為文章指定更精確的日期/時間,都可以在您的頁面或文章前置事項中新增。
通常,您會發現自己重複許多設定選項。在每個檔案中設定相同的版面、為文章新增相同的類別(或類別)等等。您甚至可以新增自訂變數,例如作者名稱,這可能是您部落格上大多數文章都相同的。
Jekyll 提供了一種在網站設定中設定這些預設值的方式,而不是每次建立新文章或頁面時都重複此設定。為此,您可以使用專案根目錄中的 _config.yml
檔案中的 defaults
鍵來指定全站預設值。
defaults
鍵包含一個範圍/值配對陣列,定義應為特定檔案路徑設定哪些預設值,以及該路徑中的檔案類型(如果有的話)。
假設您想要將預設版面新增到網站中的所有頁面和文章。您會將它新增到 _config.yml
檔案中
defaults:
-
scope:
path: "" # an empty string here means all files in the project
values:
layout: "default"
停止並重新執行 `jekyll serve` 指令。
_config.yml
主設定檔包含在執行時一次讀取的全球設定和變數定義。在自動重新產生期間對 _config.yml
所做的變更,直到下次執行才會載入。
請注意,資料檔案 會在自動重新產生期間包含並重新載入。
在此,我們將 values
範圍設定為存在於路徑 scope
中的任何檔案。由於路徑設定為空字串,因此它會套用至專案中的所有檔案。您可能不想要設定專案中每個檔案的版面,例如 css 檔案,因此您也可以在 scope
鍵下指定 type
值。
defaults:
-
scope:
path: "" # an empty string here means all files in the project
type: "posts" # previously `post` in Jekyll 2.2.
values:
layout: "default"
現在,這只會設定類型為 posts
的檔案版面。可供您使用的不同類型為 pages
、posts
、drafts
或網站中的任何彙整。雖然 type
是選用的,但您必須在建立 scope/values
配對時,為 path
指定值。
如同先前所述,您可以為 defaults
設定多個 scope/values 配對。
defaults:
-
scope:
path: ""
type: "pages"
values:
layout: "my-site"
-
scope:
path: "projects"
type: "pages" # previously `page` in Jekyll 2.2.
values:
layout: "project" # overrides previous default layout
author: "Mr. Hyde"
使用這些預設值,所有頁面都會使用 my-site
版面。如果存在於 projects/
資料夾中的任何 html 檔案,如果存在,將會使用 project
版面。這些檔案也會將 page.author
liquid 變數 設定為 Mr. Hyde
。
collections:
my_collection:
output: true
defaults:
-
scope:
path: ""
type: "my_collection" # a collection in your site, in plural form
values:
layout: "default"
在此範例中,layout
設定為 default
,位於名稱為 my_collection
的 集合 內。
Front Matter 預設值中的 Glob 模式
在比對預設值時,也可以使用 Glob 模式(目前僅限於包含 *
的模式)。例如,可以為 section
資料夾的任何子資料夾中的每個 special-page.html
設定特定版面。3.7.0
collections:
my_collection:
output: true
defaults:
-
scope:
path: "section/*/special-page.html"
values:
layout: "specific-layout"
Glob 和效能
請注意,Glob 路徑已知會對效能產生負面影響,目前尚未最佳化,特別是在 Windows 上。Glob 路徑會根據關聯集合目錄的大小成比例地增加建置時間。
優先順序
Jekyll 會套用您在 _config.yml
檔案的 defaults
區段中指定的全部組態設定。您可以透過為範圍指定更明確的路徑來選擇覆寫其他範圍/值配對的設定。
您可以在上面倒數第二個範例中看到。首先,我們將預設頁面版面設定為 my-site
。然後,使用更明確的路徑,我們將 projects/
路徑中頁面的預設版面設定為 project
。這可以使用您會在頁面或文章前置資料中設定的任何值來完成。
最後,如果您透過在 _config.yml
檔案中新增 defaults
區段來設定網站設定中的預設值,您可以在文章或頁面檔案中覆寫這些設定。您只需要在文章或頁面開頭設定中指定設定即可。例如
# In _config.yml
...
defaults:
-
scope:
path: "projects"
type: "pages"
values:
layout: "project"
author: "Mr. Hyde"
category: "project"
...
# In projects/foo_project.md
---
author: "John Smith"
layout: "foobar"
---
The post text goes here...
當網站建置時,projects/foo_project.md
的 layout
會設定為 foobar
,而非 project
,而 author
會設定為 John Smith
,而非 Mr. Hyde
。