From 96f71141bd4b9e0264bce725f6fec0555c46b1c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Sat, 12 Nov 2016 17:30:21 +0100 Subject: [PATCH] node to page: Export GetPage to the templates Updates #2297 --- hugolib/node_as_page_test.go | 2 ++ hugolib/page_collections.go | 4 ++-- hugolib/site.go | 13 +++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/hugolib/node_as_page_test.go b/hugolib/node_as_page_test.go index 504517494..865e2aa13 100644 --- a/hugolib/node_as_page_test.go +++ b/hugolib/node_as_page_test.go @@ -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"), ` diff --git a/hugolib/page_collections.go b/hugolib/page_collections.go index e1ba36c18..a6050f6ca 100644 --- a/hugolib/page_collections.go +++ b/hugolib/page_collections.go @@ -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 diff --git a/hugolib/site.go b/hugolib/site.go index 910f887e5..c20c70eb8 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -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) }