生成带有变量的独立 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>

综合版:Pagination | Jekyll doc