包含空格或多个单词的 Jekyll 标签

Jekyll tags that have spaces or multiple words

我在 Jekyll 中为我的博文使用标签。下面是我在Markdown文件的front matter中声明的标签示例:

---
tags: [jekyll, tags, user experience]
---

我遇到的问题是 "user experience" 是用 space 呈现的,这破坏了标签的 link。我想知道是否可以使用包含 space 或多个单词的标签。

这是我的代码的样子:

标记 Ruby:

{% if page.tags.size > 0 %}
  <div class="post-tags">
    <ul>
      {% for tag in page.tags %}
        <li><a href="/tags#{{ tag }}">{{ tag }}</a>{% if forloop.last == false %},{% endif %}</li>
      {% endfor %}
    </ul>
  </div>
{% endif %}

有人知道我该怎么做吗?谢谢!

我在 created the tag pages in my blog 时遇到了同样的问题。

我的解决方案只是用破折号替换空格:

---
tags: [jekyll, tags, user-experience]
---

来自我的 one 个帖子的前题示例:

tags:
- backup
- bitbucket-backup
- roboshell-backup
- source-control

finished HTML 看起来像这样:

<p><small>tags:
    <span class="blog_post_categories">
        <a href="/tags/#backup">backup</a>, 
        <a href="/tags/#bitbucket-backup">bitbucket-backup</a>, 
        <a href="/tags/#roboshell-backup">roboshell-backup</a>, 
        <a href="/tags/#source-control">source-control</a>
    </span>
</small></p>

我确信有一个更优雅的解决方案,它实际上将空白显示为空白,但对我来说,破折号就足够了。

我发现了一个修复方法。当标签中有 space 时,例如 "user experience",Jekyll 不会将单词连接为呈现的 link 的一部分,而是在两个单词之间留下 space: your.site/tags/user experience

我需要用 + 连接的两个词,因为我的标签页面将 link 呈现为该部分 #user+experience。所以我添加了 replace 这样的:

{{ tag | replace: " ","+" }}

这仍然感觉像是 Jekyll 中的错误,但这个过程有效。将 space 替换为您需要的任何语法。

您可以使用 url_encode 过滤器:{{ tag | url_encode }}.

Note that url_encode will turn a space into a + sign instead of a percent-encoded character. cf. Liquid doc