func (p *Page) _processRequest(res *wcg.Response, req *wcg.Request) { // instance of Page pi := &Page{} pi.App = p.App pi.Title = p.Title pi.Path = p.Path pi.assetPath = p.assetPath if p.templates != nil { pi.templates = make([]string, len(p.templates)) for i := range p.templates { pi.templates[i] = p.templates[i] } } pi.Ogp("site_name", "SPEEDLAND Project") // pre process to update page attributes if p.handler != nil { p.handler(res, req, pi) if res.IsClosed() { return } } // automatically set ogp attributes if not set. if _, ok := pi.ogp["title"]; !ok { pi.Ogp("title", fmt.Sprintf("%s: %s", pi.App.Title, pi.Title)) } if _, ok := pi.ogp["url"]; !ok { pi.Ogp("url", wcg.AbsoluteUrl(req, req.URL().RequestURI())) } // set default OGP from app settings. for k, v := range pi.App.DefaultOgp { pi.Ogp(k, v) } res.SetLocal("Page", pi) res.SetLocal("Ogp", pi.ogp) res.SetLocal("Request", req) res.SetLocal("TrackingCode", TrackingCode) res.SetLocal("__JsBundle__", pi.GetAssetPath()) res.SetLocal("__APP_COMMIT", APP_COMMIT) res.SetLocal("__APP_TIMESTAMP", APP_TIMESTAMP) template_paths := []string{"./header.html", "./footer.html"} res.Templates(append(pi.GetTemplates(), template_paths...)...) }