永久链接

永久链接是页面、帖子或集合的输出路径。它们允许你将源代码的目录结构与输出中的目录结构分开。

前端信息

设置永久链接的最简单方法是使用前端信息。你将前端信息中的 permalink 变量设置为所需的输出路径。

例如,你的网站上可能有一个页面位于 /my_pages/about-me.html,并且你希望输出 URL 为 /about/。在页面的前端信息中,你将设置

---
permalink: /about/
---

全局

为网站上的每个页面在前端信息中设置永久链接并不好玩。幸运的是,Jekyll 允许你在 _config.yml 中全局设置永久链接结构。

要设置全局永久链接,你可以在 _config.yml 中使用 permalink 变量。你可以使用占位符来实现所需的输出。例如

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

请注意,页面和集合(不包括 postsdrafts)没有时间和类别(对于页面,上述 :title 等同于 :basename),永久链接样式的这些方面在输出中被忽略。

例如,posts 集合的永久链接样式 /:categories/:year/:month/:day/:title:output_ext 对于页面和集合(不包括 postsdrafts)变为 /:title.html

占位符

以下是可用占位符的完整列表

变量 说明

year

文章文件名中的年份,四位数字。可以通过文档的date front matter进行覆盖。

short_year

文章文件名中的年份,不含世纪。(00..99)可以通过文档的date front matter进行覆盖。

month

文章文件名中的月份。(01..12)可以通过文档的date front matter进行覆盖。

i_month

文章文件名中的月份,不含前导零。可以通过文档的date front matter进行覆盖。

short_month

三位月份缩写,例如“Jan”。

long_month

4.0

完整月份名称,例如“January”。

day

文章文件名中的月份中的天数。(01..31)可以通过文档的date front matter进行覆盖。

i_day

文章文件名中的月份中的天数,不含前导零。可以通过文档的date front matter进行覆盖。

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”。

long_day

4.0

星期几名称,例如“Sunday”。

hour

一天中的小时数,24 小时制,从文章的date front matter中填充前导零。(00..23)

minute

文章的date front matter中的小时中的分钟数。(00..59)

second

文章的date front matter中的分钟中的秒数。(00..59)

title

文章文件名中的标题。可以通过文档的slug front matter进行覆盖。保留源代码中的大小写。

slug

文章文件名中的 slug 化标题(任何非数字和字母的字符都替换为连字符)。可以通过文档的slug front matter进行覆盖。

categories

此帖子的指定类别。如果一个帖子有多个类别,Jekyll 将创建一个层次结构(例如 /category1/category2)。此外,Jekyll 还自动解析 URL 中的双斜杠,因此如果不存在类别,它将忽略此项。

slugified_categories

4.1

此帖子的指定类别,但已slugify。如果一个类别由多个单词组成,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,即从文件名生成的 slug。保留源中的大小写。

:output_ext

输出文件的扩展名。(默认包含,通常不需要。)

页面

对于页面,你必须使用前端事项来覆盖全局永久链接,如果你在 _config.yml 中的默认值中设置了永久链接,它将被忽略。

页面有以下占位符可用

变量 说明

:path

相对于站点源目录的页面路径,不包括页面的基本文件名。

:basename

页面的基本文件名

:output_ext

输出文件的扩展名。(默认包含,通常不需要。)