На своем веб-сайте я хочу отображать список элементов коллекции на страницах, соответствующих каждой коллекции. Например, на странице Игры я хочу показать список всех статей, связанных с играми, на странице Политика я хочу показать список всех статей, связанных с политикой, и Т. Д.
Сейчас у меня есть по одному файлу шаблона 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
. Я бы хотел использовать один шаблон, а во фронтматоре указать, какую коллекцию я хочу. Поскольку у меня уже есть один файл 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 %}
Можно ли делать то, что я хочу, другим способом, кроме как иметь несколько файлов шаблонов?