node to page: Export GetPage to the templates

Updates #2297
This commit is contained in:
Bjørn Erik Pedersen 2016-11-12 17:30:21 +01:00
parent 487b210fb8
commit 96f71141bd
3 changed files with 17 additions and 2 deletions

View file

@ -70,6 +70,7 @@ func TestNodesAsPage(t *testing.T) {
"# Pages: 9",
"Date: 2009-01-02",
"Lastmod: 2009-01-03",
"GetPage: Section1 ",
)
assertFileContent(t, filepath.Join("public", "sect1", "regular1", "index.html"), false, "Single Title: Page 01", "Content Page 01")
@ -543,6 +544,7 @@ Menu Item: {{ .Name }}
{{ end }}
Date: {{ .Date.Format "2006-01-02" }}
Lastmod: {{ .Lastmod.Format "2006-01-02" }}
GetPage: {{ with .Site.GetPage "section" "sect1" }}{{ .Title }}{{ end }}
`)
writeSource(t, filepath.Join("layouts", "_default", "single.html"), `

View file

@ -65,8 +65,8 @@ func (c *PageCollections) findPagesByNodeType(n PageType) Pages {
return c.findPagesByNodeTypeIn(n, c.Pages)
}
func (c *PageCollections) getPage(n PageType, path ...string) *Page {
pages := c.findPagesByNodeTypeIn(n, c.Pages)
func (c *PageCollections) getPage(typ PageType, path ...string) *Page {
pages := c.findPagesByNodeTypeIn(typ, c.Pages)
if len(pages) == 0 {
return nil

View file

@ -1653,6 +1653,19 @@ func (s *Site) Stats() {
}
// GetPage looks up a index page of a given type in the path given.
// This method may support regular pages in the future, but currently it is a
// convenient way of getting the home page or
// a section from a template:
// {{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }}
//
// This will return nil when no page could be found.
//
// The valid page types are: home, section, taxonomy and taxonomyTerm
func (s *SiteInfo) GetPage(typ PageType, path ...string) *Page {
return s.getPage(typ, path...)
}
func (s *SiteInfo) permalink(plink string) string {
return s.permalinkStr(plink)
}