我在Jekyll中使用标签作为我的博文。以下是我在Markdown文件的前面部分声明的标签示例:
---
tags: [jekyll, tags, user experience]
---
我遇到的问题是“用户体验”是用空格渲染的,这会破坏标签的链接。我想知道是否有可能有空格或多个单词的标签。
这就是我的代码:
使用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 %}
有没有人对如何做到这一点有任何想法?谢谢!
答案 0 :(得分:4)
您可以使用_highlightResult
过滤器:url_encode
。
请注意,url_encode会将空格转换为+符号而不是百分比编码字符。比照Liquid doc
答案 1 :(得分:2)
当我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>
我确信有一个更优雅的解决方案,它实际上将空白显示为空白,但对我来说,破折号已经足够了。
答案 2 :(得分:0)
我发现了一个问题。当标签中有空格时,例如&#34;用户体验&#34;,Jekyll不会将这些单词连接为渲染链接的一部分,在两个单词之间留出空格:your.site/tags/user experience
我需要+
加入的两个单词,因为我的“标签”页面会将该部分的链接呈现为#user+experience
。所以我添加replace
这样:
{{ tag | replace: " ","+" }}
这仍然感觉像Jekyll中的一个错误,但这个过程有效。用你需要的任何语法替换空格。