resources.FromString
Syntax
resources.FromString TARGETPATH STRING
Returns
resource.Resource
当你调用.Publish
、.Permalink
或.RelPermalink
方法时,Hugo会将资源发布到目标路径。资源会被缓存,使用目标路径作为缓存键。
假设你需要发布一个名为"site.json"的文件到你的公共目录根目录中,该文件包含构建日期、用于构建站点的Hugo版本以及内容上次修改的日期。例如:
{
"build_date": "2023-10-03T10:50:40-07:00",
"hugo_version": "0.120.0",
"last_modified": "2023-10-02T15:21:27-07: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.LastChange.Format $rfc3339)
}}
{{ $json := jsonify $m }}
{{ $r := resources.FromString "site.json" $json }}
{{ $r.Publish }}
{{ end }}
上述示例:
- 使用
dict
函数创建包含相关键/值对的映射 - 使用
jsonify
函数将映射编码为JSON字符串 - 使用
resources.FromString
函数从JSON字符串创建资源 - 使用资源的
.Publish
方法将文件发布到公共目录的根目录下
如果你的字符串包含模板操作,请将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.LastChange.Format $rfc3339)
}}
{{ $json := jsonify $m }}
`
}}
{{ $r := resources.FromString "" $string }}
{{ $r = $r | resources.ExecuteAsTemplate "site.json" . }}
{{ $r.Publish }}
{{ end }}