mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
output: Fix taxonomy term base template lookup
To make sure it uses the base templates in _default as a last resort. Fixes #3856
This commit is contained in:
parent
d33563b5d7
commit
f88fe312cb
2 changed files with 28 additions and 6 deletions
|
@ -21,7 +21,9 @@ import (
|
||||||
"github.com/gohugoio/hugo/helpers"
|
"github.com/gohugoio/hugo/helpers"
|
||||||
)
|
)
|
||||||
|
|
||||||
const baseFileBase = "baseof"
|
const (
|
||||||
|
baseFileBase = "baseof"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
aceTemplateInnerMarkers = [][]byte{[]byte("= content")}
|
aceTemplateInnerMarkers = [][]byte{[]byte("= content")}
|
||||||
|
@ -170,11 +172,14 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
|
||||||
// For each of the steps above, it will first look in the project, then, if theme is set,
|
// For each of the steps above, it will first look in the project, then, if theme is set,
|
||||||
// in the theme's layouts folder.
|
// in the theme's layouts folder.
|
||||||
// Also note that the <current-path> may be both the project's layout folder and the theme's.
|
// Also note that the <current-path> may be both the project's layout folder and the theme's.
|
||||||
pairsToCheck := [][]string{
|
pairsToCheck := createPairsToCheck(baseTemplatedDir, baseFilename, currBaseFilename)
|
||||||
{baseTemplatedDir, currBaseFilename},
|
|
||||||
{baseTemplatedDir, baseFilename},
|
if strings.Contains(currBaseFilename, ".terms.") {
|
||||||
{"_default", currBaseFilename},
|
// We need to get from baseof.terms.html to baseof.html etc.
|
||||||
{"_default", baseFilename},
|
// See #3856
|
||||||
|
currBaseFilename = strings.Replace(currBaseFilename, ".terms", "", 1)
|
||||||
|
baseFilename = strings.Replace(baseFilename, ".terms", "", 1)
|
||||||
|
pairsToCheck = append(pairsToCheck, createPairsToCheck(baseTemplatedDir, baseFilename, currBaseFilename)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
Loop:
|
Loop:
|
||||||
|
@ -194,6 +199,15 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createPairsToCheck(baseTemplatedDir, baseFilename, currBaseFilename string) [][]string {
|
||||||
|
return [][]string{
|
||||||
|
{baseTemplatedDir, currBaseFilename},
|
||||||
|
{baseTemplatedDir, baseFilename},
|
||||||
|
{"_default", currBaseFilename},
|
||||||
|
{"_default", baseFilename},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func basePathsToCheck(path []string, layoutDir, workLayoutDir, themeLayoutDir string) []string {
|
func basePathsToCheck(path []string, layoutDir, workLayoutDir, themeLayoutDir string) []string {
|
||||||
// workLayoutDir will always be the most specific, so start there.
|
// workLayoutDir will always be the most specific, so start there.
|
||||||
pathsToCheck := []string{filepath.Join((append([]string{workLayoutDir}, path...))...)}
|
pathsToCheck := []string{filepath.Join((append([]string{workLayoutDir}, path...))...)}
|
||||||
|
|
|
@ -50,6 +50,14 @@ func TestLayoutBase(t *testing.T) {
|
||||||
OverlayFilename: "/sites/mysite/layouts/_default/single.html",
|
OverlayFilename: "/sites/mysite/layouts/_default/single.html",
|
||||||
MasterFilename: "/sites/mysite/layouts/_default/single-baseof.html",
|
MasterFilename: "/sites/mysite/layouts/_default/single-baseof.html",
|
||||||
}},
|
}},
|
||||||
|
// Issue #3856
|
||||||
|
{"Base Taxonomy Term", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: "taxonomy/tag.terms.html"}, true, "_default/baseof.html",
|
||||||
|
TemplateNames{
|
||||||
|
Name: "taxonomy/tag.terms.html",
|
||||||
|
OverlayFilename: "/sites/mysite/layouts/taxonomy/tag.terms.html",
|
||||||
|
MasterFilename: "/sites/mysite/layouts/_default/baseof.html",
|
||||||
|
}},
|
||||||
|
|
||||||
{"Base in theme", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1, ThemeDir: themeDir}, true,
|
{"Base in theme", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1, ThemeDir: themeDir}, true,
|
||||||
"mytheme/layouts/_default/baseof.html",
|
"mytheme/layouts/_default/baseof.html",
|
||||||
TemplateNames{
|
TemplateNames{
|
||||||
|
|
Loading…
Reference in a new issue