Sur mon site Web équipé de Jekyll, j'ai une inclusion qui fonctionne comme une fonction, mais je ne vois pas comment passer correctement les paramètres. Lorsque je passe des paramètres comme {% include function.liquid foo="{{baz.quux}}" %}
, il ne fait que passer {{baz.quux}}
! Bien sûr, pas ce que je voulais: je veux que la valeur de baz.quux soit transmise. Comment puis-je faire cela?
Merci!
Il y a deux façons d'y parvenir. J'ai testé les deux approches par rapport à la version github-pages de Jekyll.
En supposant que vous référencez {{ foo }}
dans le code de votre inclusion, vous devez attribuer une valeur à foo avant d'appeler l'inclusion.
Tel que:
{% capture foo %}{{ baz.quux }}{% endcapture %}
{% include function.liquid %}
Cela vous permet de contrôler la portée de la variable, qui ressemble à ce que vous voulez. Il y a quelques détails sur la manière de le configurer dans la documentation des modèles .
Vous aviez presque raison avec la syntaxe, dans le modèle que vous utiliseriez:
{% include function.liquid foo=baz.quux %}
La partie qui manquait est que la variable doit être référencée différemment dans le code du fichier d'inclusion, vous devez utiliser {{ include.foo }}
Entrez la variable sans guillemets ni parenthèses, comme ceci:
{% include footer.html param="value" variable-param=page.variable %}
Dans ton cas:
{% include function.liquid foo=baz.quux %}
Cela fonctionne sur mon site.
De: https://github.com/jekyll/jekyll/issues/3577#issue-61988857
Aux côtés de David Hutchison, il existe une troisième solution:
{% assign foo = baz.quux %}
{% include function.liquid %}
Vous pouvez maintenant référencer {{ foo }}
dans votre fichier inclus.