This sounds very easy, however I couldn't find it anywhere in the docs. How can I write {% this %}
in a liquid template, without it being processed by the engine?
8 Answers
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 %}
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/
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 %}