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 ! |
Un template est en fait une publication vierge qui a cependant été
préformatée pour contenir des choses redondantes à rédiger ou à
programmer manuellement. Typiquement, pour une galerie, vous pourriez
vouloir un template qui contiendrait déjà la ou les balises Markdown pour inclure
une ou plusieurs images, les champs categories
et tags
préremplis, etc.
Par exemple :
authors: 'Denis Salem' categories: - Photographies: - Nature title: Champignons trop mignons (mais pas commestibles, alors calme-toi) ---VENC-BEGIN-PREVIEW--- ---VENC-END-PREVIEW--- ![.:GetEntryTitle:.](".:GetEntryTitle:.")
VenC est livré avec des exemples de templates. En voici la liste :
oEmbed
: permet de créer une publication avec du contenu acquis avec l'API oEmbed
.images
: permet de créer une publication avec une ou plusieurs images.kroki
: permet de créer une publication embarquant un diagramme Kroki, en chargeant le code de celui-ci depuis un fichier dans le répertoire includes
de votre projet.pygmentize
: permet de créer une publication qui inclue du code source avec coloration syntaxique depuis un fichier dans le répertoire includes
de votre projet.Parmi ces templates, certains servent surtout à illustrer l'usage de certaines fonctionnalités de VenC.
Ces templates sont normalement installés dans : $(venc -pp)/themes_templates
.
Pour utiliser un template, il suffit de passer son nom de fichier (sans le chemin) à VenC au moment de la création d'une nouvelle publication. Par exemple :
jeanrochefort@anonymous ~ $ venc -ne "Amanite tue-mouches" champignons_magiques
VenC va d'abord essayer de trouver votre template dans le répertoire
templates
de votre blog.
Sinon, il essayera de le trouver parmi les templates de publication prédéfinis, qui sont listés plus haut.
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"
{venc_entry_id}
: argument optionnel, prend par défaut la valeur de l'identifiant de la publication.{venc_entry_title}
: optionnel, prend par défaut la valeur du titre de la publication indiquée en premier argument à --new-blog
.{value}
: optionnel, généralement utilisé dans un pattern. Par défaut, dans un template, cet argument est ignoré.{path}
: optionnel, généralement utilisé dans un pattern. Par défaut, dans un template, cet argument est ignoré.{weight}
: optionnel, généralement utilisé dans un pattern. Par défaut, dans un template, cet argument est ignoré.{count}
: optionnel, généralement utilisé dans un pattern. Par défaut, dans un template, cet argument est ignoré.