Jekyll - Если для сообщения в блоге более 1 post.tag, отобразите сообщение, в противном случае отобразите имя тега.
В Jekyll, который использует язык шаблонов Liquid, я нахожусь на своей странице блога и показываю последние 6 постов блога. Для каждого сообщения я показываю в сообщении дату, имя, выдержку и URL-адрес сообщения.
Я также хочу иметь возможность показать первый тег этого поста (например, "Front-end development"). Однако, если с сообщением связано более 1 тега, я хочу отобразить запасное сообщение "Просмотреть теги", которое переключает выпадающий список со ссылками на другие теги. Если я могу вернуть неупорядоченный список, это нормально, так как я могу взять его оттуда.
Этот код не работает, но, надеюсь, он иллюстрирует то, чего я пытаюсь достичь:
{% for tag in post.tags %}
{% if tag.size > 1 %}
<a class="toggle-tag-list">View tags</a>
<ul class="tag-list hidden">
<li><a href="{{ tag.url }}">tag 1</a></li>
<li><a href="{{ tag.url }}">tag 2</a></li>
<li><a href="{{ tag.url }}">tag 3</a></li>
</ul>
{% else %}
<a href="{{ tag.url }}">{{ tag }}</a>
{% endif %}
{% endfor %}
1 ответ
Отредактированный ответ:
я видел это tag.url
ничего не возвращает и это нормально. Но, если вы используете страницы тегов (вручную или с помощью jekyll-paginate-v2), вы уже знаете их URL. Вы можете создать что-то вроде того, что я делаю в этом редакторе для href
Предположим, что ваши URL страницы тегов имеют вид /site.basurl/tag/tagname/
,
Не стесняйтесь адаптировать код.
Вы можете попробовать это:
{% if post.tags.size > 0 %}
{% if post.tags.size > 1 %}
<a class="toggle-tag-list">View tags</a>
<ul class="tag-list hidden">
{% for tag in post.tags %}
<li><a href="{{ site.baseurl }}/tag/{{ tag | slugify: "ascii" }}/">{{ tag }}</a></li>
{% endfor %}
</ul>
{% else %}
<a href="{{ site.baseurl }}/tag/{{ post.tags.first | slugify: "ascii" }}/">{{ post.tags.first }}</a>
{% endif %}
{% endif %}