有没有办法在Liquid中的空格上拆分文本?

时间:2012-08-25 13:08:07

标签: templates jekyll liquid

我正在尝试将Jekyll帖子的内容分成单词,并尝试了以下内容:

{% for word in post.content | split:' ' %}
    {% do some stuff %}
{% endfor %}

不幸的是,这没有做任何事情; 'word'最终成为整个帖子。我在Github Pages上使用这个代码,所以不幸的是我无法编写插件来处理这个问题。我错误地使用了拆分过滤器吗? Liquid是否支持我正在尝试做的事情?

2 个答案:

答案 0 :(得分:9)

您似乎可以使用split: 分割空白。

所以你可以尝试类似的东西:

{% capture words %}{{ post.content | split:  }}{% endcapture %}

或:

{% assign words = post.content | split:  %}

从我到目前为止测试的内容来看,您似乎应该使用后者(assign tag),因为当将值赋给变量时,捕获标记似乎在数组元素上执行隐式连接。

使用:

{% for post in site.posts limit:1 offset:6 %}
  {% assign words = post.content | split:  %}
  {% for word in words %}{{ word }} {% endfor %}
{% endfor %}

似乎完整地重现了帖子内容。内部for循环中的空格非常重要。

就像现在的注释一样,如果你需要将一些单词与空格连接在一起,则连接标记似乎需要在字符周围加引号,如下所示:join:' '

编辑:

我最终试图在空白上进行一些拆分,虽然它在我的开发环境中工作但它在Github Pages上不起作用。看起来Pages正在运行版本2.2.2,而split()过滤器是在版本2.3.0中引入的。我的开发环境正在运行2.4.1。希望我们可以纠结Github上的好人,让他们更新他们的Liquid版本。 :)

答案 1 :(得分:3)

过滤器(例如拆分)只能在{{outputs}}上使用,而不能在{%tags%}上使用。

您可以使用捕获功能完成拆分,如下所示: {%capture'foo'%} {{post.content |拆分:''}} {%endcapture%}