生成带有变量的独立 Jekyll 页面
Generate standalone Jekyll page with variables
我正在尝试生成一个名为 posts.html
的 附加 Jekyll 页面。
我希望使用 site.posts
等 Jekyll 变量来遍历我为我的站点编写的帖子,并使用这些变量创建一个独立页面 (posts.html
)。
这是我当前的版本:
<!DOCTYPE html>
<html lang="en">
<body>
<main>
{% for post in site.posts %}
{{post.title}};{{post.date}},
{%endfor%}
</main>
</body>
</html>
如果我将它包含在我的站点的根目录中,命令 bundle exec jekyll build
将构建 posts.html
到我的 _site
目录,但不会将变量编译成可读的文本。它以明文形式输出。
我试图通过将 posts.html
文件移动到 _includes
目录并在 blog.html
.[=26 的底部引用它来挂钩现有的构建周期=]
生成 HTML,但作为 index.html
的一部分,如下所示:
... Additional markup here
</main>
<section id="category-modal-bg"></section>
<section id="category-modal">
<h1 id="category-modal-title"></h1>
<section id="category-modal-content"></section>
</section>
<!DOCTYPE html>
<html lang="en">
<body>
<main>
MyPostName;MyPostDate,
</main>
</body>
</html>
这是有道理的,因为 layouts/posts.html
文件是一个 include
,因此在包含存在的地方构建标记按预期工作。
我正在尝试将 posts.html
文件编译为一个独立的、可导航的文件,它将与我的 _site/index.html
放在一起。如果我需要将此文件作为我的 CI/CD 管道的一部分进行复制,那也很好。
这可能吗?
在 posts.html
之前添加一个空的前面内容,让 Jekyll 处理您的文件。 (并向后移动 posts.html
)
---
---
<!DOCTYPE html>
<html lang="en">
<body>
<main>
{% for post in site.posts %}
{{post.title}};{{post.date}},
{% endfor %}
</main>
</body>
</html>
Any files with front matter are subject to processing. For each of these files, Jekyll makes a variety of data available via Liquid. (Variables | Jekyll Doc)
You must include front matter on the page for Jekyll to process any Liquid tags on it. (Front Matter | Jekyll Doc)
但在大多数情况下,这样更好。
---
layout: default
---
{% for post in site.posts %}
{{post.title}};{{post.date}},
{% endfor %}
通过使用 layout,您不必一次又一次地编写 <head>
或 <footer>
。 Layouts 还可以更轻松地更改 <head>
等(比方说,您希望某天添加 Google Analytics。)
此外,我认为这可能对您有所帮助,尽管与问题的标题无关。
---
layout: default
---
<ol>
{% for p in site.posts %}
<li><a href="{{ p.url | relative_url }}">{{ p.title }}</a> — {{ p.date }}</li>
{% endfor %}
</ol>
我正在尝试生成一个名为 posts.html
的 附加 Jekyll 页面。
我希望使用 site.posts
等 Jekyll 变量来遍历我为我的站点编写的帖子,并使用这些变量创建一个独立页面 (posts.html
)。
这是我当前的版本:
<!DOCTYPE html>
<html lang="en">
<body>
<main>
{% for post in site.posts %}
{{post.title}};{{post.date}},
{%endfor%}
</main>
</body>
</html>
如果我将它包含在我的站点的根目录中,命令 bundle exec jekyll build
将构建 posts.html
到我的 _site
目录,但不会将变量编译成可读的文本。它以明文形式输出。
我试图通过将 posts.html
文件移动到 _includes
目录并在 blog.html
.[=26 的底部引用它来挂钩现有的构建周期=]
生成 HTML,但作为 index.html
的一部分,如下所示:
... Additional markup here
</main>
<section id="category-modal-bg"></section>
<section id="category-modal">
<h1 id="category-modal-title"></h1>
<section id="category-modal-content"></section>
</section>
<!DOCTYPE html>
<html lang="en">
<body>
<main>
MyPostName;MyPostDate,
</main>
</body>
</html>
这是有道理的,因为 layouts/posts.html
文件是一个 include
,因此在包含存在的地方构建标记按预期工作。
我正在尝试将 posts.html
文件编译为一个独立的、可导航的文件,它将与我的 _site/index.html
放在一起。如果我需要将此文件作为我的 CI/CD 管道的一部分进行复制,那也很好。
这可能吗?
在 posts.html
之前添加一个空的前面内容,让 Jekyll 处理您的文件。 (并向后移动 posts.html
)
---
---
<!DOCTYPE html>
<html lang="en">
<body>
<main>
{% for post in site.posts %}
{{post.title}};{{post.date}},
{% endfor %}
</main>
</body>
</html>
Any files with front matter are subject to processing. For each of these files, Jekyll makes a variety of data available via Liquid. (Variables | Jekyll Doc)
You must include front matter on the page for Jekyll to process any Liquid tags on it. (Front Matter | Jekyll Doc)
但在大多数情况下,这样更好。
---
layout: default
---
{% for post in site.posts %}
{{post.title}};{{post.date}},
{% endfor %}
通过使用 layout,您不必一次又一次地编写 <head>
或 <footer>
。 Layouts 还可以更轻松地更改 <head>
等(比方说,您希望某天添加 Google Analytics。)
此外,我认为这可能对您有所帮助,尽管与问题的标题无关。
---
layout: default
---
<ol>
{% for p in site.posts %}
<li><a href="{{ p.url | relative_url }}">{{ p.title }}</a> — {{ p.date }}</li>
{% endfor %}
</ol>