Jekyll标签有空格或多个单词

时间:2016-10-18 20:33:05

标签: ruby jekyll liquid

我在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 %}

有没有人对如何做到这一点有任何想法?谢谢!

3 个答案:

答案 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中的一个错误,但这个过程有效。用你需要的任何语法替换空格。