Les collections dans Jekyll (doc)
Dans votre site Jekyll, tout n’est pas « Post » ou « Page ». Vous voudrez peut-être parfois publier des petites notes de statut, documenter différentes méthodes dans votre projet OpenSource, un annuaire des membres d’une équipe, une liste de livres ou d’albums de musique. Les collections vous permettent de définir un nouveau type de document qui se comporte comme le font normalement les Pages ou les Posts, mais disposent aussi de leurs propres propriétés uniques et d’un espace-nom.
Utiliser les Collections
Étape 1 : Dire à Jekyll de lire dans votre collection
Ajoutez ce qui suit au fichier _config.yml
de votre site, en remplaçant ma_collection
avec le nom de votre collection :
collections:
- ma_collection
```html
Vous pouvez facultativement spécifier les métadonnées de votre collection dans votre configuration :
```yaml
collections:
ma_collection:
foo: bar
Les attributs par défaut peuvent être aussi réglés pour une collection :
defaults:
- scope:
path: ""
type: ma_collection
values:
layout: page
Étape 2 : Ajouter votre Contenu
Créez un dossier correspondant (par ex. /_ma_collection
) et ajoutez-y des documents.
Le front-matter YAML s’il existe est lu comme de la data. Si vous ne placez pas de front-matter, Jekyll ne générera pas le fichier dans votre collection.
Assurez-vous de nommer correctement vos répertoires.
Le répertoire doit être nommé avec le même nom que la collection que vous avez définie dans votre fichier _config.yml
, en le faisant précéder du caractère _
.
Étape 3 : En option, restituez vos documents de votre collection en fichiers indépendants
Si vous voulez que Jekyll crée une version publique et restituée de chaque document dans votre collection, réglez la clé output
sur true
à l’intérieur de votre fichier _config.yml
dans vos métadonnées de collection :
collections:
ma_collection:
output: true
Ceci produira un fichier pour chaque document dans la collection. Par exemple, si vous avez _ma_collection/quelque_sousdir/quelque_doc.md
, il sera rendu en utilisant Liquid et le convertisseur Markdown de votre choix et écrit dans /ma_collection/quelque_sousdir/quelque_doc.html
.
Tout comme les posts avec les Permaliens, l’URL du document peut se personnaliser en réglant dans la collection la métadonnée permalink
:
collections:
ma_collection:
output: true
permalink: /super/:path/
Par exemple, si vous avez _ma_collection/quelque_sousdir/quelque_doc.md
, elle sera écrite sur <dest>/super/quelque_sousdir/quelque_doc/index.html
.
N'oubliez pas d'ajouter YAML pour le traitement
Les fichiers dans le collections qui n'ont pas de front matter sont traités comme des fichiers statiques et simplement copiés vers leur destination de sortie sans traitement.
Variable | Description |
---|---|
|
Étiquette de la collection conteneur |
|
Chemin vers le document relatif au répertoire de la collection |
|
The document's base filename, with every sequence of spaces and non-alphanumeric characters replaced by a hyphen. |
|
The document's lowercase title (as defined in its front matter), with every sequence of spaces and non-alphanumeric characters replaced by a hyphen. If the document does not define a title in its front matter, this is equivalent to |
|
Extension du fichier de sortie |
Attributs Liquid
Collections
Chaque collection est accessible via la variable Liquid site
.
Par exemple, si vous voulez accéder à la collection albums
trouvée dans _albums
, vous utiliseriez site.albums
. Chaque collection est en elle-même une série de documents (par ex. site.albums
est une série de documents, tout comme site.pages
et site.posts
). Voir ci-dessous pour savoir comment accéder aux attributs de ces documents.
Les collections sont aussi disponibles sous site.collections
, avec la métadonnée que vous avez spécifiée dans votre _config.yml
(si présent) et l’information qui suit :
Variable | Description |
---|---|
|
Le nom de votre collection, par ex. |
|
Une série de documents. |
|
An array of static files in the collection. |
|
Le chemin vers le répertoire source de la collection, relatif au site source. |
|
Le chemin complet vers le répertoire source de la collection. |
|
Si les documents de la collection seront sortis sous forme de fichiers individuels. |
Documents
En plus de n’importe quel front-matter YAML fourni dans le fichier correspondant du document, chaque document a les attributs suivants :
Variable | Description |
---|---|
|
Le contenu (non restitué) du document. Si aucun front-matter YAML n'est fourni, c'est la totalité des contenus du fichier. Si un front-matter YAML est utilisé, alors c'est tout les contenus du fichier après les `---` de fin du front-matter. |
|
L'output restitué du document basé sur le |
|
Le chemin complet du fichier source du document. |
|
Le chemin vers le fichier source du document relatif au site source. |
|
The URL of the rendered collection. The file is only written to the
destination when the name of the collection to which it belongs is
included in the |
Le support des Collections est instable et peut changer
Cette fonctionnalité est expérimentale et l'API peut probablement changer jusqu'à ce que la fonctionnalité se stabilise.
Accéder aux Attributs de Collection
Les attributes provenant du front matter YAML peuvent être accédés sous forme de donnée n’importe où dans le site. En utilisant l’exemple du dessus pour configurer une collection telle que site.albums
,
on pourrait avoir le front matter dans un fichier individuel structuré comme suit (qui doit utiliser une format de marquage, et ne peut pas être sauvegardé avec une extension .yaml
) :
title: "Josquin: Missa De beata virgine and Missa Ave maris stella"
artist: "The Tallis Scholars"
director: "Peter Phillips"
works:
- title: "Missa De beata virgine"
composer: "Josquin des Prez"
tracks:
- title: "Kyrie"
duration: "4:25"
- title: "Gloria"
duration: "9:53"
- title: "Credo"
duration: "9:09"
- title: "Sanctus & Benedictus"
duration: "7:47"
- title: "Agnus Dei I, II & III"
duration: "6:49"
Chaque album dans la collection pourrait être listé sur une page unique avec un template :
{% for album in site.albums %}
<h2>{{ album.title }}</h2>
<p>Performed by {{ album.artist }}{% if album.director %}, directed by {{ album.director }}{% endif %}</p>
{% for work in album.works %}
<h3>{{ work.title }}</h3>
<p>Composed by {{ work.composer }}</p>
<ul>
{% for track in work.tracks %}
<li>{{ track.title }} ({{ track.duration }})</li>
{% endfor %}
</ul>
{% endfor %}
{% endfor %}