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.
换句话说,这样的事情发生了:
- Jekyll使用
post
布局并将post
的内容放入{{ content }}
- Jekyll使用
default
布局并将步骤1中完整生成的HTML放入{{ content }}
(不知道Jekyll是否真的按照这个顺序做了一些事情,但你明白了)
如果您创建一个新的Jekyll项目,您可以看到另一个示例,如Jekyll站点主页上的“快速入门说明”中所示。
Jekyll (我的机器上的2.1.1版)创建的示例站点有三个布局文件,其中两个( page
和post
)从默认文件inheritance。
我有一个自己的答案。 每个降价文件都在前面的内容中分配了一个布局。 但这种“布局”根本不是布局,还是部分布局?
这个术语让我感到厌烦,所以我只列出步骤。
1)markdown文件有layout: post
2)处理markdown文件中的任何内容,然后将其发送到驻留在post.html
的逻辑。 这是我没有得到的部分: post.html
有它自己的布局 。 这就是前面的问题。 基本上我们有布局的布局。
3)外部“布局”(在香草jekyll安装中的default.html
)围绕内部“布局”( post.html
)进行包装,它围绕实际的{{content}}进行包装。
post.html
可以命名为post.html
,只要正确设置各种layout
行。
我仍然不知道为什么{{content}}在布局堆栈顶部结束只是为了一直向下传递。 在处理液体时,我甚至不确定“通过”是否是正确的词。 我喜欢杰基尔,但它有点像蛇。