在我的网站上,我想在与每个集合对应的页面上显示集合项目列表。例如在游戏页面上,我想显示所有游戏相关文章的列表,在政治页面上,我想显示所有政治相关文章的列表等。
我现在拥有的是每个这样的页面都有一个 Nunjucks 模板文件,我不是特别喜欢它,因为除了要显示的集合之外它们是相同的。这是我的两个模板,用于政治文章和游戏文章,我在其中扩展了一个通用样板 ( base.njk ),在主块中,我首先打印一些 Markdown 内容,然后是集合项目列表:
{# politics.njk #}
{% extends "base.njk" %}
{% block main %}
<main>
{{ content | safe }}
<ul class="postlist no-bullets">
{% for item in collections.politics %}
{% include "partials/collection-list-item.njk" %}
{% endfor %}
</ul>
</main>
{% endblock %}
{# games.njk #}
{% extends "base.njk" %}
{% block main %}
<main>
{{ content | safe }}
<ul class="postlist no-bullets">
{% for item in collections.games %}
{% include "partials/collection-list-item.njk" %}
{% endfor %}
</ul>
</main>
{% endblock %}
如您所见,这两个文件之间的唯一区别是collections.politics
和collections.games
. 我想使用一个模板,并在 frontmatter 中指定我想要的集合。由于我已经在每页使用该模板(用于在我开始列出文章之前编写内容)拥有一个 Markdown 文件,如果可能的话,那就太好了。例如:
<!-- politics.md -->
---
layout: articles-list.njk
title: Politics
listCollection: collections.politics
---
# Politics
Below is a list of all politics articles I've written.
<!-- games.md -->
---
layout: articles-list.njk
title: Games
listCollection: collections.games
---
# Games
I think about games a lot. Below is a list of articles I've written on the topic.
{# articles-list.njk #}
{% extends "base.njk" %}
{% block main %}
<main>
{{ content | safe }}
<ul class="postlist no-bullets">
{% for item in listCollection %}
{% include "partials/collection-list-item.njk" %}
{% endfor %}
</ul>
</main>
{% endblock %}
除了拥有多个模板文件之外,是否可以通过其他方式做我想做的事情?