hugo/docs/content/en/variables/files.md
2023-05-22 16:47:07 +02:00

2.6 KiB

title description categories keywords menu toc weight aliases
File Variables Use File variables to access file-related values for each page that is backed by a file.
variables and params
files
docs
parent weight
variables 40
true 40
/variables/file-variables/

Variables

{{% note %}} The path separators (slash or backslash) in .File.Path, .File.Dir, and .File.Filename depend on the operating system. {{% /note %}}

.File.Path
(string) The file path, relative to the content directory.
.File.Dir
(string) The file path, excluding the file name, relative to the content directory.
.File.LogicalName
(string) The file name.
.File.BaseFileName
(string) The file name, excluding the extension.
.File.TranslationBaseName
(string) The file name, excluding the extension and language identifier.
.File.Ext
(string) The file extension.
.File.Lang
(string) The language associated with the given file.
.File.ContentBaseName
(string) If the page is a branch or leaf bundle, the name of the containing directory, else the .TranslationBaseName.
.File.Filename
(string) The absolute file path.
.File.UniqueID
(string) The MD5 hash of .File.Path.

Examples

content/
├── news/
│   ├── b/
│   │   ├── index.de.md   <-- leaf bundle
│   │   └── index.en.md   <-- leaf bundle
│   ├── a.de.md           <-- regular content
│   ├── a.en.md           <-- regular content
│   ├── _index.de.md      <-- branch bundle
│   └── _index.en.md      <-- branch bundle
├── _index.de.md
└── _index.en.md

With the content structure above, the .File objects for the English pages contain the following properties:

  regular content leaf bundle branch bundle
Path news/a.en.md news/b/index.en.md news/_index.en.md
Dir news/ news/b/ news/
LogicalName a.en.md index.en.md _index.en.md
BaseFileName a.en index.en _index.en
TranslationBaseName a index _index
Ext md md md
Lang en en en
ContentBaseName a b news
Filename /home/user/... /home/user/... /home/user/...
UniqueID 15be14b... 186868f... 7d9159d...

Defensive coding

Some of the pages on a site may not be backed by a file. For example:

  • Top level section pages
  • Taxonomy pages
  • Term pages

Without a backing file, Hugo will throw a warning if you attempt to access a .File property. For example:

WARN .File.ContentBaseName on zero object. Wrap it in if or with...

To code defensively:

{{ with .File }}
  {{ .ContentBaseName }}
{{ end }}