2015-06-26 06:23:37 -04:00
|
|
|
---
|
|
|
|
aliases:
|
|
|
|
- /doc/localfiles/
|
2016-09-10 18:23:23 -04:00
|
|
|
lastmod: 2016-09-12
|
2015-06-26 06:23:37 -04:00
|
|
|
date: 2015-06-12
|
|
|
|
menu:
|
|
|
|
main:
|
|
|
|
parent: extras
|
2016-12-11 19:55:36 -05:00
|
|
|
next: /extras/urls
|
2015-06-26 06:23:37 -04:00
|
|
|
notoc: true
|
2016-12-11 19:55:36 -05:00
|
|
|
prev: /extras/toc
|
2015-06-26 06:23:37 -04:00
|
|
|
title: Traversing Local Files
|
|
|
|
---
|
|
|
|
## Traversing Local Files
|
|
|
|
|
2016-09-10 18:23:23 -04:00
|
|
|
Using Hugo's function `readDir`,
|
|
|
|
you can traverse your web site's files on your server.
|
|
|
|
## Using _readDir_
|
|
|
|
|
|
|
|
The `readDir` function returns an array
|
|
|
|
of [`os.FileInfo`](https://golang.org/pkg/os/#FileInfo).
|
|
|
|
It takes a single, string argument: a path.
|
|
|
|
This path can be to any directory of your web site
|
|
|
|
(as found on your server's filesystem).
|
|
|
|
|
|
|
|
Whether the path is absolute or relative makes no difference,
|
|
|
|
because—at least for `readDir`—the root of your web site (typically `./public/`)
|
|
|
|
in effect becomes both:
|
|
|
|
|
|
|
|
1. The filesystem root; and
|
|
|
|
1. The current working directory.
|
|
|
|
|
|
|
|
## New Shortcode
|
|
|
|
|
|
|
|
So, let's create a new shortcode using `readDir`:
|
|
|
|
|
|
|
|
**layouts/shortcodes/directoryindex.html**
|
|
|
|
```html
|
|
|
|
{{< readfile "layouts/shortcodes/directoryindex.html" >}}
|
|
|
|
```
|
|
|
|
For the files in any given directory,
|
|
|
|
this shortcode usefully lists their basenames and sizes,
|
|
|
|
while providing links to them.
|
|
|
|
|
|
|
|
Already—actually—this shortcode
|
|
|
|
has been included in this very web site.
|
|
|
|
So, let's list some of its CSS files.
|
|
|
|
(If you click on their names, you can reveal the contents.)
|
|
|
|
{{< directoryindex path="/static/css" pathURL="/css" >}}
|
|
|
|
<br />
|
|
|
|
This is the call that rendered the above output:
|
|
|
|
```html
|
|
|
|
{{</* directoryindex path="/static/css" pathURL="/css" */>}}
|
|
|
|
```
|
|
|
|
By the way,
|
|
|
|
regarding the pathURL argument, the initial slash `/` is important.
|
|
|
|
Otherwise, it becomes relative to the current web page.
|