mirror of https://github.com/gohugoio/hugo
77 lines
2.4 KiB
Markdown
77 lines
2.4 KiB
Markdown
---
|
|
title: resources.FromString
|
|
description: Returns a resource created from a string.
|
|
categories: []
|
|
keywords: []
|
|
params:
|
|
functions_and_methods:
|
|
aliases: []
|
|
returnType: resource.Resource
|
|
signatures: [resources.FromString TARGETPATH STRING]
|
|
---
|
|
|
|
The `resources.FromString` function returns a resource created from a string, caching the result using the target path as its cache key.
|
|
|
|
Hugo publishes the resource to the target path when you call its [`Publish`], [`Permalink`], or [`RelPermalink`] methods.
|
|
|
|
[`publish`]: /methods/resource/publish/
|
|
[`permalink`]: /methods/resource/permalink/
|
|
[`relpermalink`]: /methods/resource/relpermalink/
|
|
|
|
Let's say you need to publish a file named "site.json" in the root of your `public` directory, containing the build date, the Hugo version used to build the site, and the date that the content was last modified. For example:
|
|
|
|
```json
|
|
{
|
|
"build_date": "2025-01-16T19:14:41-08:00",
|
|
"hugo_version": "0.141.0",
|
|
"last_modified": "2025-01-16T19:14:46-08:00"
|
|
}
|
|
```
|
|
|
|
Place this in your baseof.html template:
|
|
|
|
```go-html-template
|
|
{{ 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 }}
|
|
```
|
|
|
|
The example above:
|
|
|
|
1. Creates a map with the relevant key-value pairs using the [`dict`] function
|
|
1. Encodes the map as a JSON string using the [`jsonify`] function
|
|
1. Creates a resource from the JSON string using the `resources.FromString` function
|
|
1. Publishes the file to the root of the `public` directory using the resource's `.Publish` method
|
|
|
|
Combine `resources.FromString` with [`resources.ExecuteAsTemplate`] if your string contains template actions. Rewriting the example above:
|
|
|
|
```go-html-template
|
|
{{ 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 }}
|
|
```
|
|
|
|
[`dict`]: /functions/collections/dictionary/
|
|
[`jsonify`]: /functions/encoding/jsonify/
|
|
[`resources.ExecuteAsTemplate`]: /functions/resources/executeastemplate/
|