Jekyll如何使用post.html生成页面?

我让Jekyll使用某个特定的主题有些困难,我认为{{ content }}如何处理post时我缺少一些基本的东西。

因此,在一个通用的Jekyll站点中, index.html具有在其前面指定的布局。 生成网站后,布局将index.html包含为{{ content }} 。 它是倒置的,页面指定布局,然后布局调用页面,但很简单。

另一方面,post都是通过post.html文件生成的,该文件位于post.html文件夹中,即使它不是真正的布局。 像index.html一样,它基本上只是一个for循环。 这是我遇到麻烦的地方。

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

为什么post.html要求前面的布局? 实际post,即包含所述post文本的降价,也需要在其前部布局。 是否存在post.html与markdown文件中指定的布局不同的布局?

编辑:另一个问题。 为什么在多个地方调用{{ content }}index.html和布局文件都有{{content}}。 为什么布局不仅仅是{%include%} index.html而且让index.html调用{{content}}

我认为你很大程度上是自己想出来的,但我仍然会用自己的话来解释。

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

可能让您感到困惑的是,您可以构建一组嵌套布局文件,其中一个“inheritance”另一个,并且每个布局都有自己的{{ content }}
是的,我在文档中没有找到任何关于此的内容,我通过查看示例来自己或更好地解决这个问题。

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

/_layouts/default.html

    {{ page.title }}   

{{ page.title }}

{{ content }}

/index.md

 --- title: example page layout: default --- This is the page content. 

生成的HTML将如下所示:

    example page   

example page

This is the page content.

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

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

/_layouts/post.html

 --- layout: default --- 
post date: {{ page.date }} {{ content }}

以及使用此布局的博客文章:

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

 --- title: example post layout: post --- This is the post content. 

并生成的HTML:

    example post   

example post

post date: 2015-04-08 00:00:00 +0200

This is the post content.

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

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

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

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

我有一个自己的答案。 每个降价文件都在前面的内容中分配了一个布局。 但这种“布局”根本不是布局,还是部分布局?

这个术语让我感到厌烦,所以我只列出步骤。

1)markdown文件有layout: post

2)处理markdown文件中的任何内容,然后将其发送到驻留在post.html的逻辑。 这是我没有得到的部分: post.html 有它自己的布局 。 这就是前面的问题。 基本上我们有布局的布局。

3)外部“布局”(在香草jekyll安装中的default.html )围绕内部“布局”( post.html )进行包装,它围绕实际的{{content}}进行包装。

post.html可以命名为post.html ,只要正确设置各种layout行。

我仍然不知道为什么{{content}}在布局堆栈顶部结束只是为了一直向下传递。 在处理液体时,我甚至不确定“通过”是否是正确的词。 我喜欢杰基尔,但它有点像蛇。