Layouts 是环绕内容的模板。它们允许您将模板的源代码放在一个地方,这样您就不必在每一页上重复导航和页脚之类的内容。
Layouts 位于 _layouts
目录中。我们的惯例是,有一个名为 default.html
的基本模板,并根据需要从中 继承 其他布局。
Layouts Directory
Jekyll在站点 source
的根目录或主题的根目录中查找 _layouts
目录。
虽然您可以通过在配置文件中设置 layouts_dir
"键"来配置布局所在的目录名,但目录本身应该位于站点 source
目录的根目录。
Usage
第一步是将模板源代码放在 default.html
中。content
是一个特殊变量,其值是要包裹的文章或页面的渲染内容。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{{ page.title }}</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<nav>
<a href="/">Home</a>
<a href="/blog/">Blog</a>
</nav>
<h1>{{ page.title }}</h1>
<section>
{{ content }}
</section>
<footer>
© to me
</footer>
</body>
</html>
你可以完全访问原始的 front matter 。在上面的例子中,page.title
来自页面的 front matter 。
接下来,您需要指定您在页面 front matter 中使用的 layout 。您也可以使用 front matter defaults 来避免在每一页上都设置这个选项。
---
title: My First Page
layout: default
---
This is the content of my page
此页面的渲染输出为:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My First Page</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<nav>
<a href="/">Home</a>
<a href="/blog/">Blog</a>
</nav>
<h1>My First Page</h1>
<section>
This is the content of my page
</section>
<footer>
© to me
</footer>
</body>
</html>
Inheritance
当您想要为站点上部分文档的现有布局添加内容时,布局继承非常有用。一个常见的例子是博客文章,你可能希望一篇文章显示日期和作者,但在其他方面与你的基本布局相同。
为了实现这一点,你需要创建另一个布局,在 front matter 中指定你的原始布局。例如,此布局将位于 _layouts/post.html
:
---
layout: default
---
<p>{{ page.date }} - Written by {{ page.author }}</p>
{{ content }}
现在文章可以使用这种布局,而其他页面则使用默认布局。
Variables
你可以在布局中设置 front matter ,唯一的区别是当你在 Liquid 中使用时,你需要使用 layout
变量而不是 page
。例如:
---
city: San Francisco
---
<p>{{ layout.city }}</p>
{{ content }}