С помощью встроенного решения категорий Jekyll
Я нашел это частичное решение , так же, как вы сделали ...:
{% for category in site.categories %}
<li><a name="{{ category | first }}">{{ category | first }}</a>
<ul>
{% for posts in category %}
{% for post in posts %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
{% endfor %}
</ul>
</li>
{% endfor %}
Что вы хотитесделать / сделал, это отфильтровать переменную 'posts' с языком страницы.Это действительно можно сделать с помощью assign
с использованием фильтра where
, но оно должно выглядеть следующим образом (поскольку «lang» является атрибутом отдельной записи, а не категории):
{% assign lang_posts = posts | where:"lang", page.lang %}
Этоприводит к следующему коду:
{% for category in site.categories %}
<li><a name="{{ category | first }}">{{ category | first }}</a>
<ul>
{% for posts in category %}
{% assign lang_posts = posts | where:"lang", page.lang %}
{% for post in lang_posts %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
{% endfor %}
</ul>
</li>
{% endfor %}
БЕЗ встроенного решения по категориям в Jekyll
Если у вас есть случайный список категорий, например:
- categories:
- web
- css
- internet
... и ваши сайты _config.yml
содержат аналогичный (но более полный) список, например:
- categories:
- web
- css
- internet
- html5
- jekyll
У вас есть другая проблема.В этом случае вы НЕ используете встроенное решение категорий Jekyll, и это решение не применяется.Многие утверждения в этом случае означают разные вещи, например:
{% for category in site.categories %}
{{ category | first }}
Это означает, что вы перебираете все существующие категории из _config.yml
, и тогда category | first
должно быть category
.В этой ситуации вы, вероятно, захотите что-то вроде этого:
<ul class="categories">
{% for category in site.categories %}
<li><a name="{{ category }}">{{ category }}</a>
<ul>
{% assign posts=site.posts | where:"lang", page.lang %}
{% for post in posts %}
{% if post.categories contains category %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Обратите внимание, что это просто простая логика массива Jekyll / liquid, которая перезаписывает переменные категории Jekyll.