Add 404.html for gh-pages
authorRoss Lawley <ross.lawley@gmail.com>
Wed, 21 Aug 2013 16:21:53 +0000 (17:21 +0100)
committerNoah Campbell <noahcampbell@gmail.com>
Fri, 23 Aug 2013 23:38:35 +0000 (16:38 -0700)
Signed-off-by: Noah Campbell <noahcampbell@gmail.com>
docs/content/layout/404.html [new file with mode: 0644]
hugolib/site.go

diff --git a/docs/content/layout/404.html b/docs/content/layout/404.html
new file mode 100644 (file)
index 0000000..9d54e0d
--- /dev/null
@@ -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" }}
+
index 870301d41a8f633b6d3df67426200fa804d84491..ac61bffb7df59d9f041c06fb813f113a58d857f8 100644 (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
 }