gpt4 book ai didi

ruby - Jekyll 是如何使用 post.html 生成页面的?

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:37 27 4
gpt4 key购买 nike

我在让 Jekyll 使用特定主题时遇到了一些困难,而且我认为关于 {{ content }} 如何处理帖子,我缺少一些基本的东西。

因此,在一个通用的 Jekyll 站点中,index.html 在其前端指定了布局。生成站点时,布局包括 index.html 作为 {{ content }}。它有点颠倒,页面指定布局,然后布局调用页面,但足够简单。

另一方面,帖子都是通过文件 post.html 生成的,该文件位于 _layouts 文件夹中,尽管它并不是真正的布局.与 index.html 一样,它本质上只是一个 for 循环。这就是我遇到麻烦的地方。

post.html 是必需的文件吗?我可以将它重命名为 story.html 吗?

为什么 post.html 需要在 front matter 中进行布局?实际的帖子,即包含该帖子文本的 Markdown ,也需要在其前端进行布局。是否存在 post.html 的布局与 markdown 文件中指定的布局不同的情况?

编辑:另一个问题。为什么 {{ content }} 在多个地方被调用? index.html 和布局文件都有 {{ content }}。为什么布局不简单地 {% include %} index.html 并让 index.html 调用 {{ content }}

最佳答案

我想你基本上已经自己弄明白了,但我还是会用我自己的话来解释。

你说得对,{{ content }} 是布局文件中实际页面内容所在的占位符。

您可能感到困惑的是,您可以构建一组嵌套布局文件,其中一个布局文件“继承”另一个布局文件,并且每个布局都有自己的 {{ content }}
是的,我没有在文档中找到任何关于此的信息,我自己弄清楚了,或者更好的是,通过查看示例。

所以这里有一个例子给你。
首先,默认布局和页面:

/_layouts/default.html:

<!DOCTYPE html>
<html>
<head>
<title>{{ page.title }}</title>
</head>
<body>
<h1>{{ page.title }}</h1>

{{ content }}

</body>
</html>

/index.md:

---
title: example page
layout: default
---

This is the page content.

生成的 HTML 将如下所示:

<!DOCTYPE html>
<html>
<head>
<title>example page</title>
</head>
<body>
<h1>example page</h1>

<p>This is the page content.</p>

</body>
</html>

现在让我们创建另一个“继承”第一个布局文件的布局文件。
如果您正在使用 Jekyll 构建博客,您可能会想要使用类似这样的东西。
上面显示的布局文件是所有页面、博客文章和常规页面的默认布局文件。
当您希望所有博客文章都包含其他信息时,例如发布日期和用户、标签等。

为此,您可以使用第一个布局文件创建第二个布局文件:

/_layouts/post.html:

---
layout: default
---

<div class="blogpost">
<i>post date: {{ page.date }}</i>

{{ content }}
</div>

还有一篇使用这种布局的博文:

/_posts\2015-04-08-example-post.md:

---
title: example post
layout: post
---

This is the post content.

以及生成的 HTML:

<!DOCTYPE html>
<html>
<head>
<title>example post</title>
</head>
<body>
<h1>example post</h1>

<div class="blogpost">
<i>post date: 2015-04-08 00:00:00 +0200</i>

<p>This is the post content.</p>
</div>

</body>
</html>

换句话说,发生了这样的事情:

  1. Jekyll 使用post 布局并将post 的内容放入{{ content }}
  2. Jekyll 使用默认 布局并将第 1 步生成的完整 HTML 放入 {{ content }}

(不知道 Jekyll 是否真的在幕后按照这个顺序做事,但你明白了)

如果您创建一个新的 Jekyll 项目,您可以看到另一个示例,如 Jekyll site 主页上的“快速入门说明”所示。 .
Jekyll (我机器上的版本 2.1.1) 创建的示例站点有 三个 布局文件,其中两个(page post) 从默认的继承。

关于ruby - Jekyll 是如何使用 post.html 生成页面的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29440224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com