tpl: Fix it so we always prefer internal codeblock rendering over render-codeblock-foo.html and similar

Fixes #13651
This commit is contained in:
Bjørn Erik Pedersen 2025-04-25 08:31:26 +02:00
parent 5c491409d3
commit 408791d657
No known key found for this signature in database
2 changed files with 33 additions and 9 deletions

View file

@ -130,17 +130,12 @@ func (this TemplateDescriptor) doCompare(category Category, isEmbedded bool, def
// One example of variant1 and 2 is for render codeblocks:
// variant1=codeblock, variant2=go (language).
if other.Variant1 != "" && other.Variant1 != this.Variant1 {
return w
}
if isEmbedded {
if other.Variant2 != "" && other.Variant2 != this.Variant2 {
if other.Variant1 != "" {
if other.Variant1 != this.Variant1 {
return w
}
} else {
// If both are set and different, no match.
if other.Variant2 != "" && this.Variant2 != "" && other.Variant2 != this.Variant2 {
if other.Variant2 != "" && other.Variant2 != this.Variant2 {
return w
}
}

View file

@ -1038,6 +1038,35 @@ _markup/render-codeblock-goat.html
b.AssertFileContent("public/index.html", "_markup/render-codeblock.html_markup/render-codeblock-goat.html")
}
func TestLookupCodeblockIssue13651(t *testing.T) {
t.Parallel()
files := `
-- hugo.toml --
-- layouts/all.html --
{{ .Content }}|
-- layouts/_markup/render-codeblock-foo.html --
render-codeblock-foo.html
-- content/_index.md --
---
---
§§§
printf "Hello, world!"
§§§
§§§ foo
printf "Hello, world again!"
§§§
`
b := hugolib.Test(t, files)
content := b.FileContent("public/index.html")
fooCount := strings.Count(content, "render-codeblock-foo.html")
b.Assert(fooCount, qt.Equals, 1)
}
// Issue #13515
func TestPrintPathWarningOnDotRemoval(t *testing.T) {
t.Parallel()