mirror of
				https://github.com/gohugoio/hugo.git
				synced 2024-05-11 05:54:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: File variables
 | |
| description: "Use File variables to access file-related values for each page that is backed by a file."
 | |
| categories: [variables and parameters]
 | |
| keywords: [files]
 | |
| menu:
 | |
|   docs:
 | |
|     parent: variables
 | |
|     weight: 40
 | |
| toc: true
 | |
| weight: 40
 | |
| aliases: [/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
 | |
| 
 | |
| ```text
 | |
| 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:
 | |
| 
 | |
| ```text
 | |
| WARN .File.ContentBaseName on zero object. Wrap it in if or with...
 | |
| ```
 | |
| 
 | |
| To code defensively:
 | |
| 
 | |
| ```go-html-template
 | |
| {{ with .File }}
 | |
|   {{ .ContentBaseName }}
 | |
| {{ end }}
 | |
| ```
 |