mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-31 22:41:53 +02:00
hugolib: Handle shortcode per output format
This commit allows shortcode per output format, a typical use case would be the special AMP media tags. Note that this will only re-render the "overridden" shortcodes and only in pages where these are used, so performance in the normal case should not suffer. Closes #3220
This commit is contained in:
@@ -14,7 +14,9 @@
|
||||
package tplimpl
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"html/template"
|
||||
"path"
|
||||
"strings"
|
||||
texttemplate "text/template"
|
||||
|
||||
@@ -39,6 +41,7 @@ const (
|
||||
|
||||
var (
|
||||
_ tpl.TemplateHandler = (*templateHandler)(nil)
|
||||
_ tpl.TemplateDebugger = (*templateHandler)(nil)
|
||||
_ tpl.TemplateFuncsGetter = (*templateHandler)(nil)
|
||||
_ tpl.TemplateTestMocker = (*templateHandler)(nil)
|
||||
_ tpl.TemplateFinder = (*htmlTemplates)(nil)
|
||||
@@ -88,6 +91,11 @@ func (t *templateHandler) addError(name string, err error) {
|
||||
t.errors = append(t.errors, &templateErr{name, err})
|
||||
}
|
||||
|
||||
func (t *templateHandler) Debug() {
|
||||
fmt.Println("HTML templates:\n", t.html.t.DefinedTemplates())
|
||||
fmt.Println("\n\nText templates:\n", t.text.t.DefinedTemplates())
|
||||
}
|
||||
|
||||
// PrintErrors prints the accumulated errors as ERROR to the log.
|
||||
func (t *templateHandler) PrintErrors() {
|
||||
for _, e := range t.errors {
|
||||
@@ -293,6 +301,13 @@ func (t *htmlTemplates) addTemplateIn(tt *template.Template, name, tpl string) e
|
||||
return err
|
||||
}
|
||||
|
||||
if strings.Contains(name, "shortcodes") {
|
||||
// We need to keep track of one ot the output format's shortcode template
|
||||
// without knowing the rendering context.
|
||||
withoutExt := strings.TrimSuffix(name, path.Ext(name))
|
||||
tt.AddParseTree(withoutExt, templ.Tree)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -315,6 +330,13 @@ func (t *textTemplates) addTemplateIn(tt *texttemplate.Template, name, tpl strin
|
||||
return err
|
||||
}
|
||||
|
||||
if strings.Contains(name, "shortcodes") {
|
||||
// We need to keep track of one ot the output format's shortcode template
|
||||
// without knowing the rendering context.
|
||||
withoutExt := strings.TrimSuffix(name, path.Ext(name))
|
||||
tt.AddParseTree(withoutExt, templ.Tree)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user