Недавно я обнаружил Золя и Тера (фреймворки Rust для статически сгенерированных веб-сайтов) и нашел их потрясающими.
Я пытаюсь отфильтровать страницы определенных категорий для отображения в разделе на той же странице. Для иллюстрации я написал такой код:
<div class = "content">
{% block content %}
<div class = "list-posts">
{% for page in section.pages %}
{% for key, taxonomy in page.taxonomies %}
{% if key == "categories" %}
{% set categories = taxonomy %}
{% for category in categories %}
{% if category == "rust" %}
<article>
<h3 class = "post__title"><a href = "{{ page.permalink }}">{{ page.title }}</a></h3>
</article>
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endfor %}
</div>
{% endblock content %}
</div>
В приведенном выше коде должно быть НЕСКОЛЬКО разделов для разных категорий, например "ржавчина", "ява" и т. д.
Я написал код, чтобы объяснить свой вопрос, но это не так, как я хочу (и он не работает, когда разделы дублируются).
Как мне выполнить фильтрацию определенной категории при загрузке разделов / страниц?
Основные метаданные в файле содержимого:
title = "A web page title"
[taxonomies]
categories = ["rust"]
Если вы видите мой пример кода выше, я должен сначала получить к нему доступ через хеш-карту, а затем через массив, чтобы отфильтровать все страницы, которые являются "ржавыми".
Фильтр ниже не работает:
for page in section.pages | filter(attribute = "taxonomies.categories", value = "rust"
Мне удалось это решить. Сначала я сделал такие тесты:
HTML test print output
{% set categories = get_taxonomy(kind = "categories") %}
{% set rustItems = categories.items | filter(attribute = "name", value = "rust") %}
{% set javaItems = categories.items | filter(attribute = "name", value = "java") %}
{{ rustItems[0].pages | length }}
<br>
{{ rustItems[0].pages[0].title }}
<br>
{{ rustItems[0].pages[1].title }}
<br>
Мне удалось подобрать заголовок, указанный в файле .md.
Итак, я пошел дальше и сделал:
{% set categories = get_taxonomy(kind = "categories") %}
{% set category = categories.items | filter(attribute = "name", value = "business") | first %}
{% for page in category.pages %}
{{ page.title }}
... etc.
Приведенный выше код отфильтрует страницы по таксономии категорий.