Добавить активный класс на страницу архива выбранной категории в Jekyll

Я использую плагин категории-архива для моего проекта Jekyll. Я хочу иметь меню списка категорий для каждой страницы архива категорий, чтобы пользователь мог перемещаться между архивами разных категорий. Я хотел бы добавить class="active" к ссылке на список категорий для просматриваемой страницы архива категорий. У меня есть нечто подобное для навигации по сайту, сравнивая page.url с navitem.url, разница в том, что для nav сайта я указываю список navitem.urls в config.yml, а для архива категорий список имен категорий сгенерировано на основе категорий, указанных в самом сообщении, и у меня возникли проблемы с использованием {{ category | first }} переменная в операторе {% if %}, чтобы я мог либо проверить "==", либо "содержит"

Это то, что у меня есть на данный момент, но это не работает

<ul class="product-categories">
{% for category in site.categories %}
  {% if page.url == {{ category | first }} %}
    {% assign class = "active" %}
  {% else %}
    {% assign class = "" %}
  {% endif %}
<li>
  <a href="/{{ category | first }}/" class="{{ class }}">{{ category | first }}</a>
</li>
{% endfor %}

Пожалуйста, помогите =)

1 ответ

Решение

Переменная класса liquid находится внутри цикла for, поэтому при ее использовании вне области видимости она также должна быть "содержит" вместо ==, поскольку путь содержит больше символов, которых не будет в категории.

<ul class="product-categories"> 
{% assign class = "" %}
{% for category in site.categories %}
{% assign cat=category|first %} 
{% if page.url contains cat %}
 {% assign class = "active" %} 
{% endif %} 
<li> 
<a href="/{{ category | first }}/" class="{{ class }}">{{ category | first }}</a>
 </li> 
{% endfor %}
Другие вопросы по тегам