Como escapar de tags de template líquidos?

90

Isso parece muito fácil, mas não consegui encontrar em nenhum lugar dos documentos. Como posso escrever {% this %}em um template líquido , sem que seja processado pelo motor?

Attila O.
fonte
Você sempre pode comentar.
1934286

Respostas:

121

Para futuros pesquisadores, não é uma maneira de escapar sem plugins, use o código abaixo:

{{ "{% this " }}%}

e para tags, para escapar do {{ this }}uso:

{{ "{{ this " }}}}

Também existe um plugin jekyll para isso que torna tudo muito mais fácil: https://gist.github.com/1020852

Tag bruta para jekyll. Evita que o líquido analise o texto entre {% raw%} e {% endraw%}

Referência

Khaja Minhajuddin
fonte
1
Ótimo, obrigado pela referência. Por algum motivo, não consegui encontrar isso nos documentos líquidos.
Attila O.
8
Você não precisa mais de um plugin para usar {% raw %}, para mim ele funciona fora da caixa e agora está nos documentos
fregante
é possível escapar do código com `` `em vez de {% em jekyll?
Jas
3
As primeiras sugestões casal não funcionou para mim, mas usando rawfiz: {% raw %}{{ this }}{% endraw %}.
Yevgeniy Brikman
funcionou, obrigado ... veja um exemplo real aqui g14n.info/2014/08/moving-from-blogger-to-github-pages/#comments
Gianluca Casati
120

é possível desativar o mecanismo de processamento de líquidos usando a rawtag:

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

Exibirá

{% this %}
Etienne
fonte
Eu acredito que isso costumava ser um plug-in . Entrou no motor principal nesse meio tempo?
Attila O.
5
Parece que a rawtag foi adicionada há um ano no mecanismo principal. Consulte github.com/Shopify/liquid/commits/master/lib/liquid/tags/raw.rb
Etienne
2
No entanto, esse escape não é compatível com o Github.
final em
2
@LeiMing Parece que está agora (provavelmente desde maio de 2013 )
atomicules
2
Confirmado, funciona nas páginas do GitHub. A rawtag foi introduzida no Liquid 2.3.0 e o GitHub Pages está usando a versão 2.5.5 .
Enrico Campidoglio
13

BTW:

Se você deseja exibir {{ "{% this " }}%}no Jekyll, você pode codificar assim:

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

Para escapar do {{ "{{ this " }}}}uso:

{{ "{{ " }}"{{ "{{ this" }} " }}{{ "}}}}
leiming
fonte
27
Ha, ha hahahah ah aaaaahhh.
RobW
13

Você pode escapar das tags líquidas nas postagens do Jekyll usando {% raw%} {% endraw%}, ou seja,

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

{% endraw %}

vai produzir

  {% for post in site.posts %}
     {{ post.content }}
  {% endfor %}
Ahmed Bouchefra
fonte
10

Há outra opção: usar códigos de caracteres especiais HTML para substituir as chaves por seus códigos correspondentes:

  • substitua cada { por & # 123;
  • substitua cada } por & # 125;

Para obter mais detalhes sobre esta solução, consulte: http://www.tikalk.com/devops/curly_brances_workaround/

yorammi
fonte
4

Eu encontrei uma maneira onipotente de exibir qualquer texto entre chaves. Você pode atribuir texto simples a uma variável e exibi-lo.

{% assign var = "{{ sth }}" %}
{{ var }}
MoreFreeze
fonte
Obrigado! Útil para escapar aspas simples ou duplas
JumpLink
1

Como mencionado aqui também, simples {% raw %}e {% endraw %}são apenas a segunda melhor solução, já que são mostrados se você procurar o Markdown em github.com normal.

A melhor maneira é colocar {% raw %}e {% endraw %}em comentários HTML:

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

Devido aos comentários em HTML, ele é visto pelo Github como um comentário. Nas páginas do Github, as tags brutas evitarão a análise das chaves entre as tags.

liquidat
fonte
Gosto desse método porque, por algum motivo, não atrapalha meus trechos.
Corstian Boerman
0

Eu tentei {% raw %}algo {% endraw %},

e {{ "{% this " }}%}. Mas ambos não funcionam.

finalmente, minha resposta útil é {{ "{%" xxx }} something }}.

Meu código:

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

O resultado:

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

陈 章
fonte