文件
Syntax
PAGE.File
Returns
hugolib.fileInfo
默认情况下,并非所有页面都由文件支持,包括顶级 章节 页面、 分类 页面和 术语 页面。根据定义,当文件不存在时,您无法检索文件信息。
要使用文件支持上述页面之一,请在相应的目录中创建一个 _index.md 文件。例如:
content/
└── books/
├── _index.md <-- 顶级章节页面
├── book-1.md
└── book-2.md
方法
BaseFileName
(string
) 文件名,不包括扩展名。
{{ with .File }}
{{ .BaseFileName }}
{{ end }}
ContentBaseName
(string
) 如果页面是分支或叶子捆绑包,则为包含目录的名称,否则为 TranslationBaseName
。
{{ with .File }}
{{ .ContentBaseName }}
{{ end }}
Dir
(string
) 文件路径,不包括文件名,相对于 content
目录。
{{ with .File }}
{{ .Dir }}
{{ end }}
Ext
(string
) 文件扩展名。
{{ with .File }}
{{ .Ext }}
{{ end }}
Filename
(string
) 绝对文件路径。
{{ with .File }}
{{ .Filename }}
{{ end }}
IsContentAdapter
New in v0.126.0(bool
) 报告文件是否是 内容适配器 。
{{ with .File }}
{{ .IsContentAdapter }}
{{ end }}
LogicalName
(string
) 文件名。
{{ with .File }}
{{ .LogicalName }}
{{ end }}
Path
(string
) 文件路径,相对于 content
目录。
{{ with .File }}
{{ .Path }}
{{ end }}
Section
(string
) 文件所在的顶级章节的名称。
{{ with .File }}
{{ .Section }}
{{ end }}
TranslationBaseName
(string
) 文件名,不包括扩展名和语言标识符。
{{ with .File }}
{{ .TranslationBaseName }}
{{ end }}
UniqueID
(string
) .File.Path
的 MD5 哈希值。
{{ with .File }}
{{ .UniqueID }}
{{ end }}
示例
考虑多语言项目中的以下内容结构:
content/
├── news/
│ ├── b/
│ │ ├── index.de.md <-- 叶子捆绑包
│ │ └── index.en.md <-- 叶子捆绑包
│ ├── a.de.md <-- 常规内容
│ ├── a.en.md <-- 常规内容
│ ├── _index.de.md <-- 分支捆绑包
│ └── _index.en.md <-- 分支捆绑包
├── _index.de.md
└── _index.en.md
使用英语站点:
常规内容 | 叶子捆绑包 | 分支捆绑包 | |
---|---|---|---|
BaseFileName | a.en | index.en | _index.en |
ContentBaseName | a | b | news |
Dir | news/ | news/b/ | news/ |
Ext | md | md | md |
Filename | /home/user/… | /home/user/… | /home/user/… |
IsContentAdapter | false | false | false |
LogicalName | a.en.md | index.en.md | _index.en.md |
Path | news/a.en.md | news/b/index.en.md | news/_index.en.md |
Section | news | news | news |
TranslationBaseName | a | index | _index |
UniqueID | 15be14b… | 186868f… | 7d9159d… |
防御性编码
网站上的一些页面可能没有由文件支持。例如:
- 顶级章节页面
- 分类页面
- 术语页面
如果没有支持文件,如果您尝试访问 .File
属性,Hugo 将抛出错误。要进行防御性编码,首先检查文件是否存在:
{{ with .File }}
{{ .ContentBaseName }}
{{ end }}