Comment échapper aux balises de modèles liquides?

90

Cela semble très simple, mais je ne l'ai trouvé nulle part dans la documentation. Comment puis-je écrire {% this %}dans un modèle liquide , sans qu'il soit traité par le moteur?

Attila O.
la source
Vous pouvez toujours commenter.
1934286

Réponses:

121

Pour les futurs chercheurs, il existe un moyen de s'échapper sans plugins, utilisez le code ci-dessous:

{{ "{% this " }}%}

et pour les balises, pour éviter d' {{ this }}utiliser:

{{ "{{ this " }}}}

Il existe également un plugin jekyll pour cela qui le rend beaucoup plus facile: https://gist.github.com/1020852

Balise brute pour jekyll. Empêche les liquides d'analyser le texte entre {% raw%} et {% endraw%}

Référence

Khaja Minhajuddin
la source
1
Super, merci pour la référence. Pour une raison quelconque, je n'ai pas pu trouver cela dans la documentation liquide.
Attila O.
8
Vous n'avez plus besoin d'un plugin à utiliser {% raw %}, pour moi cela fonctionne hors de la boîte et maintenant c'est dans la documentation
fregante
est-il possible d'échapper au code avec `` '' au lieu de {% dans jekyll?
Jas
3
Les premières suggestions de couple ne fonctionnent pas pour moi, mais en utilisant rawfait: {% raw %}{{ this }}{% endraw %}.
Yevgeniy Brikman
cela a fonctionné, merci ... voir un exemple réel ici g14n.info/2014/08/moving-from-blogger-to-github-pages/#comments
Gianluca Casati
120

il est possible de désactiver le moteur de traitement des liquides à l'aide de la rawbalise:

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

Affichera

{% this %}
Etienne
la source
Je crois que c'était un plug-in . Est-il entré dans le moteur de base entre-temps?
Attila O.30
5
Il semble que la rawbalise ait été ajoutée il y a un an dans le moteur principal. Voir github.com/Shopify/liquid/commits/master/lib/liquid/tags/raw.rb
Etienne
2
Cependant, cet échappement n'est pas pris en charge par Github.
leiming
2
@LeiMing On dirait que c'est maintenant (probablement depuis mai 2013 )
atomicules
2
Confirmé, cela fonctionne sur les pages GitHub. La rawbalise a été introduite dans Liquid 2.3.0 et GitHub Pages utilise actuellement la version 2.5.5 .
Enrico Campidoglio
13

BTW:

Si vous souhaitez afficher {{ "{% this " }}%}dans Jekyll, vous pouvez coder comme ceci:

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

Pour échapper, {{ "{{ this " }}}}utilisez:

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

Vous pouvez échapper aux balises liquides dans les messages Jekyll en utilisant {% raw%} {% endraw%} ie

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

{% endraw %}

produira

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

Il existe une autre option: utiliser des codes de caractères spéciaux HTML pour remplacer les accolades par ses codes correspondants:

  • remplacez chaque { par & # 123;
  • remplacez chaque } par & # 125;

Pour plus de détails sur cette solution, consultez: http://www.tikalk.com/devops/curly_brances_workaround/

yorammi
la source
4

J'ai trouvé un moyen omnipotent d'afficher n'importe quel texte avec des accolades. Vous pouvez affecter du texte brut à une variable et l'afficher.

{% assign var = "{{ sth }}" %}
{{ var }}
En savoir plus
la source
Je vous remercie! Utile pour échapper des guillemets doubles ou simples
JumpLink
1

Comme il est mentionné ici aussi, plaine {% raw %}et {% endraw %}sont la deuxième meilleure solution puisque ceux -ci sont affichés si vous regardez le Markdown sur github.com normal.

Le meilleur moyen est de mettre {% raw %}et {% endraw %}dans les commentaires HTML:

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

En raison des commentaires HTML, Github le voit comme un commentaire. Dans les pages Github, les balises brutes empêcheront l'analyse des accolades entre les balises.

liquidat
la source
J'aime cette méthode car, pour une raison quelconque, elle ne gâche pas mes extraits.
Corstian Boerman
0

J'ai essayé {% raw %}quelque chose {% endraw %},

et {{ "{% this " }}%}. Mais ils ne fonctionnent pas tous les deux.

enfin, ma réponse de travail est {{ "{%" xxx }} something }}.

Mon code:

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

Le résultat:

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

陈 章
la source