Add 404.html for gh-pages

Signed-off-by: Noah Campbell <noahcampbell@gmail.com>
This commit is contained in:
Ross Lawley 2013-08-21 17:21:53 +01:00 committed by Noah Campbell
parent f28a8fa0c2
commit 7b1f0960e3
2 changed files with 43 additions and 0 deletions

View file

@ -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" . }}
<section id="main">
<div>
<h1 id="title">{{ .Title }}</h1>
</div>
</section>
{{ template "chrome/footer.html" }}

View file

@ -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
}