如何避免液体模板标签?

104

这听起来很简单,但是我在文档中找不到它。如何在不被引擎处理的情况下,在liquid模板中编写{% this %}


你可以随时注释掉它。 - user1934286
9个回答

137

使用raw标签可以禁用Liquid处理引擎:

{% raw  %}
{% this %}
{% endraw %}

会显示

{% this %}

我相信这曾经是一个插件。它在此期间是否已经被整合到核心引擎中了? - Attila O.
5
似乎一年前核心引擎中添加了 raw 标签。请参见 https://github.com/Shopify/liquid/commits/master/lib/liquid/tags/raw.rb - Etienne
2
然而,Github不支持这种转义。 - leiming
2
@LeiMing 看起来现在是这样的(可能自 2013 年 5 月 以来)。 - atomicules
4
确认,它在GitHub Pages上可以使用。raw标签是在Liquid 2.3.0中引入的(见链接),而GitHub Pages目前正在使用版本2.5.5 - Enrico Campidoglio
一个潜在的问题是,如果我想打印 {% endraw %}{% raw %}{% endraw %}{% raw %} 将不会被渲染。 - tartaruga_casco_mole

127

对于未来的搜索者而言,有一种无需插件即可进行转义的方法,使用下面的代码:

{{ "{% this " }}%}

对于标签,要转义 {{ this }} 使用:

{{ "{{ this " }}}}

还有一个Jekyll插件,使这个过程变得更加容易:https://gist.github.com/1020852

jekyll的原始标签。保持 Liquid 不解析 {% raw %} 和 {% endraw %} 之间的文本。

参考资料


1
太好了,感谢提供参考。不知为何我在 Liquid 文档中没能找到这个。 - Attila O.
10
现在您无需安装插件就可以使用{% raw %},对我而言它可以直接运行,并且现在已经在文档中提到了。 - fregante
2
在Jekyll中,是否可以使用```来转义代码,而不是{%呢? - Jas
3
前几个建议对我没有用,但是使用“raw”可以:{% raw %}{{ this }}{% endraw %} - Yevgeniy Brikman
它起作用了,谢谢...在这里可以看到一个真实的例子http://g14n.info/2014/08/moving-from-blogger-to-github-pages/#comments - Gianluca Casati

15

您可以使用 {% raw %} {% endraw %} 来转义 Jekyll 文章中的液态标签,即:


{% raw %}
  {% for post in site.posts %}
     {{ post.content }}
  {% endfor %}

{% endraw %}

将会产生

  {% for post in site.posts %}
     {{ post.content }}
  {% endfor %}

14

顺便说一句:

如果你想在Jekyll中显示{{ "{% this " }}%},可以像这样编码:

{{ "{{ " }}"{{ "{% this" }} " }}{{ "}}%}

要转义{{ "{{ this " }}}},请使用:

{{ "{{ " }}"{{ "{{ this" }} " }}{{ "}}}}

34
哈哈,哈哈哈哈哈啊啊啊啊啊。 - RobW
这里到底发生了什么事情,我真的一点都不知道。 - undefined

10

4
我找到了一种万能的方法来显示带花括号的任何文本。您可以将纯文本分配给变量并显示它。
{% assign var = "{{ sth }}" %}
{{ var }}

谢谢!这很有用,可以转义双引号或单引号。 - JumpLink

2
如上所述这里,纯粹的{% raw %}{% endraw %} 只是第二好的解决方案,因为如果你在普通的github.com上查看Markdown,它们会被显示出来。
最好的方法是将{% raw %}{% endraw %}放在HTML注释中:
<!-- {% raw %} -->
something with curlky brackets like { this } and { that }
<!-- {% endraw %} -->

由于 HTML 注释,Github 将其视为注释。在 Github 页面中,原始标记将防止解析标记之间的花括号。

我喜欢这种方法,因为出于某种原因,它不会干扰我的摘录。 - Corstian Boerman

1

我尝试过使用{% raw %}{% endraw %},

以及{{ "{% this " }}%},但它们都无法正常工作。

最终,我的可行答案是{{ "{%" xxx }} something }}

我的代码:

{{ "{%" }} extends 'xadmin/base_site.html' %}
{{ "{%" }} block nav_form %}
    <h3>{{ "{{" }} title }}</h3>
    {{ "{%" }} for i in context1 %}
        <p>{{ "{{" }} i }}</p>
    {{ "{%" }} endfor %}
{{ "{%" }} endblock %}

结果:

{% extends 'xadmin/base_site.html' %}
{% block nav_form %}
    <h3>{{ title }}</h3>
    {% for i in context1 %}
        <p>{{ i }}</p>
    {% endfor %}
{% endblock %}


0

允许在页面上输出 Liquid 代码而不进行解析。

{% raw %}{{ 5 | plus: 6 }}{% endraw %} equals 11.

{{ 5 | plus: 6 }} equals 11.

有关此解决方案的更多详细信息,请参见:https://www.shoplazza.dev/docs/theme-tags


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