且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-10-21 11:51:10

该网站存在多个问题:

posts文件夹结构错误

帖子应始终位于_posts文件夹中,不能位于另一个文件夹中(Jekyll可以显示它们,但是某些功能丢失了,它们并不意味着在那里)>

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

实际结构的类别定义为/_verslagen,应为/verslagen,其帖子位于/verslagen/_posts

在两个不同的文件夹中具有相同的帖子会产生意外的行为

有些帖子位于不同的文件夹中,只能存在一个版本.

解决方案

您要寻找的结构是:

├── 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

这将使site.categories.verslagensite.categories.lesplannen中每个类别下的帖子可用.

然后显示每个类别帖子的代码如下:

{% 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 %}

I'm currently working on my first Jekyll site. I have a page in which 2 seperate sections display previews of certain posts (a styled thumbnail).

What I want is for these sections to display posts from different subfolders in _site/_posts. I have organized _posts to contain two subfolders, /lesplannen and /verslagen (lesson plans and reports), each containing a bunch of articles.

My code for one of these sections is as follows (Jade formatting):

{% 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 %}

And similarly for the other section. My first instinct was to change site.posts to site.posts.lesplannen and site.posts.verslagen repectively, but this resulted in the thumbs not displaying at all. I also added the categories to the front matter in the articles themselves, but this wasn't picked up either.

For clarity, what I'm trying to do is have section 1 display posts from _site/_posts/subfolder 1 and section 2 display posts from _site/_posts/subfolder 2.

What would be the right way to go about this?

Question for bonus points: The page displays 4 posts, as expected, but chooses to display post 6 through 9 of the 12 posts available. Why is this and can I specify to e.g. always display the last x posts?

For reference:
GitHub page: https://zaena.github.io/portfolio-nadine/
GitHub repo: https://github.com/Zaena/portfolio-nadine

The website has several issues:

The posts folder structure is wrong

Posts should always be in a _posts folder, they can't be inside another folder (Jekyll can display them but some functionality is lost, they are not meant to be there)

If categories are folders, they can't start with an underscore (_)

The actual structure has categories defined as /_verslagen, they should be /verslagen and its posts inside /verslagen/_posts

Having the same post in two different folders has unexpected behaviour

There are posts located in different folders, only one version should exist.

Solution

The structure you are looking for is:

├── 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

This will make posts available under each category in site.categories.verslagen and site.categories.lesplannen.

Then the code to show each category posts looks like:

{% 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 %}