package main import ( "html/template" "net/http" "strings" ) type Page struct { Title string MenuItems []string Posts []Post } var name string = "takunomi" var posts []Post var sections = []string {"about","past", "contact"} var templates = template.Must(template.ParseFiles("blog.tmpl", "blog_roll.tmpl", "style.tmpl", "post.tmpl")) func main() { http.HandleFunc("/", blogHandler) http.HandleFunc("/post/", postHandler) http.ListenAndServe(":8080", nil) } func blogHandler(w http.ResponseWriter, req *http.Request) { posts = getNewestPosts(3) page := Page {name, sections, posts} renderTemplates(w, page) } func postHandler (w http.ResponseWriter, r *http.Request) { title := strings.TrimPrefix(r.URL.Path, "/post/") posts := []Post{getPostByURLTitle(title)} page := Page {name, sections, posts} renderTemplates(w, page) } func renderTemplates (w http.ResponseWriter, p Page) { s1 := templates.Lookup("blog.tmpl") s1.ExecuteTemplate(w, "blog", p) s2 := templates.Lookup("blog_roll.tmpl") s2.ExecuteTemplate(w, "blog_roll", nil) s3 := templates.Lookup("post.tmpl") s3.ExecuteTemplate(w, "post", nil) }