2

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>' }}

しかし、これは私に与えます( double に注意してください<br />):

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

サイトノート

これは、Shopify サイトに使用されます。

4

2 に答える 2

2

newline_to_br を使用する場合、改行を改行タグに置き換えているため、最初の置換では何も置換されず、改行はなくなります。

于 2012-08-13T17:41:10.870 に答える
0

私が見る限り、Liquid は正規表現をサポートしていないため、replace:"<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

于 2012-08-13T14:52:35.753 に答える