mirror of https://github.com/jlelse/GoBlog
Add methods to use configurable strings in templates (preparation for multiblog/multilang)
This commit is contained in:
parent
5db4067caf
commit
3f3ffb4bec
7
main.go
7
main.go
|
@ -24,12 +24,17 @@ func main() {
|
||||||
}
|
}
|
||||||
log.Println("Initialize server components...")
|
log.Println("Initialize server components...")
|
||||||
initMinify()
|
initMinify()
|
||||||
|
initMarkdown()
|
||||||
err = initTemplateAssets() // Needs minify
|
err = initTemplateAssets() // Needs minify
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
initMarkdown()
|
err = initTemplateStrings()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
err = initRendering() // Needs assets
|
err = initRendering() // Needs assets
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
|
@ -63,7 +63,8 @@ func initRendering() error {
|
||||||
}
|
}
|
||||||
return d.Format(format)
|
return d.Format(format)
|
||||||
},
|
},
|
||||||
"asset": assetFile,
|
"asset": assetFile,
|
||||||
|
"string": getDefaultTemplateString,
|
||||||
"include": func(templateName string, data interface{}) (template.HTML, error) {
|
"include": func(templateName string, data interface{}) (template.HTML, error) {
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
err := templates[templateName].ExecuteTemplate(buf, templateName, data)
|
err := templates[templateName].ExecuteTemplate(buf, templateName, data)
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gopkg.in/yaml.v3"
|
||||||
|
"io/ioutil"
|
||||||
|
"path"
|
||||||
|
)
|
||||||
|
|
||||||
|
const stringsDir = "templates/strings"
|
||||||
|
const defaultVariant = "default"
|
||||||
|
const variantFileExt = ".yaml"
|
||||||
|
|
||||||
|
var templateStrings map[string]map[string]string
|
||||||
|
|
||||||
|
func initTemplateStrings() error {
|
||||||
|
templateStrings = map[string]map[string]string{}
|
||||||
|
for _, variant := range []string{defaultVariant} {
|
||||||
|
variantStrings := map[string]string{}
|
||||||
|
fileContent, err := ioutil.ReadFile(path.Join(stringsDir, variant+variantFileExt))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = yaml.Unmarshal(fileContent, variantStrings)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
templateStrings[variant] = variantStrings
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getDefaultTemplateString(name string) string {
|
||||||
|
return getTemplateStringVariant(name, defaultVariant)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTemplateStringVariant(name, variant string) string {
|
||||||
|
return templateStrings[variant][name]
|
||||||
|
}
|
|
@ -6,8 +6,10 @@
|
||||||
<main class=h-entry>
|
<main class=h-entry>
|
||||||
<article>
|
<article>
|
||||||
{{ with title . }}<h1 class=p-name>{{ . }}</h1>{{ end }}
|
{{ with title . }}<h1 class=p-name>{{ . }}</h1>{{ end }}
|
||||||
{{ with .Published }}<p>Published on {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
{{ with .Published }}
|
||||||
{{ with .Updated }}<p>Updated on {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
<p>{{ string "publishedon" }} {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
||||||
|
{{ with .Updated }}
|
||||||
|
<p>{{ string "updatedon" }} {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
||||||
{{ with .Content }}
|
{{ with .Content }}
|
||||||
<div class=e-content>{{ md . }}</div>
|
<div class=e-content>{{ md . }}</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
publishedon: "Published on"
|
||||||
|
updatedon: "Updated on"
|
Loading…
Reference in New Issue