resources.FromString
语法
resources.FromString TARGETPATH STRING
返回
resource.Resource
resources.FromString
函数返回从字符串创建的资源,使用目标路径作为其缓存键来缓存结果。
当您调用资源的 Publish
、Permalink
或 RelPermalink
方法时,Hugo 会将该资源发布到目标路径。
假设您需要在 public
目录的根目录中发布一个名为“site.json”的文件,其中包含构建日期、用于构建站点的 Hugo 版本以及内容上次修改的日期。 例如
{
"build_date": "2025-01-16T19:14:41-08:00",
"hugo_version": "0.141.0",
"last_modified": "2025-01-16T19:14:46-08:00"
}
将此内容放置在您的 baseof.html 模板中
{{ if .IsHome }}
{{ $rfc3339 := "2006-01-02T15:04:05Z07:00" }}
{{ $m := dict
"hugo_version" hugo.Version
"build_date" (now.Format $rfc3339)
"last_modified" (site.Lastmod.Format $rfc3339)
}}
{{ $json := jsonify $m }}
{{ $r := resources.FromString "site.json" $json }}
{{ $r.Publish }}
{{ end }}
上面的例子
- 使用
dict
函数创建一个包含相关键值对的映射 - 使用
jsonify
函数将映射编码为 JSON 字符串 - 使用
resources.FromString
函数从 JSON 字符串创建资源 - 使用资源的
.Publish
方法将文件发布到public
目录的根目录
如果您的字符串包含模板操作,请将 resources.FromString
与 resources.ExecuteAsTemplate
结合使用。 重写上面的例子
{{ if .IsHome }}
{{ $string := `
{{ $rfc3339 := "2006-01-02T15:04:05Z07:00" }}
{{ $m := dict
"hugo_version" hugo.Version
"build_date" (now.Format $rfc3339)
"last_modified" (site.Lastmod.Format $rfc3339)
}}
{{ $json := jsonify $m }}
`
}}
{{ $r := resources.FromString "" $string }}
{{ $r = $r | resources.ExecuteAsTemplate "site.json" . }}
{{ $r.Publish }}
{{ end }}