3 votes

Passez le paramètre include pour sélectionner un dossier à partir des collections dans Jekyll

Je suis en train de créer une revue universitaire sur Jekyll 3.0.3 avec des numéros périodiques. Pour l'instant, j'essaie de construire automatiquement une table des matières que tous les numéros peuvent partager, en utilisant des includes pour l'ajouter, et en ordonnant les pages par une valeur dans une valeur 'order' dans l'en-tête YAML. J'utilise des collections pour séparer les numéros. Par exemple, le premier numéro est hébergé dans un dossier appelé _issue01 .

Second numéro dans _issue02 etc. J'essaie de faire passer un paramètre à partir des endroits où je l'inclus en utilisant la syntaxe :

{% include toc.html foo=site.issue01 %}

Et puis sur le toc.html recevoir le foo en utilisant :

{% assign documents = {{include.foo}} | sort: 'order' %}

Le filtre se plaint :

Erreur : Erreur de liquide (ligne 13) : Impossible de trier un objet nul.

J'ai essayé une autre approche en m'inspirant de ceci filetage .

{% capture foo %}{{ site.issue01 }}{% endcapture %}
{% include foo.html %}

Mais cela semble faire passer le tout pour une chaîne :

Erreur : méthode non définie `sort' pour #.

2voto

elotroalex Points 46

J'ai trouvé la réponse :

Dans le fichier où vous voulez inclure le toc :

{% include toc.html bar=site.issue01 %}

Et dans le toc.html l'astuce est d'utiliser des parenthèses :

{% assign documents = (include.bar | sort: 'order') %}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X