ref: 5f84bc02cd9706af92311cc27ae01d2ffc1410fa
parent: 50269f251249a0ddf76028b69002c4609101a2cc
author: spf13 <[email protected]>
date: Mon Jun 1 18:14:36 EDT 2015
add preliminary support for content/index.md file to be homepage content
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -1247,6 +1247,7 @@
return nil
}
+// When Paginating, HomePage is a Node
func (s *Site) newHomeNode() *Node {
n := s.NewNode()
n.Title = n.Site.Title
@@ -1256,9 +1257,43 @@
return n
}
+func (s *Site) findHomePage() (*Page, error) {
+ for _, y := range s.Pages {
+ if y.Source.BaseFileName() == "index" && y.Source.Dir() == "" && strings.ToLower(y.Source.Ext()) != "xml" {
+ return y, nil
+ }
+ }
+
+ return nil, errors.New("No content file for homepage")
+}
+
+// Homepage is a special page
+// Homepage is only rendered as a page when
+// 1. a content/index.md is found
+// 2. pagination isn't used for the homepage
+func (s *Site) newHomePage() *Page {
+
+ var p *Page
+
+ p, _ = s.findHomePage()
+ if p == nil {
+ p, _ = NewPage("HugoHomePage")
+ p.Site = &s.Info
+ }
+
+ p.Title = p.Site.Title
+ p.URL = helpers.URLizeAndPrep("/")
+ p.URLPath.Permalink = s.permalink(p.URL)
+ p.RSSLink = s.permalink("/" + ".xml")
+ p.Data = make(map[string]interface{})
+ p.Data["Pages"] = s.Pages
+ return p
+}
+
func (s *Site) RenderHomePage() error {
- n := s.newHomeNode()
- layouts := s.appendThemeTemplates([]string{"index.html", "_default/list.html"})
+ n := s.newHomePage()
+ layouts := s.appendThemeTemplates([]string{"index.html", "_default/list.html", "_default/single.html"})
+ //layouts := s.appendThemeTemplates([]string{"index.html", "_default/list.html"})
if err := s.renderAndWritePage("homepage", helpers.FilePathSeparator, n, layouts...); err != nil {
return err
@@ -1279,6 +1314,7 @@
continue
}
+ // When paginating HomePage is a node
homePagerNode := s.newHomeNode()
homePagerNode.paginator = pager
if pager.TotalPages() > 0 {
@@ -1316,7 +1352,8 @@
n.URL = helpers.URLize("404.html")
n.Title = "404 Page not found"
- n.Permalink = s.permalink("404.html")
+ n.URLPath.Permalink = s.permalink("404.html")
+ //n.Permalink = s.permalink("404.html")
nfLayouts := []string{"404.html"}
if nfErr := s.renderAndWritePage("404 page", "404.html", n, s.appendThemeTemplates(nfLayouts)...); nfErr != nil {