使用 {% for post in site.posts %} 从特定子文件夹中提取

Pulling from specific subfolders using {% for post in site.posts %}

我目前正在开发我的第一个 Jekyll 站点。我有一个页面,其中 2 个单独的部分显示某些 post 的预览(样式缩略图)。

我想要的是让这些部分显示 _site/_posts 中不同子文件夹的 posts。我组织了 _posts 以包含两个子文件夹,/lesplannen 和 /verslagen(课程计划和报告),每个子文件夹包含一堆文章。

我对这些部分之一的代码如下(Jade 格式):

{% for post in site.posts limit: 4 %}
    a(href="{{post.url}}" target="_blank" style="background-image: url(assets/img/posts/lesplannen/thumbnails/{{post.thumbnail}})").lesplan-thumb
      .article-meta
        .name {{post.title}}
        .date {{ post.date | date: "%b %d, %Y" }}
    {% endfor %}

其他部分也是如此。我的第一直觉是分别将 site.posts 更改为 site.posts.lesplannen 和 site.posts.verslagen,但这导致拇指根本不显示。我还在文章本身的首页添加了类别,但这也没有被采纳。

为清楚起见,我要做的是让第 1 部分显示来自 _site/_posts/子文件夹 1 的 posts,让第 2 部分显示来自 _site/_posts 的 posts _site/_posts/子文件夹 2.

解决这个问题的正确方法是什么?

奖励积分问题:页面显示 4 post,正如预期的那样,但选择显示 12 post 可用中的 post 6 到 9。这是为什么,我可以指定例如始终显示最后 x posts?

供参考:
GitHub 页面:https://zaena.github.io/portfolio-nadine/
GitHub 回购:https://github.com/Zaena/portfolio-nadine

以下是我如何让它们单独显示的:

index.html

---
---

<p>Posts in dir-a:</p>

<ul>
    {% for post in site.posts %}
        {% assign first_dir = post.path | remove_first: "_posts/" | split: "/" | first %}
        {% if first_dir == 'dir-a' %}
            <li>
                <a href="{{ post.url }}">{{ post.title }}: {{ post.date | date: "%b %d, %Y" }}</a>
            </li>
        {% endif %}
    {% endfor %}
</ul>

<p>Posts in dir-b:</p>

<ul>
    {% for post in site.posts %}
        {% assign first_dir = post.path | remove_first: "_posts/" | split: "/" | first %}
        {% if first_dir == 'dir-b' %}
            <li>
                <a href="{{ post.url }}">{{ post.title }}: {{ post.date | date: "%b %d, %Y" }}</a>
            </li>
        {% endif %}
    {% endfor %}
</ul>

假定目录结构如下:

/_posts
/_posts/dir-a
/_posts/dir-b

应该很好,很容易适应您的需求。

网站有几个问题:

posts文件夹结构错误

帖子应该总是_posts文件夹中,它们不能在另一个文件夹中(Jekyll 可以显示它们但是一些功能丢失了,它们不是本来就在那里)

如果类别是文件夹,它们不能以下划线 (_) 开头

实际结构的类别定义为 /_verslagen,它们应该是 /verslagen 及其在 /verslagen/_posts

中的 post

在两个不同的文件夹中具有相同的 post 会出现意外行为

有 post 位于不同的文件夹中,应该只存在一个版本。

解决方案

您要找的结构是:

├── index.html
├── lesplannen
│   └── _posts
│       ├── 2016-12-10-dit-is-een-lesplan2.md
│       ├── 2016-12-10-dit-is-een-lesplan3.md
│       ├── 2016-12-10-dit-is-een-lesplan4.md
│       └── 2016-12-10-dit-is-een-lesplan.md
└── verslagen
    └── _posts
        ├── 2016-12-10-dit-is-een-verslag10.md
        ├── 2016-12-10-dit-is-een-verslag11.md
        ├── 2016-12-10-dit-is-een-verslag12.md
        ├── 2016-12-10-dit-is-een-verslag2.md
        ├── 2016-12-10-dit-is-een-verslag3.md
        ├── 2016-12-10-dit-is-een-verslag4.md
        ├── 2016-12-10-dit-is-een-verslag5.md
        ├── 2016-12-10-dit-is-een-verslag6.md
        ├── 2016-12-10-dit-is-een-verslag7.md
        ├── 2016-12-10-dit-is-een-verslag8.md
        ├── 2016-12-10-dit-is-een-verslag9.md
        └── 2016-12-10-dit-is-een-verslag.md

这将使 post 在 site.categories.verslagensite.categories.lesplannen 的每个类别下可用。

然后显示每个类别 posts 的代码如下所示:

{% for post in site.categories.verslagen %}
<p>{{post.title}}</p>
<p>{{ post.date | date: "%b %d, %Y" }}</p>
<p>{{post.thumbnail}}</p>
{% endfor %}

{% for post in site.categories.lesplannen %}
<p>{{post.title}}</p>
<p>{{ post.date | date: "%b %d, %Y" }}</p>
<p>{{post.thumbnail}}</p>
{% endfor %}