如何在Shopify中按换行拆分字符串?

时间:2014-12-29 19:11:33

标签: shopify liquid

我的settings.html中有一个字段,我希望用户输入由两个换行符分隔的多个段落。我想将这个输入字符串拆分为一个字符串数组,每个字符串代表一个段落。

我想做这样的事情:

{% assign paragraphs = settings.intro | split: '\n' %}
{% for paragraph in paragraphs %}
    <p>
        {{ paragraph }}
    </p>
{% endfor %}

我似乎无法弄清楚如何在Liquid中引用换行符。我该怎么做呢?有什么工作吗?

2 个答案:

答案 0 :(得分:26)

试试这个:

{% assign paragraphs = settings.intro | newline_to_br | split: '<br />' %}
{% for paragraph in paragraphs %}<p>{{ paragraph }}</p>{% endfor %}

答案 1 :(得分:0)

@ josh-browns的答案使我了解了很多,对于大多数实例来说可能就足够了。但是,我有一些空白的段落来自用户生成的双行。

DenilsonSáMaia对strip_newlines的评论对我的降价处理器没有帮助,因此我在输出段落之前手动检查了每一行是否为空。

{% for paragraph in paragraphs %}
    {% assign paragraph-length = paragraph | number_of_words %}
    {% if paragraph-length > 0 %}
        <p>{{ paragraph }}</p>
        IMAGE HERE
    {% endif %}
{% endfor %}

这不能解决数组中的空白,因为我遍历数组以创建一个只有有效内容的新数组。如果有一个适用于数组的过滤器,而不仅仅是哈希,那将是非常好的。

{% assign all-paragraphs = content  | strip | newline_to_br | strip_newlines | split: "<br />"  %}
{% assign paragraphs = site.emptyArray  %}
{% for paragraph in all-paragraphs %}
    {% if paragraph and paragraph != "" and paragraph != site.emptyArray %}
         {% assign paragraphs = paragraphs | push: paragraph %}
    {% endif %}
{% endfor %}