![]() Un générateur de site statique qui casse des briques. VenC est tellement rapide qu'il enfreint le principe de causalité et produit de l'énergie surunitaire ! |
Les templates supportent la paramétrisation au moment de l'exécution de la commande --new-entry
. C'est le cas par exemple du template oEmbed
ou images
.
Quand un template est appelé sans ses arguments, la création de la publication échoue.
Avant d'utiliser un template, il faut donc connaître ses arguments à l'aide de la commande --template-arguments
.
Les paramètres de template prennent la forme de placeholder
Python, ceux qui sont utilisés avec la fonction format
. Par exemple :
{moo} {foo} {bar}
Pour fonctionner il faut passer à VenC un troisième argument, au format JSON, qui portera les clés-valeurs nécessaires au template.
Le template oEmbed
se présente ainsi :
authors: categories: title: {venc_entry_title} ---VENC-BEGIN-PREVIEW--- ---VENC-END-PREVIEW--- .:GetEmbedContent::{embed_content}:.
Dans ce template, on voit que l'on a deux placeholders :
venc_entry_title
: variable optionnelle, voir "Arguments par défaut".embed_content
: qui est utilisée ici en paramètre de GetEmbedContent
.Pour créer une publication avec le template oEmbed
il faudrait donc utiliser la commande VenC --new-entry
, comme ci-dessous :
venc --new-entry \ "Des images stylées, comme l'histoire de France" \ oEmbed \ '{"embed_content":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
Le template images
se présente ainsi :
authors: categories: title: {venc_entry_title} images: {images} ---VENC-BEGIN-PREVIEW--- ---VENC-END-PREVIEW--- .:ForEntryMetadata::images::<img src="{value}" title="" alt="{value}">:: :.
Dans ce template on voit que l'on a trois placeholders :
venc_entry_title
: variable optionnelle, voir "Arguments par défaut".value
: optionnelle, voir "Arguments par défaut".images
: ce placeholder est présent dans l'entête de la publication.
Ça signifie que les valeurs ou les structures de données associées à la clé images
, dans le code JSON passé en argument, seront ajoutées à
l'entête YAML.Comme la métadonnée d'origine dans l'entête YAML du template est appelée dans ForEntryMetadata
, il faut que la variable images
soit une liste. On doit donc utiliser la commande VenC --new-entry
comme ci-dessous :
Pour plus de clarté l'exemple utilise une approche multiligne en Bash, comme expliqué ici.
JSON=$(cat <<-END { "images" : [ "https://i.kym-cdn.com/photos/images/newsfeed/000/247/207/813.gif", "https://i.kym-cdn.com/photos/images/newsfeed/001/390/627/208.jpg" ] } END ) venc --new-entry \ "Des images stylées, comme l'histoire de France" \ images \ "$JSON"