【问题标题】:Outputting Literal curly braces in Liquid templates在 Liquid 模板中输出文字花括号
【发布时间】:2011-03-20 20:20:01
【问题描述】:

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

{{ example }}

显然,Liquid 将其视为一个名为 example 的变量并尝试进行替换。我正在尝试找出如何输出实际的大括号。

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

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

是的,告诉过你这很恶心。

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

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

这里有什么建议吗?

【问题讨论】:

标签: templates liquid


【解决方案1】:

对于{} 分别使用数字 HTML 实体 {} 怎么样 - 大概这是作为 HTML 输出?

编辑:请原谅,我对 liquid 不太熟悉(所以这可能是非常错误的),但是您可以将您的 {{ example }} 特殊值分配给一个变量并输出?可能是这样的:

{% assign special = '{{ example }}' %}
{{ special }}

【讨论】:

  • 不幸的是,输出最终会在
  • @Fortes 我已经更新了我的答案:您可以将带大括号的字符串分配给变量并输出吗?
  • 呃,这是在 Liquid 本身中显示 Liquid 语法的唯一方法吗?我正在尝试在使用 Liquid 生成的页面上显示整个模板,但现在它搞砸了。有没有像 {{noparsefromhere}}...{{noparsetohere}} 这样的东西?
  • @cringe 我同意 - 应该有办法。但恐怕我不是液体专家!例如,您能否将整个 子模板(您想按原样显示)加载到模板变量中(不对其进行解析)并在主模板中显示您的变量?还是仍然会被解析?
  • @w3d 嗯,这听起来像是一种方法......我还不知道我是否可以加载整个模板。但我认为只提供源格式的实际模板并直接链接到它对我来说更容易。
【解决方案2】:

你也可以使用raw:

{% raw %}

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

{% endraw %}

【讨论】:

  • 这应该是公认的答案。以下内容在脚本模板中非常适合我:moneyFormat: {% raw %}'${{amount_no_decimals}}'{% endraw %}
  • 这就是答案!
【解决方案3】:

这是唯一对我有用的东西。摘自here

{{ "{{ this " }}}}

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • \{\{ 在 Liquid 中不起作用。它将同时输出斜杠和大括号。
    【解决方案5】:

    我希望在格式化受保护的代码块时同时使用大括号和尖括号,所以我最终得到了以下模式:

    {% capture code %}{% raw %}line 1
    line 2
    line 3
    {% endraw %}{% endcapture %}
    
    <pre><code>{{ code | replace: "<", "&lt;" | replace: ">", "&gt;" }}</code></pre>
    

    【讨论】:

      猜你喜欢
      • 2013-06-30
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2016-07-17
      相关资源
      最近更新 更多