Jekyll - 如果博客 post 超过 1 post.tag 则显示一条消息,否则显示标签名称

Jekyll - If there is more then 1 post.tag for a blog post then display a message otherwise display the tag name

在使用Liquid 模板语言的Jekyll 中,我在我的博客页面上显示了最新的6 篇博客post。对于每个 post,我在 link.

中显示 post 日期、姓名、摘录和 post url

我也希望能够显示这个 post 的第一个标签(例如 "Front-end development")。但是,如果有超过 1 个标签与 post 相关联,我想显示一条回退消息说 "View tags",它将带有 link 的下拉列表切换到其他标签。如果我可以 return 一个无序列表,那很好,因为我可以从那里获取它。

这段代码不起作用,但希望它能说明我正在努力实现的目标:

{% 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 %}

编辑后的答案:

我看到tag.urlreturns什么都没有,很正常。 但是,如果您使用标签页(手动或使用 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 %}