mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
parent
a322282e70
commit
6a8b25e291
2 changed files with 47 additions and 20 deletions
|
@ -348,31 +348,28 @@ func (m *pageMap) getPagesInSection(q pageMapQueryPagesInSection) page.Pages {
|
||||||
w := &doctree.NodeShiftTreeWalker[contentNodeI]{
|
w := &doctree.NodeShiftTreeWalker[contentNodeI]{
|
||||||
Tree: m.treePages,
|
Tree: m.treePages,
|
||||||
Prefix: prefix,
|
Prefix: prefix,
|
||||||
Handle: func(key string, n contentNodeI, match doctree.DimensionFlag) (bool, error) {
|
}
|
||||||
if q.Recursive {
|
|
||||||
if p, ok := n.(*pageState); ok && include(p) {
|
|
||||||
pas = append(pas, p)
|
|
||||||
}
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// We store both leafs and branches in the same tree, so for non-recursive walks,
|
|
||||||
// we need to walk until the end, but can skip
|
|
||||||
// any not belonging to child branches.
|
|
||||||
if otherBranch != "" && strings.HasPrefix(key, otherBranch) {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
|
w.Handle = func(key string, n contentNodeI, match doctree.DimensionFlag) (bool, error) {
|
||||||
|
if q.Recursive {
|
||||||
if p, ok := n.(*pageState); ok && include(p) {
|
if p, ok := n.(*pageState); ok && include(p) {
|
||||||
pas = append(pas, p)
|
pas = append(pas, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n.isContentNodeBranch() {
|
|
||||||
otherBranch = key + "/"
|
|
||||||
}
|
|
||||||
|
|
||||||
return false, nil
|
return false, nil
|
||||||
},
|
}
|
||||||
|
|
||||||
|
if p, ok := n.(*pageState); ok && include(p) {
|
||||||
|
pas = append(pas, p)
|
||||||
|
}
|
||||||
|
|
||||||
|
if n.isContentNodeBranch() {
|
||||||
|
currentBranch := key + "/"
|
||||||
|
if otherBranch == "" || otherBranch != currentBranch {
|
||||||
|
w.SkipPrefix(currentBranch)
|
||||||
|
}
|
||||||
|
otherBranch = currentBranch
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err := w.Walk(context.Background())
|
err := w.Walk(context.Background())
|
||||||
|
|
|
@ -663,3 +663,33 @@ RegularPagesRecursive: {{ range .RegularPagesRecursive }}{{ .Kind }}:{{ .RelPerm
|
||||||
|
|
||||||
b.AssertFileContent("public/index.html", `RegularPagesRecursive: page:/p1/|page:/post/p2/||End.`)
|
b.AssertFileContent("public/index.html", `RegularPagesRecursive: page:/p1/|page:/post/p2/||End.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issue #12169.
|
||||||
|
func TestPagesSimilarSectionNames(t *testing.T) {
|
||||||
|
files := `
|
||||||
|
-- hugo.toml --
|
||||||
|
-- content/draftsection/_index.md --
|
||||||
|
---
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
-- content/draftsection/sub/_index.md --got
|
||||||
|
-- content/draftsection/sub/d1.md --
|
||||||
|
-- content/s1/_index.md --
|
||||||
|
-- content/s1/p1.md --
|
||||||
|
-- content/s1-foo/_index.md --
|
||||||
|
-- content/s1-foo/p2.md --
|
||||||
|
-- content/s1-foo/s2/_index.md --
|
||||||
|
-- content/s1-foo/s2/p3.md --
|
||||||
|
-- content/s1-foo/s2-foo/_index.md --
|
||||||
|
-- content/s1-foo/s2-foo/p4.md --
|
||||||
|
-- layouts/_default/list.html --
|
||||||
|
{{ .RelPermalink }}: Pages: {{ range .Pages }}{{ .RelPermalink }}|{{ end }}$
|
||||||
|
|
||||||
|
`
|
||||||
|
b := Test(t, files)
|
||||||
|
|
||||||
|
b.AssertFileContent("public/index.html", "/: Pages: /s1-foo/|/s1/|$")
|
||||||
|
b.AssertFileContent("public/s1/index.html", "/s1/: Pages: /s1/p1/|$")
|
||||||
|
b.AssertFileContent("public/s1-foo/index.html", "/s1-foo/: Pages: /s1-foo/p2/|/s1-foo/s2-foo/|/s1-foo/s2/|$")
|
||||||
|
b.AssertFileContent("public/s1-foo/s2/index.html", "/s1-foo/s2/: Pages: /s1-foo/s2/p3/|$")
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue