标签过滤器
所有标准 Liquid 标签 均受支持。Jekyll 有一些内置标签,可帮助你构建网站。你还可以使用 插件 创建自己的标签。
包含
如果你有在整个网站中重复使用的页面片段,包含 是使其更易于维护的完美方式。
代码片段高亮
借助 Rouge,Jekyll 内置了对 100 多种语言的语法高亮的原生支持。Rouge 是 Jekyll 3 及更高版本中的默认高亮器。
Pygments 的使用已弃用,并且在 Jekyll 4 中不受支持;配置设置 highlighter: pygments
现在会自动回退到使用 Rouge,它用 Ruby 编写,并且与 Pygments 的样式表 100% 兼容。
要使用语法高亮渲染代码块,请按如下方式包围你的代码
{% highlight ruby %}
def foo
puts 'foo'
end
{% endhighlight %}
highlight
标签(上例中的 ruby
)的参数是语言标识符。要查找要高亮的语言的适当标识符,请在 Rouge wiki 上查找“短名称”。
Jekyll 处理代码块中的所有 Liquid 过滤器
如果你使用的是包含花括号的语言,你可能需要在你的代码周围放置 {% raw %}
和 {% endraw %}
标签。自 Jekyll 4.0 以来,你可以在 front matter 中添加 render_with_liquid: false
以完全禁用特定文档的 Liquid。
行号
highlight
有第二个参数,称为 linenos
,它是可选的。包含 linenos
参数将强制高亮的代码包含行号。例如,以下代码块将在每一行旁边包含行号
{% highlight ruby linenos %}
def foo
puts 'foo'
end
{% endhighlight %}
标记特定行4.4.0
您可以使用可选参数 mark_lines
标记代码片段中的特定行。此参数采用用双引号引起来的一系列以空格分隔的行号。例如,以下代码块将标记第 1 行和第 2 行,但不标记第 3 行
{% highlight ruby mark_lines="1 2" %}
def foo
puts 'foo'
end
{% endhighlight %}
标记的行将应用默认类名 hll
。
用于语法高亮的样式表
为了显示高亮,您需要包含一个高亮样式表。对于 Pygments 或 Rouge,您可以使用 Pygments 的样式表,您可以在 此处 或 其存储库 中找到示例库。
将 CSS 文件(例如 native.css
)复制到您的 css 目录中,并将语法高亮样式导入到您的 main.css
中
@import "native.css";
链接
自 Jekyll 4.0 以来,您不必使用 site.baseurl
为 link
和 post_url
标记添加前缀。
链接到页面
要链接到帖子、页面、集合项或文件,link
标记将为您指定的路径生成正确的永久链接 URL。例如,如果您使用 link
标记链接到 mypage.html
,即使您更改永久链接样式以包含文件扩展名或省略它,link
标记形成的 URL 始终有效。
使用 link
标记时,您必须包含文件的原始扩展名。这里有一些示例
{% link _collection/name-of-document.md %}
{% link _posts/2016-07-26-name-of-post.md %}
{% link news/index.html %}
{% link /assets/files/doc.pdf %}
您还可以使用 link
标记在 Markdown 中创建链接,如下所示
[Link to a document]({% link _collection/name-of-document.md %})
[Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
[Link to a page]({% link news/index.html %})
[Link to a file]({% link /assets/files/doc.pdf %})
帖子、页面或集合的路径定义为从根目录(您的配置文件所在的位置)到该文件的相对路径,而不是从您当前的页面到另一个页面的路径。
例如,假设您在 page_a.md
(存储在 pages/folder1/folder2
)中创建链接到 page_b.md
(存储在 pages/folder1
)。您在链接中的路径不会是 ../page_b.html
。相反,它将是 /pages/folder1/page_b.md
。
如果您不确定路径,请将 {{ page.path }}
添加到页面,它将显示路径。
使用 link
或 post_url
标记的一个主要好处是链接验证。如果链接不存在,Jekyll 不会构建你的网站。这是一个好事情,因为它会提醒你一个损坏的链接,以便你可以修复它(而不是允许你构建和部署一个带有损坏链接的网站)。
请注意,你不能向 link
标记添加过滤器。例如,你不能使用 Liquid 过滤器附加一个字符串,例如 {% link mypage.html | append: "#section1" %}
。要链接到页面上的部分,你需要使用常规 HTML 或 Markdown 链接技术。
要链接的文件的名称可以指定为变量,而不是实际的文件名。例如,假设你在页面的前端内容中定义了一个变量,如下所示
---
title: My page
my_variable: footer_company_a.html
---
然后你可以在链接中引用该变量
{% link {{ page.my_variable }} %}
在此示例中,link
标记将呈现到文件 footer_company_a.html
的链接。
链接到帖子
如果你想在你的网站上包含到帖子的链接,post_url
标记将为你指定的帖子生成正确的永久链接 URL。
{% post_url 2010-07-21-name-of-post %}
如果你在子目录中组织你的帖子,你需要包含到帖子的子目录路径
{% post_url /subdir/2010-07-21-name-of-post %}
使用 post_url
标记时不需要包含文件扩展名。
你还可以使用此标记在 Markdown 中创建到帖子的链接,如下所示
[Name of Link]({% post_url 2010-07-21-name-of-post %})