增加ico文件

This commit is contained in:
2026-03-05 14:43:00 +08:00
parent 4cab051f9c
commit 6117222625
15 changed files with 288 additions and 28 deletions
+78
View File
@@ -0,0 +1,78 @@
package utils
import (
"html/template"
"net/http"
"github.com/gin-gonic/gin/render"
)
// 模板函数
func templateFuncs() template.FuncMap {
return template.FuncMap{
"add": func(a, b int) int {
return a + b
},
"sub": func(a, b int) int {
return a - b
},
"html": func(s string) template.HTML {
return template.HTML(s)
},
}
}
// 自定义 HTMLRender,存储一个 map:页面名 -> *template.Template
type TemplateRenderer struct {
templates map[string]*template.Template
}
func (r *TemplateRenderer) Lookup(name string) *template.Template {
return r.templates[name]
}
func (r *TemplateRenderer) Instance(name string, data any) render.Render {
return &htmlRender{
tmpl: r.Lookup(name),
data: data,
name: name,
}
}
type htmlRender struct {
tmpl *template.Template
data any
name string
}
func (r *htmlRender) Render(w http.ResponseWriter) error {
r.WriteContentType(w)
return r.tmpl.ExecuteTemplate(w, "base.html", r.data)
}
func (r *htmlRender) WriteContentType(w http.ResponseWriter) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
}
// 初始化多模板
func LoadTemplates(theme string) *TemplateRenderer {
r := &TemplateRenderer{
templates: make(map[string]*template.Template),
}
templateDir := "templates/" + theme
// 为每个页面创建独立的模板组合
pages := []string{"index", "post", "page"}
for _, pageName := range pages {
// 组合 base.html 和具体页面模板
allFiles := []string{
templateDir + "/base.html",
templateDir + "/" + pageName + ".html",
}
tmpl := template.Must(template.New("").Funcs(templateFuncs()).ParseFiles(allFiles...))
r.templates[pageName] = tmpl
}
return r
}