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 }}