5.4.1 Motifs de publication

Ces motifs permettent d'accéder à des métadonnées contenues dans une publication. Ils ne peuvent donc pas être utilisés en dehors d'une publication ou des fichiers ci-dessous composant un thème :

CherryPickEntryMetadata

.:CherryPickEntryMetadata::branch_1[::branch_2::branch_n]:.

Permet de récupérer le contenu de la métadonnée contenue dans un ou plusieurs dictionnaires. Pour ce faire, cette fonction prend au moins un paramètre qui désigne le nom d'un champ à la racine du document YAML d'une publication.

Par exemple :

.:CherryPickEntryMetadata::moo::foo::bar:.

CherryPickEntryMetadataIfExists

Identique à CherryPickEntryMetadata, mais est ignoré en cas d'erreur.

ForEntryAuthors

.:ForEntryAuthors::string::separator:.

Retourne la liste des auteurs de la publication.

Le premier argument est une chaîne de caractères à formater avec les variables :

Le second paramètre est une chaîne de caractères servant de séparateur.

ForEntryMetadata

.:ForEntryMetadata::metadata_name::string::separator:.

Il est possible de définir des métadonnées sous la forme de listes.

Le premier argument est une chaîne de caractères à formater avec les variables :

Le second paramètre est une chaîne de caractères servant de séparateur.

Si la métadonnée spécifiée dans metadata_name n'existe pas, VenC interrompra la génération du site.

ForEntryMetadataIfExists

.:ForEntryMetadataIfExists::metadata_name::string::separator:.

Identique à ForEntryMetadata, mais est ignoré si la métadonnée spécifiée dans metadata_name n'existe pas.

GetEntryArchivePath

.:GetEntryArchivePath:.

Retourne le liens vers le groupe d'archives dans lequel se trouve la publication.

GetEntryCategoriesTree

.:GetEntryCategoriesTree::open_node::open_branch::close_branch::close_node:.

Les catégories de la publication sont organisées sous la forme d'un arbre. Il est possible de récupérer l'arbre entier afin, typiquement, de générer un menu ou une liste de catégories et de sous-catégories.

Les arguments du motif sont les suivants :

Les variables de ce motif sont les suivantes :

Par exemple, pour créer un menu déroulant on peut utiliser le motif comme ci-dessous :

 .:GetEntryCategoriesTree::
    <ul>::
    <li><a href="{path}" title="{count} publications">{value}</a>::
    {childs}</li>::
    </ul>
:. 

Si la publication était incluse dans les catégories suivantes :

categories:
  - Material:
    - Metal:
      - Copper
      - Steel
  - Science

Alors le motif générerait quelque chose comme le code HTML suivant :

<ul>
    <li>
        <a href="../Material/" title="1 publications">Material</a>
        <ul>
            <li>
                <a href="../Material/Metal/" title="1 publications">Metal</a>
                <ul>
                    <li><a href="../Material/Metal/Copper/" title="1 publications">Copper</a></li>
                    <li><a href="../Material-Metal/Steel/" title="1 publications">Steel</a></li>
                </ul>
            </li>
        </ul>
    </li>
    <li>
        <a href="../Science/" title="1 publications">Science</a>
    </li>
</ul>

À la fin de chaque branche, si la catégorie courante possède une ou plusieurs catégories filles, alors les arguments open_node et close_node sont ajoutés et une nouvelle liste de sous-catégories est générée entre ces deux arguments, en utilisant les arguments open_branch et close_branch.

Ce motif est ignoré et supprimé si la génération des catégories est désactivée dans le fichier de configuration principale.

GetEntryCategoriesTreeFromBranches

 
.:GetEntryCategoriesTreeFromBranches::
    branches::
    sub_tree_separator::
    open_node::
    open_branch::
    close_branch::
    close_node
:. 

Fonctionne comme GetBlogCategoriesTreeFromBranches mais ne garde que les catégories où se trouve la publication courante.

GetEntryChapterLevel

.:GetEntryChapterLevel:.

Renvoie le niveau du chapitre de la publication.

Par exemple si la publication correspond au chapitre '1.2.3', alors le motif renverrait 3 :

chapter: '1.2.3'

Si la publication correspond au chapitre '4.5', alors le motif renverrait 2 :

chapter: '4.5'

GetEntryChapterPath

.:GetEntryChapterPath:.

Renvoie le chemin relatif du chapitre correspondant à la publication courante.

GetEntryDate

.:GetEntryDate[::format]:.

Retourne la date de la publication formatée comme définie dans le fichier de configuration par le champ date_format.

Il est possible d'utiliser un autre format de date à l'aide de l'argument optionnel format. Pour en savoir plus sur ce format, rendez-vous ici.

GetEntryDay

.:GetEntryDay:.

Retourne le jour de création de la publication.

GetEntryHour

.:GetEntryHour:.

Retourne l'heure de création de la publication.

GetEntryID

.:GetEntryID:.

Retourne l'identifiant unique de la publication.

GetEntryMetadata

.:GetEntryMetadata::metadata_name:.

Il est possible de définir ses propres champs dans les métadonnées d'une publication ou d'un template.

Par exemple, si l'on définit le champ suivant :

free_hardware : Arduino Mega

Pour accéder à celui-ci, on utilisera le motif GetEntryMetadata de la façon suivante :

.:GetEntryMetadata::free_hardware:.

Si la métadonnée ainsi référencée n'existe pas, VenC générera une erreur et stoppera la génération du site.

GetEntryMetadataIfExists

.:GetEntryMetadataIfExists::metadata_name[::string][::string2]:.

De façon similaire, il est possible d'essayer d'accéder à une métadonnée, sans garantie que celle-ci existe. Si la métadonnée existe, il est possible alors de formater du texte pour l'y inclure.

Les arguments de ce pattern sont au nombre de trois :

Il est possible d'utiliser la variable suivante dans l'argument string pour formater le texte :

GetEntryMetadataIfNotNull

.:GetEntryMetadataIfNotNull::metadata_name[::string][::string2]:.

Identique à GetEntryMetadataIfExists, mais la métadonnée spécifiée ne doit pas être vide ou être null.

Par exemple:

 <div id="entry.:GetEntryID:." .:GetEntryMetadataIfExists::alternate_style::class="{value}":. >

Si la métadonnée référencée n'est pas définie, si elle est vide ou null, VenC retourne string2 (si cette chaîne est définie), sinon le motif est ignoré.

Si le second argument n'est pas défini, l'accesseur renvoie directement la variable référencée, si le test réussit.

GetEntryMetadataTree

 
.:GetEntryMetadataTree::
    metadata_name::
    open_node::
    open_branch::
    value_childs::
    value::
    close_branch::
    close_node
:. 

Ce pattern permet de formater sous la forme d'un arbre une métadonnée d'une publication qui serait une structure de données.

Les arguments de ce motif sont les suivants :

Ce motif possède les variables suivantes :

Voici un exemple d'utilisation de ce pattern. Étant donné la métadonnée suivante dans l'entête d'une publication :

tree_test:
  - a:
    - b:
      - c
      - d
    - e:
      - f
  - g

Si l'on veut afficher tree_test sous la forme de listes imbriquées on pourrait utiliser le motif comme suit :

 
 .:GetEntryMetadataTree::
    tree_test::
    <ul>::
    <li>::
    {value} {childs}::
    {value}::
    </li>::
    </ul>
:. 

Ce qui donnerait :

GetEntryMetadataTreeIfExists

  .:GetEntryMetadataTreeIfExists::
    metadata_name::
    open_node::
    open_branch::
    value_childs::
    value::
    close_branch::
    close_node
:. 

Identique à GetEntryMetadataTree, mais le pattern est ignoré si la métadonnée indiquée n'existe pas.

GetEntryMinute

.:GetEntryMinute:.

Retourne la minute de création de la publication.

GetEntryMonth

.:GetEntryMonth:.

Retourne le mois de création de la publication.

GetEntryPath

.:GetEntryPath:.

Retourne le chemin relatif de la publication si VenC est configuré pour générer une page par publication. Sinon, le motif est ignoré et supprimé.

GetEntryTitle

.:GetEntryTitle:.

Retourne le titre de la publication.

GetEntryToC

.:GetEntryToC::open_ul::open_li::content::close_li::close_ul:.

Ce motif permet de générer une table des matières multiniveaux sur la base des titres présents dans le corps d'une publication Markdown.

Le motif a quelques variables qu'il est possible d'utiliser dans l'argument content :

Un usage classique ressemblerait à quelque chose comme :

 
.:GetEntryToC::
    <ul>::
    <li>::
    <a href="#{id}" class="toc_level_{level}">{title}</a>::
    </li>::
    </ul>
:.
 

Si dans la publication on trouvait les titres suivants :

# Title 1

## Title 1.1

### Title 1.1.1

## Title 1.2

Alors le code HTML généré ressemblerait à :

<ul>
    <li>
        <a href="#title-1" class="toc_level_1">Title 1</a>
        <ul>
            <li>
                <a href="#title-1-1" class="toc_level_2">Title 1.1</a>
                <ul>
                    <li>
                        <a href="#title-1-1-1" class="toc_level_3">Title 1.1.1</a>
                    </li>
                </ul>
            </li>
            <li>
                <a href="#title-1-2" class="toc_level_2">Title 1.2</a>
            </li>
        </ul>
    </li>
</ul>

Ce qui donne :

Quelques remarques :

GetEntryYear

.:GetEntryYear:.

Retourne l'année de création de la publication.

GetFlattenedEntryCategories

.:GetFlattenedEntryCategories::string::separator:.

Permet de récupérer sous la forme d'une liste chaque item de l'arbre des catégories d'une publication.

Si la génération des fils de publications triés par catégorie est désactivée, ce motif est ignoré.

Les arguments de ce motif sont :

Dans l'argument string vous pouvez utiliser les variables suivantes :

GetFlattenedEntryCategoriesFromBranches

 
.:GetFlattenedBlogCategoriesFromBranches::
  branches::
  sub_tree_string::
  sub_tree_separator::
  string::
  separator
:.
 

Identique à GetFlattenedBlogCategoriesFromBranches mais ne récupère que les catégories de la publication courante.

IfEntryMetadataIsTrue

.:IfEntryMetadataIsTrue::metadata_name::if_true[::if_false]:.

Permet d'afficher un texte ou un autre selon que la métadonnée indiquée est vraie ou fausse.

Ce motif possède les arguments suivants :