From 7b1f0960e3b7b31017dce5925e455bd43df86efb Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Wed, 21 Aug 2013 17:21:53 +0100 Subject: [PATCH] Add 404.html for gh-pages Signed-off-by: Noah Campbell --- docs/content/layout/404.html | 31 +++++++++++++++++++++++++++++++ hugolib/site.go | 12 ++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 docs/content/layout/404.html diff --git a/docs/content/layout/404.html b/docs/content/layout/404.html new file mode 100644 index 000000000..9d54e0d14 --- /dev/null +++ b/docs/content/layout/404.html @@ -0,0 +1,31 @@ +--- +title: "404.html Templates" +date: "2013-08-21" +--- + +When using Hugo with [github pages](http://pages.github.com/) you can provide +your own 404 template by creating a 404.html file in the root. + +404 pages are of the type "node" and have all the [node +variables](/layout/variables/) available to use in the templates. + +In addition to the standard node variables, the homepage has access to +all site content accessible from .Data.Pages + + ▾ layouts/ + 404.html + +## 404.html +This is a basic example of a 404.html template: + + {{ template "chrome/header.html" . }} + {{ template "chrome/subheader.html" . }} + +
+
+

{{ .Title }}

+
+
+ + {{ template "chrome/footer.html" }} + diff --git a/hugolib/site.go b/hugolib/site.go index 870301d41..ac61bffb7 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -598,6 +598,18 @@ func (s *Site) RenderHomePage() error { s.Tmpl.ExecuteTemplate(y, "rss.xml", n) s.WritePublic("index.xml", y.Bytes()) } + + if a := s.Tmpl.Lookup("404.html"); a != nil { + n.Url = Urlize("404.html") + n.Title = "404 Page not found" + n.Permalink = template.HTML(string(n.Site.BaseUrl) + "404.html") + x, err := s.RenderThing(n, "404.html") + if err != nil { + return err + } + s.WritePublic("404.html", x.Bytes()) + } + return nil }