使用 {% 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.verslagen
和 site.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 %}
我目前正在开发我的第一个 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 位于不同的文件夹中,应该只存在一个版本。
解决方案
您要找的结构是:
├── 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.verslagen
和 site.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 %}