mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-14 20:33:59 +02:00
@@ -323,6 +323,9 @@ func (ti *TemplInfo) findBestMatchBaseof(s *TemplateStore, d1 TemplateDescriptor
|
|||||||
}
|
}
|
||||||
|
|
||||||
ti.baseVariants.WalkPath(k1, func(k2 string, v map[TemplateDescriptor]*TemplWithBaseApplied) (bool, error) {
|
ti.baseVariants.WalkPath(k1, func(k2 string, v map[TemplateDescriptor]*TemplWithBaseApplied) (bool, error) {
|
||||||
|
if !s.inPath(k1, k2) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
slashCountK2 := strings.Count(k2, "/")
|
slashCountK2 := strings.Count(k2, "/")
|
||||||
distance := slashCountK1 - slashCountK2
|
distance := slashCountK1 - slashCountK2
|
||||||
|
|
||||||
@@ -615,6 +618,9 @@ func (s *TemplateStore) LookupShortcode(q TemplateQuery) *TemplInfo {
|
|||||||
defer s.putBest(best)
|
defer s.putBest(best)
|
||||||
|
|
||||||
s.treeShortcodes.WalkPath(k1, func(k2 string, m map[string]map[TemplateDescriptor]*TemplInfo) (bool, error) {
|
s.treeShortcodes.WalkPath(k1, func(k2 string, m map[string]map[TemplateDescriptor]*TemplInfo) (bool, error) {
|
||||||
|
if !s.inPath(k1, k2) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
slashCountK2 := strings.Count(k2, "/")
|
slashCountK2 := strings.Count(k2, "/")
|
||||||
distance := slashCountK1 - slashCountK2
|
distance := slashCountK1 - slashCountK2
|
||||||
|
|
||||||
@@ -780,8 +786,18 @@ func (s *TemplateStore) findBestMatchGet(key string, category Category, consider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *TemplateStore) inPath(k1, k2 string) bool {
|
||||||
|
if k1 != k2 && !strings.HasPrefix(k1, k2+"/") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
func (s *TemplateStore) findBestMatchWalkPath(q TemplateQuery, k1 string, slashCountK1 int, best *bestMatch) {
|
func (s *TemplateStore) findBestMatchWalkPath(q TemplateQuery, k1 string, slashCountK1 int, best *bestMatch) {
|
||||||
s.treeMain.WalkPath(k1, func(k2 string, v map[nodeKey]*TemplInfo) (bool, error) {
|
s.treeMain.WalkPath(k1, func(k2 string, v map[nodeKey]*TemplInfo) (bool, error) {
|
||||||
|
if !s.inPath(k1, k2) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
slashCountK2 := strings.Count(k2, "/")
|
slashCountK2 := strings.Count(k2, "/")
|
||||||
distance := slashCountK1 - slashCountK2
|
distance := slashCountK1 - slashCountK2
|
||||||
|
|
||||||
|
@@ -1396,3 +1396,19 @@ layouts/taxononmy.html.html
|
|||||||
b.AssertFileExists("public/p1/index.html", false)
|
b.AssertFileExists("public/p1/index.html", false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTemplateLoopBlogVsBlogrollIssue13672(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
files := `
|
||||||
|
-- hugo.toml --
|
||||||
|
-- layouts/blog/all.html --
|
||||||
|
blog/all.html
|
||||||
|
-- layouts/blogroll/all.html --
|
||||||
|
blogroll/all.html
|
||||||
|
-- content/blogroll/p1.md --
|
||||||
|
`
|
||||||
|
|
||||||
|
b := hugolib.Test(t, files)
|
||||||
|
|
||||||
|
b.AssertFileContent("public/blogroll/p1/index.html", "blogroll/all.html")
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user