在Liquid模板中如何输出花括号(curly braces)的字面量?

36

我正在尝试从Liquid模板中输出以下内容:

{{ example }}

很明显,Liquid将其视为名为example的变量并尝试进行替换。 我想知道如何输出实际的大括号。

到目前为止,我找到了一种可行的方法,但它非常丑陋:

{{ '{example'|prepend:'{' }}}}

是的,我告诉过你这非常恶心。

以下是我尝试过的其他方法:

{{{ example }}}     # outputs '}'
{{{{ example }}}}   # outputs '}}'
\{\{ example \}\}   # outputs '\{\{ example \}\}'

这里有什么建议吗?


2
除了下面得票最高的“raw/endraw”答案外,还可以查看“如何转义Liquid模板标签?”(https://dev59.com/y3A75IYBdhLWcg3wMl8Z)提供的注释类型解决方案。 - Alan W. Smith
这个回答解决了你的问题吗?如何转义Liquid模板标签? - Jon Ericson
5个回答

149

您还可以使用raw标签:

{% raw %}

...lots of liquid code goes here and it doesn't get interpreted...

{% endraw %}

3
这应该是被接受的答案。以下内容在我的脚本模板中完美地发挥了作用:moneyFormat: {% raw %}'${{amount_no_decimals}}'{% endraw %} - Avishai
1
这就是答案! - Kuzeko

9
使用数字 HTML 实体{}分别代替 {} 是否可行 - 想必这是要输出为 HTML?
编辑:请原谅我,我对Liquid不太熟悉(因此可能非常错误),但您可以将{{ example }}的特殊值赋给变量并输出吗?可能是这样的:
{% assign special = '{{ example }}' %}
{{ special }}

不幸的是,输出最终将在<script>标签内,因此使用实体将无法起作用。 - Fortes
@Fortes 我更新了我的答案:你可以将带括号的字符串分配给一个变量,然后输出它,行不行? - MrWhite
哎呀,这是在Liquid中显示Liquid语法的唯一方法吗?我正在尝试在使用Liquid生成的页面上显示整个模板,但现在它看起来很糟糕。难道没有像{{noparsefromhere}}...{{noparsetohere}}这样的东西吗? - cringe
@cringe 我同意 - 应该有一种方法。但是很抱歉,我不是Liquid方面的专家!例如,您可以将整个子模板(您想要按原样显示的)加载到模板变量中(而不进行解析),然后在主模板中显示您的变量吗?或者那样仍然会被解析吗? - MrWhite
@w3d 嗯,那听起来是一种做法...我还不确定是否可以加载整个模板。但我认为直接提供源格式的实际模板并链接到它可能更容易些。 - cringe

2

这是我唯一有效的解决方法,摘自这里

{{ "{{ this " }}}}

我需要这个是因为我想从mustache模板内部引用site全局变量。


0

我想在格式化一个围栏代码块时,同时使用花括号和尖括号,因此最终采用了以下模式:

{% capture code %}{% raw %}line 1
line 2
line 3
{% endraw %}{% endcapture %}

<pre><code>{{ code | replace: "<", "&lt;" | replace: ">", "&gt;" }}</code></pre>

-4

你可以转义HTML,例如在{{var}}中,你可以使用\{\{var\}\},这样Luquid就不会处理它。


3
在Liquid中,{{无法正常工作。它会输出反斜杠和花括号。 - djsumdog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接