mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
Add Page.FirstSection
It was added and then removed by accident some time ago. Let us add it again, as it is useful.
This commit is contained in:
parent
c6b599a06d
commit
016dd4a69a
2 changed files with 25 additions and 0 deletions
|
@ -58,6 +58,29 @@ func (p *Page) CurrentSection() *Page {
|
||||||
return v.parent
|
return v.parent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FirstSection returns the section on level 1 below home, e.g. "/docs".
|
||||||
|
// For the home page, this will return itself.
|
||||||
|
func (p *Page) FirstSection() *Page {
|
||||||
|
v := p
|
||||||
|
if v.origOnCopy != nil {
|
||||||
|
v = v.origOnCopy
|
||||||
|
}
|
||||||
|
|
||||||
|
if v.parent == nil || v.parent.IsHome() {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
parent := v.parent
|
||||||
|
for {
|
||||||
|
current := parent
|
||||||
|
parent = parent.parent
|
||||||
|
if parent == nil || parent.IsHome() {
|
||||||
|
return current
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// InSection returns whether the given page is in the current section.
|
// InSection returns whether the given page is in the current section.
|
||||||
// Note that this will always return false for pages that are
|
// Note that this will always return false for pages that are
|
||||||
// not either regular, home or section pages.
|
// not either regular, home or section pages.
|
||||||
|
|
|
@ -176,6 +176,7 @@ PAG|{{ .Title }}|{{ $sect.InSection . }}
|
||||||
active, err := home.InSection(home)
|
active, err := home.InSection(home)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.True(active)
|
assert.True(active)
|
||||||
|
assert.Equal(p, p.FirstSection())
|
||||||
}},
|
}},
|
||||||
{"l1", func(p *Page) {
|
{"l1", func(p *Page) {
|
||||||
assert.Equal("L1s", p.title)
|
assert.Equal("L1s", p.title)
|
||||||
|
@ -249,6 +250,7 @@ PAG|{{ .Title }}|{{ $sect.InSection . }}
|
||||||
isAncestor, err = p.IsAncestor(l1)
|
isAncestor, err = p.IsAncestor(l1)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.False(isAncestor)
|
assert.False(isAncestor)
|
||||||
|
assert.Equal(l1, p.FirstSection())
|
||||||
|
|
||||||
}},
|
}},
|
||||||
{"perm a,link", func(p *Page) {
|
{"perm a,link", func(p *Page) {
|
||||||
|
|
Loading…
Reference in a new issue