如何逃避液体模板标签?

这听起来很简单,但是我在文件中找不到它。如何在 液体模板中编写 {% this %},而不需要引擎进行处理?

31305 次浏览

For future searchers, there is a way to escape without plugins, use the code below:

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

and for tags, to escape \{\{ this }} use:

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

There is also a jekyll plugin for this which makes it a whole lot easier: https://gist.github.com/1020852

Raw tag for jekyll. Keeps liquid from parsing text betweeen {% raw %} and {% endraw %}

Reference

BTW:

If you want to display \{\{ "{% this " }}%}in Jekyll, you can code like this:

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

To escape \{\{ "\{\{ this " }}}}use:

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

it is possible to disable liquid processing engine using the raw tag:

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

will display

{% this %}

There is another option: to use HTML special characters codes for replacing the curly braces with its matching codes:

  • replace each { with {
  • replace each } with }

For more details about this solution see: http://www.tikalk.com/devops/curly_brances_workaround/

You can escape liquid tags in Jekyll posts using {% raw %} {% endraw %} i.e

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


{% endraw %}

will produce

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

I found a omnipotent way to display any text with curly braces. You can assign plain text to a variable, and display it.

{% assign var = "\{\{ sth }}" %}
\{\{ var }}

As mentioned here also, plain {% raw %} and {% endraw %} are only the second best solution since those are shown if you look up the Markdown on normal github.com.

The best way is to put {% raw %} and {% endraw %} in HTML comments:

<!-- {% raw %} -->
something with curlky brackets like { this } and { that }
<!-- {% endraw %} -->

Due to the HTML comments it is seen by Github as a comment. In Github pages the raw tags will prevent the parsing of the curly brackets in between the tags.

I tried {% raw %} something {% endraw %} ,

and \{\{ "{% this " }}%}. But they both don't work.

finally, my working answer is \{\{ "{%" xxx }} something }}.

My code:

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

The result:

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

Allows output of Liquid code on a page without being parsed.

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


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

For more details about this solution see: https://www.shoplazza.dev/docs/theme-tags