# JEKYLL: Les fichiers statiques {{INLINETOC}} Un fichier statique est un fichier qui ne contient aucun élément permettant de construire dynamiquement les pages. Cela inclut les images, les PDF et tout autre contenu non rendu. # Méthode pour accéder aux fichiers statiques Les fichiers statiques sont accessibles dans Liquid via **site.static_files** ## Métadonnées par défaut ^ Variable ^ Description ^ | file.path | chemin relatif au fichier, par exemple /assets/img/image.jpg | | file.modified_time | date ou le fichier a été modifié pour la dernière fois, par exemple 2016-04-01 16:35:26 +0200 | | file.name | nom du fichier, par exemple image.jpg | | file.basename | nom de base du fichier, par exemple image pour image.jpg | | file.extname | nom de l'extension du fichier, par exemple .jpg pour image.jpg | **Note**: le 'file' peut être n'importe quoi. C'est une variable définie de manière arbitraire utilisée dans une logique personnelle (comme dans une boucle for). Ce n'est pas une globale du site ou une variable de page. ## Ajouter une métadonnée aux fichiers statiques Bien que l'on ne puisse pas ajouter directement de valeurs de premier plan à des fichiers statiques, on peut définir ces valeurs via la propriété par défaut dans le fichier de configuration. Lorsque Jekyll construit le site, il utilisera les valeurs ainsi définies. **Par exemple**: Dans le fichier _config.yml on ajouter les valeurs suivantes à la propriété par defaults pour identifier les fichiers images. defaults : - scope : path : " assets/img" values : image : true Cela suppose que les images (fichiers statiques) du site sont stockées dans un dossier assets/img où . Lorsque Jekyll construit le site, chaque image est traitée comme si elle avait la valeur **image: true** . Maintenant on peut répertorier toutes les images contenues dans assets/img en utilisant une boucle for pour rechercher dans l'objet static_files et obtenir tous les fichiers statiques ayant cette propriété: {% assign image_files = site.static_files | where: "image", true %} {% for myimage in image_files %} {{ myimage.path }} {% endfor %} # Exemple : menu dynamique de fichiers statiques On souhate construire un menu dynamique à partir enutilisant l'arborescence des dossiers dans lesquels sont stockées les pages html préconstruites. ## Organisation des fichiers statiques Par exemple les pages html sont stockées dans des sous dossiers du dossier **_pages**: ├── _pages/ │ ├── rubrique1/ │ │ ├── page1-1.html │ │ └── page1-2.html │ └── rubrique2/ │ ├── page2-1.html │ └── page2-2.html Le menu final doit ressembler à cela * rubrique1 * page1-1 * page1-2 * rubrique2 * page2-1 * page2-2 ## Utilisation d'une boucle En utilisant Liquid 1, on peut parcourir en boucle **site.static_files** {% for node in site.static_files %} ... on ne traite que les objets dans _pages {% if node.path contains '_pages' %} ... on découpe le path de chaque objet en array contenant en [1] le dossier racine, [2] les sous dossiers, [3] le nom de l'objet {% assign node_url_parts = node.path | split: '/' %} ... pour chaque élément d'index [2] dans le path on construit l'entrée des rubriques {% if node_url_parts[2] != prev_url_parts %} {% if prev_url_parts != "" %} {% endif %} {% assign prev_url_parts = node_url_parts[2] %}