Add render template hooks for links and images

This commit also

* revises the change detection for templates used by content files in server mode.
* Adds a Page.RenderString method

Fixes #6545
Fixes #4663
Closes #6043
This commit is contained in:
Bjørn Erik Pedersen
2019-11-27 13:42:36 +01:00
parent 67f3aa72cf
commit e625088ef5
59 changed files with 2234 additions and 542 deletions

View File

@@ -201,9 +201,10 @@ type PageMetaProvider interface {
Weight() int
}
// PageRenderProvider provides a way for a Page to render itself.
// PageRenderProvider provides a way for a Page to render content.
type PageRenderProvider interface {
Render(layout ...string) template.HTML
Render(layout ...string) (template.HTML, error)
RenderString(args ...interface{}) (template.HTML, error)
}
// PageWithoutContent is the Page without any of the content methods.

View File

@@ -371,8 +371,12 @@ func (p *nopPage) RelRef(argsm map[string]interface{}) (string, error) {
return "", nil
}
func (p *nopPage) Render(layout ...string) template.HTML {
return ""
func (p *nopPage) Render(layout ...string) (template.HTML, error) {
return "", nil
}
func (p *nopPage) RenderString(args ...interface{}) (template.HTML, error) {
return "", nil
}
func (p *nopPage) ResourceType() string {

View File

@@ -446,7 +446,11 @@ func (p *testPage) RelRefFrom(argsm map[string]interface{}, source interface{})
return "", nil
}
func (p *testPage) Render(layout ...string) template.HTML {
func (p *testPage) Render(layout ...string) (template.HTML, error) {
panic("not implemented")
}
func (p *testPage) RenderString(args ...interface{}) (template.HTML, error) {
panic("not implemented")
}