mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
3d9235e8fc
commit
f8c67f93e1
4 changed files with 26 additions and 11 deletions
|
@ -87,6 +87,8 @@ Note that this is only supported with the [Goldmark](#goldmark) renderer.
|
|||
|
||||
Render Hooks allow custom templates to override markdown rendering functionality. You can do this by creating templates with base names `render-{feature}` in `layouts/_default/_markup`.
|
||||
|
||||
You can also create type/section specific hooks in `layouts/[type/section]/_markup`, e.g.: `layouts/blog/_markup`.{{< new-in "0.71.0" >}}
|
||||
|
||||
The features currently supported are:
|
||||
|
||||
* `image`
|
||||
|
|
|
@ -50,6 +50,7 @@ Inner Block: {{ .Inner | .Page.RenderString (dict "display" "block" ) }}
|
|||
b.WithTemplatesAdded("docs/_markup/render-link.html", `Link docs section: {{ .Text | safeHTML }}|END`)
|
||||
b.WithTemplatesAdded("_default/_markup/render-image.html", `IMAGE: {{ .Page.Title }}||{{ .Destination | safeURL }}|Title: {{ .Title | safeHTML }}|Text: {{ .Text | safeHTML }}|END`)
|
||||
b.WithTemplatesAdded("_default/_markup/render-heading.html", `HEADING: {{ .Page.Title }}||Level: {{ .Level }}|Anchor: {{ .Anchor | safeURL }}|Text: {{ .Text | safeHTML }}|END`)
|
||||
b.WithTemplatesAdded("docs/_markup/render-heading.html", `Docs Level: {{ .Level }}|END`)
|
||||
|
||||
b.WithContent("customview/p1.md", `---
|
||||
title: Custom View
|
||||
|
@ -133,7 +134,15 @@ some text
|
|||
## Heading Level 2
|
||||
|
||||
### Heading Level 3
|
||||
`)
|
||||
`,
|
||||
"docs/p8.md", `---
|
||||
title: Doc With Heading
|
||||
---
|
||||
|
||||
# Docs lvl 1
|
||||
|
||||
`,
|
||||
)
|
||||
|
||||
for i := 1; i <= 30; i++ {
|
||||
// Add some content with no shortcodes or links, i.e no templates needed.
|
||||
|
@ -146,7 +155,7 @@ title: No Template
|
|||
}
|
||||
counters := &testCounters{}
|
||||
b.Build(BuildCfg{testCounters: counters})
|
||||
b.Assert(int(counters.contentRenderCounter), qt.Equals, 44)
|
||||
b.Assert(int(counters.contentRenderCounter), qt.Equals, 45)
|
||||
|
||||
b.AssertFileContent("public/blog/p1/index.html", `
|
||||
<p>Cool Page|https://www.google.com|Title: Google's Homepage|Text: First Link|END</p>
|
||||
|
@ -194,6 +203,10 @@ SHORT3|
|
|||
b.AssertFileContent("public/blog/p4/index.html", `IMAGE EDITED: /images/Dragster.jpg|`)
|
||||
b.AssertFileContent("public/blog/p6/index.html", "<p>Inner Link: EDITED: https://www.gohugo.io|</p>")
|
||||
b.AssertFileContent("public/blog/p7/index.html", "HEADING: With Headings||Level: 1|Anchor: heading-level-1|Text: Heading Level 1|END<p>some text</p>\nHEADING: With Headings||Level: 2|Anchor: heading-level-2|Text: Heading Level 2|ENDHEADING: With Headings||Level: 3|Anchor: heading-level-3|Text: Heading Level 3|END")
|
||||
|
||||
// https://github.com/gohugoio/hugo/issues/7349
|
||||
b.AssertFileContent("public/docs/p8/index.html", "Docs Level: 1")
|
||||
|
||||
}
|
||||
|
||||
func TestRenderHooksDeleteTemplate(t *testing.T) {
|
||||
|
|
|
@ -134,15 +134,16 @@ func resolvePageTemplate(d LayoutDescriptor, f Format) []string {
|
|||
|
||||
b := &layoutBuilder{d: d, f: f}
|
||||
|
||||
if d.RenderingHook {
|
||||
b.addLayoutVariations(d.Kind)
|
||||
} else {
|
||||
if d.Layout != "" {
|
||||
if !d.RenderingHook && d.Layout != "" {
|
||||
b.addLayoutVariations(d.Layout)
|
||||
}
|
||||
if d.Type != "" {
|
||||
b.addTypeVariations(d.Type)
|
||||
}
|
||||
|
||||
if d.RenderingHook {
|
||||
b.addLayoutVariations(d.Kind)
|
||||
b.addSectionType()
|
||||
}
|
||||
|
||||
switch d.Kind {
|
||||
|
|
|
@ -128,9 +128,8 @@ func TestLayout(t *testing.T) {
|
|||
[]string{"404.html.html", "404.html"}, 2},
|
||||
{"404, HTML baseof", LayoutDescriptor{Kind: "404", Baseof: true}, "", htmlFormat,
|
||||
[]string{"404-baseof.html.html", "baseof.html.html", "404-baseof.html", "baseof.html", "_default/404-baseof.html.html", "_default/baseof.html.html", "_default/404-baseof.html", "_default/baseof.html"}, 8},
|
||||
// We may add type support ... later.
|
||||
{"Content hook", LayoutDescriptor{Kind: "render-link", RenderingHook: true, Layout: "mylayout", Section: "blog"}, "", ampType,
|
||||
[]string{"_default/_markup/render-link.amp.html", "_default/_markup/render-link.html"}, 2},
|
||||
[]string{"blog/_markup/render-link.amp.html", "blog/_markup/render-link.html", "_default/_markup/render-link.amp.html", "_default/_markup/render-link.html"}, 4},
|
||||
} {
|
||||
c.Run(this.name, func(c *qt.C) {
|
||||
l := NewLayoutHandler()
|
||||
|
|
Loading…
Reference in a new issue