Использование шаблонов с разделителями прекрасно работает при использовании template.New("...").Delims("[[", "]]").Parse()
Однако, я не могу понять, как получить тот же результат с template.ParseFiles()
Golang HTML/шаблоны: ParseFiles с обычаем Delims
tmpl, err := template.ParseFiles("base.tmpl", "homepage/inner.tmpl")
if err != nil { panic(err) }
tmpl.Delims("[[", "]]")
p := new(Page)
err = tmpl.Execute(os.Stdout, p)
if err != nil { panic(err) }
У меня нет никаких ошибок, но разделители не изменяются.
tmpl, err := template.ParseFiles("base.tmpl", "homepage/inner.tmpl")
t := tmpl.Lookup("base.tmpl").Delims("[[", "]]")
p := new(Page)
err = t.Execute(os.Stdout, p)
if err != nil { panic(err) }
Это приводит к такому же результату.
В случае, если это уместно, мне нужно встроить небольшое угловое приложение на определенную страницу моего сайта.
Кроме того, у меня есть базовый шаблон с общей HTML структуры, которые я объединить с страницы конкретного шаблона с ParseFiles(), что приводит к этой схеме:
/templates/base.tmpl
/templates/homepage/inner.tmpl
/templates/otherpage/inner.tmpl
Возможно ли это вообще? Если да, то что я делаю неправильно?
Похоже, что вы должны иметь возможность делать 'template.New (...). Delims (...). ParseFiles (. ..) 'из [docs] (http://golang.org/pkg/html/template/#Template.ParseFiles). Это второй ParseFiles в индексе, а не первый. – twotwotwo
Действительно! Хотя я работал над этим довольно долгое время, я понял это через несколько минут после публикации вопроса. Мне трудно обернуть голову вокруг этого пакета :) Спасибо за вашу помощь! –
Для будущих читателей еще одна деталь, которой мне не хватало, это то, что мне нужно всегда называть шаблон «base.tmpl» для любой страницы с помощью template.New («base.tmpl»). Я предполагаю, что это потому, что это имя корневого шаблона для использования в наборе шаблонов синтаксического анализа. –