将模板名称插入类

  • 本文关键字:插入 go go-templates
  • 更新时间 :
  • 英文 :


创建GO模板时,您可以为其命名,例如在此示例中," my_home_template":

var tmplHome = template.Must(template.New("my_home_template").Funcs(funcMap).ParseFiles("templates/base.tmpl", "templates/content_home.tmpl"))

如何获取该模板名称并在实际模板文件中使用?

最终我只想定义一个方便的CSS课程,例如:

<body class="my_home_template">

这是一个工作解决方案,请接受Mkopriva的建议:

执行模板时,请传递一些带有虚拟数据的自定义参数。在这里,我只是创建一个" pagehome"参数以传递到模板,而值是一个简单的" 1",但它可以是任何值:

tmplHome.ExecuteTemplate(w, "base", map[string]interface{}{"PageHome": "1", "Data": events, "UserFirstName": &u.FirstName, "UserProfilePic": &u.ProfilePic})

然后,在模板本身内,一个简单的if语句检查参数是否存在,并相应地做一些事情:

{{ if .PageHome }}
    <body class="PageHome">
{{ else }}
    <body>
{{ end }}

我所有的其他模板执行根本都不会传递" pagehome"参数,因此if语句永远不会对其进行真实。

可能有一个更高级的解决方案使用模板函数映射使用函数,并且在所有模板执行中具有一致的" pageType":"某物"参数,但是最终您仍然必须定义每个模板执行和执行的参数如果您的模板中的语句在您的模板中,仍然必须建立。

最新更新