From: Bjørn Erik Pedersen Date: Mon, 2 Jul 2018 08:33:55 +0000 (+0200) Subject: output: Fix the shortcodes/partials vs base template detection X-Git-Tag: v0.43~22 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a5d0a57e6bdab583134a68c035aac9b3007f006a;p=brevno-suite%2Fhugo output: Fix the shortcodes/partials vs base template detection Fixes #4897 --- diff --git a/output/layout_base.go b/output/layout_base.go index 31e1194f..d3c52347 100644 --- a/output/layout_base.go +++ b/output/layout_base.go @@ -58,6 +58,10 @@ type TemplateLookupDescriptor struct { ContainsAny func(filename string, subslices [][]byte) (bool, error) } +func isShorthCodeOrPartial(name string) bool { + return strings.HasPrefix(name, "shortcodes/") || strings.HasPrefix(name, "partials/") +} + func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) { name := filepath.ToSlash(d.RelPath) @@ -104,13 +108,13 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) { } // Ace and Go templates may have both a base and inner template. - pathDir := filepath.Dir(d.RelPath) - - if ext == "amber" || strings.HasSuffix(pathDir, "partials") || strings.HasSuffix(pathDir, "shortcodes") { + if ext == "amber" || isShorthCodeOrPartial(name) { // No base template support return id, nil } + pathDir := filepath.Dir(d.RelPath) + innerMarkers := goTemplateInnerMarkers var baseFilename string diff --git a/output/layout_base_test.go b/output/layout_base_test.go index 71940752..25294c91 100644 --- a/output/layout_base_test.go +++ b/output/layout_base_test.go @@ -75,6 +75,18 @@ func TestLayoutBase(t *testing.T) { Name: "partials/menu.html", OverlayFilename: "partials/menu.html", }}, + {"Partial in subfolder", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: "/partials/sub/menu.html"}, true, + "_default/baseof.html", + TemplateNames{ + Name: "partials/sub/menu.html", + OverlayFilename: "/partials/sub/menu.html", + }}, + {"Shortcode in subfolder", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: "shortcodes/sub/menu.html"}, true, + "_default/baseof.html", + TemplateNames{ + Name: "shortcodes/sub/menu.html", + OverlayFilename: "shortcodes/sub/menu.html", + }}, {"AMP, no base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPathAmp}, false, "", TemplateNames{ Name: "_default/single.amp.html",