Je veux pénétrer dans le cerveau de Jekyll et voir ce qui se passe, en php vous avez get_defined_vars , alors j'ai essayé de faire quelque chose de similaire à cela avec:
{% for local_variable in local_variables %}
<p> {{ local_variable }} </p><br>
{% endfor %}
Qui n'a rien produit. Suis-je trop dur? Y a-t-il une méthode dans Ruby ou jekyll pour cela? Je voudrais juste fouiller et m'assurer que tout est correctement configuré et éventuellement pour découvrir des variables que je ne connais pas.
Avec Jekyll 2.x, vous pouvez utiliser ce plugin .
Il vous permet de faire quelque chose comme {{ site | debug }}
.
Depuis Jekyll 3, vous avez {{ variable | inspect }}
.
inspect
ne vous permet pas de jeter un œil à l'intérieur des variables, où jsonify
fait exactement cela.
{{ variable | jsonify }}
Aucun plugin nécessaire.
Sachez que jsonify
utilisera autant de mémoire dont il a besoin pour faire son travail sans aucune limite spécifique. Disons que si vous avez des centaines de publications ou de pages et que vous souhaitez les jsonifier en une seule fois, cela peut ne pas fonctionner comme prévu. Dans le pire des cas, le système peut sortir de RAM et ne répond plus. Faites preuve de prudence.
Les autres réponses ne traitent pas de la partie "toutes les variables" de la question.
Bien que Jekyll n'offre pas de get_defined_vars
équivalent, la documentation déclare toutes les variables globales disponibles (qui sont actuellement site
, page
, layout
, content
et paginator
).
Vous pouvez donc déboguer/imprimer toutes les variables avec une série d'appels jsonify
filtre (filtrage également avec escape
car certains d'entre eux contiendront du HTML):
<pre>
site: {{ site | jsonify | escape }}
page: {{ page | jsonify | escape }}
layout: {{ layout | jsonify | escape }}
content: {{ content | jsonify | escape }}
paginator: {{ paginator | jsonify | escape }}
</pre>
Pour joliment imprimer des variables, vous pouvez insérer ceci dans n'importe quel modèle:
<pre id="jekyll-debug"></pre>
<script>
var obj = JSON.parse(decodeURIComponent("{{ site | jsonify | uri_escape }}"));
var pretty_json = JSON.stringify(obj, null, 4); // Pretty-printed JSON (indented 4 spaces).
document.getElementById("jekyll-debug").textContent = pretty_json;
</script>
Modifier site
(dans {{ site | jsonify | uri_escape }}
) à la variable que vous souhaitez imprimer.
Vous pourrez alors voir vos variables bien rangées dans les pages générées. Quelque chose comme ça: