将文本转换为Liquid Template中的段落

时间:2012-08-09 21:44:39

标签: xhtml template-engine liquid shopify

我正在尝试使用Liquid模板语言将原始字符串转换为html。我想做的是转换它:

Hello. This
is a text.

Please convert me.

进入这个:

<p>Hello. This<br />
is a text.</p>
<p>Please convert me.</p>

我尝试了什么

{{ mytextvariable | newline_to_br | replace: "<br />\n<br />", "</p><p>" | replace: "<p></p>", "" | prepend: '<p>' | append: '</p>' }}

但这给了我(通知双<br />):

<p>Hello. This<br />
is a text.<br />
<br />
Please convert me.</p>

网站记录

这将用于Shopify网站。

2 个答案:

答案 0 :(得分:2)

使用newline_to_br时,您正在使用中断标记替换新行,因此第一次替换不会替换任何内容,新行也将消失。

答案 1 :(得分:1)

从我所看到的,Liquid不支持正则表达式,因此替换:"<br />\n<br />"可能会按字面解释。

作为新过滤器可能更容易实现吗?

...像这样:

def newline_to_p_or_br(input)
  input.to_s.gsub(/(.*?)\n\n/, "<p>\1</p>").gsub(/\n/, "<br />\n")
end

以下是newline_to_br的定义供参考: http://rubydoc.info/gems/liquid/2.2.2/Liquid/StandardFilters:newline_to_br