Fichier Local
Traverser les Fichiers Locaux
Avec les fonctions de template readDir et readFile d’Hugo, vous pouvez traverser vos fichiers de site web sur votr serveru.
Utilisez readDir
La fonction readDir renvoie une liste de os.FileInfo. Cela prend le path du fichier comme un argument de chaîne unique. Ce chemin peut être vers n’importe quel dossier de votre site web (par ex, comme trouvé sur votre système de fichier du serveur).
Que le chemin soit absolu ou relatif n’importe pas parce que —au moins pour readDir—la racine de votre site web (typiquement ./public/) devient à la fois :
- La racine du système de fichier
- Le dossier de travail en court
Exemple readDir : Lister les Fichiers d’un Dossier
Ce shortcode crée un lien vers chacun des fichiers dans un répertoire —affiché sous le nom de base du fichier—accompagné de la taille du fichier en bits.
{{- $pathURL := .Get "pathURL" -}}
{{- $path := .Get "path" -}}
{{- $files := readDir $path -}}
<table>
<th>Size in bytes</th>
<th>Name</th>
{{- range $files }}
<tr>
<td>{{ .Size }}</td>
<td><a href="{{ $pathURL }}{{ .Name | relURL }}" target="_blank"> {{ .Name }}</a></td>
</tr>
{{- end }}
</table>
Vous pouvez alors appeler le shortcode comme suit dans le marquage de votre contenu :
{{< directoryindex path="/static/css" pathURL="/css" >}}
Le shortcode au-dessus fait partie du code pour les docs Hugo. Ici il liste les fichiers CSS de ce site :
| Size in bytes | Name |
|---|---|
| 134328 | app.bundle.js |
| 105201 | main.css |
Attention :
Utilisez readFile
La fonction readfile lit un fichier à partir du disque et le convertit dans une chaîne à manipuler par d’autres fonctions Hugo ou ajoutée comme telle. readFile prend le fichier, y compris le chemin, comme un argument passé à la fonction.
Pour utiliser la fonction readFile dans vos modèles, assurez-vous que le chemin est relatif à votre répertoire racine de projet Hugo :
{{ readFile "/content/templates/local-file-templates" }}
readFile Exemple : Ajouter un Fichier Projet au Contenu
Comme readFile est une fonction, il n’est disponible que dans vos modèles et non sur votre contenu. Cependant, nous pouvons créer un modèle de code court qui appelle readFile, passe le premier argument à travers la fonction, puis permet à un second argument optionnel d’envoyer le fichier via le processeur Blackfriday. Le modèle d’ajout de ce shortcode à votre contenu sera le suivant :
{{< readfile file="/path/to/local/file.txt" markdown="true" >}}
Voici la modélisation pour notre nouveau shortcode readfile :
{{$file := .Get "file"}}
{{- if eq (.Get "markdown") "true" -}}
{{- $file | readFile | markdownify -}}
{{- else -}}
{{ $file | readFile | safeHTML }}
{{- end -}}
Ce shortcode readfile fait aussi partie de la doc Hugo. Aussi en est-il de testing.txt, qui appellera dans cet exemple en le passant notre nouveau shortcode readfile comme suit :
{{< readfile file="/content/readfiles/testing.txt" >}}
L’output “string” pour cette déclaration de shortcode sera le suivant :
##### Hello World!
Test un, **deux**, *trois*. N'effacez pas ce fichier échantillon utilisé dans la section [templates](/templates/) de la documentation Hugo.
Néanmoins, si nous voulons que Hugo passe la chaîne dans Blackfiday, nous ajouterions le paramètre optionnel markdown="true" :
{{< readfile file="/content/readfiles/testing.txt" markdown="true" >}}
Et voici le résultat tel qu’appelé directement dans les docs Hugo et rendu pour affichage :
Hello World!
Test un, deux, trois. N’effacez pas ce fichier échantillon utilisé dans la section templates de la documentation Hugo.