Les collections dans Jekyll 2.0
La notion de collections n’est pas propre à Jekyll, bien au contraire, c’est lui qui rattrape son retard par rapport à certains de ses collègues.
Une collection: Qu’est-ce que c’est ?
Une collection est un ensemble de contenu partageant des caractéristiques communes. Si je tente une analogie avec le mondes des bases de données, cela peut s’apparenter à une table contenant des fiches.
Tout est collection ! Un agenda est une collection de dates, un livre de cuisine est une collection de recettes…
Les docs de Wooster sont par exemple un excellent candidat à cette mise en collection. Cela sera fait dès que nous en aurons le temps. Voilà en attendant comment nous devrions nous y prendre.
Les collections dans Jekyll
Il est possible de dire que les collections s’ajoutent à d’autres types de contenus déjà présents dans les versions précédentes de Jekyll comme les posts
et les pages
. On pourrait ajouter les _drafts
pour être complet.
Les collections sont traitées de façon identique aux autres types de contenu. Et c’est tant mieux !
Configuration d’une collection
Il faut déclarer la collection dans le fichier de configuration de Jekyll; à savoir _config.yml
.
collections:
doc:
output: true
Positionner output
à true
permet de générer individuellement chaque page contenue dans la collection. Ainsi, une collection composée des éléments suivants sur le disque :
_doc/index.md
_doc/graphite.md
_doc/nodej.md
donnera dans le dossier _site
les fichiers /doc/index.html
, /doc/graphite.html
et /doc/nodejs.html
.
En positionnant output
à false
, ces fichiers ne seraient pas générés. Le contenu de la collection resterait cependant accessible par le langage de templates depuis n’importe quelle page appelant cette collection.
Ajout d’un contenu à une collection
Créez un dossier correspondant à la collection déclarée à la racine de vos sources; _doc
dans mon cas. Notez le tiret bas qui permet à Jekyll de ne pas copier tel quel ce dossier comme le dossier _posts
ou _drafts
.
Ajouter du contenu se fait de façon classique, comme une page ou un post.
Affichage d’une collection
Chaque collection est accessible à partir de la variable site.nom_collection
. Ainsi notre collection de doc est accessible à partir de site.doc
.
---
layout: default
---
<ul>
{% for page in site.doc %}
<li><span>{{ page.date | date: "%b %-d, %Y" }}</span> <a href="{{ page.url }}">{{ page.title }}</li>
{% endfor %}
</ul>
Vous pouvez placer ce genre de boucle dans un layout ou directement dans une page, ce qui permet vraiment d’utiliser toute la puissance des collections.
Jekyll à maturité ?
Après les données structurées, les collections sont tout ce qu’il manquait pour vraiment transformer Jekyll en gestionnaire de contenu tous azimuts. L’heure de la maturité a sonné pour Jekyll !