Les collections dans Jekyll 2.0

Il est temps de voir ce qui se cache derrière la notion de collections à l'heure où la version 2.0 de Jekyll vient de sortir.

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 postset 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 !

Olivier Jan

À propos de l’auteur

| Cofondateur de Check my Website.

Check My Website a arrêté son activité en 2017, n'hésitez pas à vous tourner vers Dareboost.