包含空格或多个单词的 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
我在 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