Как отфильтровать таксономии, используя Zola / Tera на основе Rust? - PullRequest
0 голосов
/ 25 сентября 2018

Я недавно обнаружил Zola и Tera (платформы 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>

Должно быть несколько разделов кода выше для различных категорий, например, "rust", "java" и т. Д.

Iнаписал код, чтобы объяснить мой вопрос, но это не так, как я хочу (и он не работает, когда дублируются разделы).

Как выполнить фильтрацию определенной категории при загрузке разделов / страниц?

Метаданные в файле содержимого:

title = "A web page title"
[taxonomies]
categories = ["rust"]

Если вы видите мой пример кода выше, я должен получить к нему доступ сначала через хэш-карту, а затем через массив, чтобы отфильтровать все страницы, которые являются «ржавчинными».

Фильтр ниже не работает:

for page in section.pages | filter(attribute="taxonomies.categories", value="rust"

1 Ответ

0 голосов
/ 26 сентября 2018

Мне удалось решить это.Сначала я сделал такие тесты:

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.

Приведенный выше код отфильтрует страницы для таксономии категории.

...