3.5.2.2 Créer une liste d'archives

Avant toute chose, comme nous l'avons vu précédemment, il faut que dans votre fichier de configuration l'option disable_archives soit configurée correctement.

Entre les balises header que nous avons ajoutées à la fin du fichier header.html, nous allons ajouter le code suivant en utilisant le motif ForBlogArchives :

.:ForBlogArchives::{value}:: :. 

L'idée ici est d'itérer à travers la liste des archives de VenC, afin de récupérer la valeur de chaque élément de cette liste. Ici, la valeur correspond au nom de l'archive courante. Ce nom est défini par le format de date que vous avez indiqué dans votre fichier de configuration principale avec l'option archives_directory_name.

Mais évidemment le code ci-dessus ne suffit pas, puisque ce que nous voulons c'est une liste HTML de liens vers les archives. Du coup, faisons plutôt quelque chose comme ça :

<ul id="blogarchives">
  .:ForBlogArchives::
  <li class="blogarchivesitem">
    <a href="{path}" title="{value} ({count})">{value}</a>
  </li>
  ::
  :. 
</ul>

Ça n'a plus la même tête, hein ? En effet :

Avec ça, VenC va nous générer ce que nous voulons.

Cependant comme nous l'avons dit dans le chapitre 3.5.2.1, la bonne pratique est de faire en sorte que le thème, si l'on veut le distribuer, s'adapte à la configuration du blog. En effet, si jamais les archives sont désactivées, alors ForBlogArchives ne produira rien et on se retrouvera avec une paire de balises ul vide. Ça n'est pas très propre. C'est d'autant plus problématique quand la liste est décorée avec un titre ou est contenue dans une boîte.

Pour pallier ces problèmes, VenC permet de tester la configuration du projet afin d'adapter le thème à la situation avec le motif IfBlogMetadataIsTrue.

 
.:IfBlogMetadataIsTrue::disable_archives::
    <!-- Bloc HTML à conserver si la variable vaut `true` -->
    ::
    <!-- Bloc HTML à conserver si la variable vaut `false` -->
:.
 

Ici, ce qu'on teste c'est l'option disable_archives avec IfBlogMetadataIsTrue. Si elle vaut true, alors on ne fait rien. Sinon, on met le bloc de code que nous avons écrit tout à l'heure, ce qui nous donne au final :

 
.:IfBlogMetadataIsTrue::disable_archives::
    <!-- Pas de liste d'archives à afficher -->
::
    <ul id="blogarchives">
    .:ForBlogArchives::
          <li class="blogarchivesitem">
            <a href="{path}" title="{value} ({count})">{value}</a>
          </li>:
          ::
    :.
    </ul>
:.
 

Avec ça, on est vraiment bon et le thème que vous construisez sera modulable et capable de s'adapter à vos besoins, mais aussi à la configuration de ceux qui utiliseront votre thème !