diff --git a/hugolib/page.go b/hugolib/page.go index 7887ca488..7541257d0 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -228,13 +228,22 @@ func splitPageContent(data []byte, start string, end string) ([]string, []string func (p *Page) Permalink() template.HTML { if len(strings.TrimSpace(p.Slug)) > 0 { - return template.HTML(MakePermalink(string(p.Site.BaseUrl), strings.TrimSpace(p.Section)+"/"+p.Slug)) + if p.Site.Config.UglyUrls { + return template.HTML(MakePermalink(string(p.Site.BaseUrl), strings.TrimSpace(p.Section)+"/"+p.Slug+"."+p.Extension)) + } else { + return template.HTML(MakePermalink(string(p.Site.BaseUrl), strings.TrimSpace(p.Section)+"/"+p.Slug)) + } } else if len(strings.TrimSpace(p.Url)) > 2 { return template.HTML(MakePermalink(string(p.Site.BaseUrl), strings.TrimSpace(p.Url))) } else { _, t := filepath.Split(p.FileName) - x := replaceExtension(strings.TrimSpace(t), p.Extension) - return template.HTML(MakePermalink(string(p.Site.BaseUrl), strings.TrimSpace(p.Section)+"/"+x)) + if p.Site.Config.UglyUrls { + x := replaceExtension(strings.TrimSpace(t), p.Extension) + return template.HTML(MakePermalink(string(p.Site.BaseUrl), strings.TrimSpace(p.Section)+"/"+x)) + } else { + file, _ := fileExt(strings.TrimSpace(t)) + return template.HTML(MakePermalink(string(p.Site.BaseUrl), strings.TrimSpace(p.Section)+"/"+file)) + } } } diff --git a/hugolib/site.go b/hugolib/site.go index 7066dfbf0..8d33b7008 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -48,6 +48,7 @@ type SiteInfo struct { Recent *Pages LastChange time.Time Title string + Config *Config } func (s *Site) getFromIndex(kind string, name string) Pages { @@ -166,7 +167,7 @@ func (s *Site) initialize() { filepath.Walk(s.c.GetAbsPath(s.c.SourceDir), walker) - s.Info = SiteInfo{BaseUrl: template.URL(s.c.BaseUrl), Title: s.c.Title} + s.Info = SiteInfo{BaseUrl: template.URL(s.c.BaseUrl), Title: s.c.Title, Config: &s.c} s.Shortcodes = make(map[string]ShortcodeFunc) }