diff --git a/hugolib/page.go b/hugolib/page.go index dcfa841ca..6734dcccd 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -46,7 +46,7 @@ type Page struct { Tmpl bundle.Template Markup string renderable bool - layout string + layout string PageMeta File Position @@ -192,7 +192,7 @@ func (page *Page) Layout(l ...string) []string { func layouts(types string, layout string) (layouts []string) { t := strings.Split(types, "/") - for i := range t { + for i := range t { search := t[:len(t)-i] layouts = append(layouts, fmt.Sprintf("%s/%s.html", strings.ToLower(path.Join(search...)), layout)) } @@ -223,15 +223,15 @@ func (p *Page) analyzePage() { func (p *Page) permalink() (*url.URL, error) { baseUrl := string(p.Site.BaseUrl) - section := strings.TrimSpace(p.Section) + dir := strings.TrimSpace(p.Dir) pSlug := strings.TrimSpace(p.Slug) pUrl := strings.TrimSpace(p.Url) var permalink string if len(pSlug) > 0 { if p.Site.Config != nil && p.Site.Config.UglyUrls { - permalink = section + "/" + p.Slug + "." + p.Extension + permalink = path.Join(dir, p.Slug, p.Extension) } else { - permalink = section + "/" + p.Slug + "/" + permalink = dir + "/" + p.Slug + "/" } } else if len(pUrl) > 2 { permalink = pUrl @@ -239,10 +239,10 @@ func (p *Page) permalink() (*url.URL, error) { _, t := path.Split(p.FileName) if p.Site.Config != nil && p.Site.Config.UglyUrls { x := replaceExtension(strings.TrimSpace(t), p.Extension) - permalink = section + "/" + x + permalink = path.Join(dir, x) } else { file, _ := fileExt(strings.TrimSpace(t)) - permalink = section + "/" + file + permalink = path.Join(dir, file) } } diff --git a/hugolib/page_permalink_test.go b/hugolib/page_permalink_test.go index e40a78362..b4ef66ba7 100644 --- a/hugolib/page_permalink_test.go +++ b/hugolib/page_permalink_test.go @@ -7,7 +7,7 @@ import ( func TestPermalink(t *testing.T) { tests := []struct { - base template.URL + base template.URL expectedAbs string expectedRel string }{ @@ -18,10 +18,10 @@ func TestPermalink(t *testing.T) { for _, test := range tests { p := &Page{ Node: Node{ - UrlPath: UrlPath{Section: "x/y/z"}, + UrlPath: UrlPath{Section: "z"}, Site: SiteInfo{BaseUrl: test.base}, }, - File: File{FileName: "x/y/z/boofar.md"}, + File: File{FileName: "x/y/z/boofar.md", Dir: "x/y/z"}, } u, err := p.Permalink() diff --git a/hugolib/site.go b/hugolib/site.go index e5d4fab44..076e8ce0f 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -67,7 +67,7 @@ type Site struct { Transformer transform.Transformer Target target.Output Alias target.AliasPublisher - Completed chan bool + Completed chan bool } type SiteInfo struct { @@ -487,7 +487,7 @@ func (s *Site) RenderHomePage() error { n.Data["Pages"] = s.Pages[:9] } } - err := s.render(n, "/", "index.html", "_default/single.html") + err := s.render(n, "/", "index.html") if err != nil { return err } @@ -552,8 +552,7 @@ func (s *Site) render(d interface{}, out string, layouts ...string) (err error) } section := "" - page, ok := d.(*Page) - if ok { + if page, ok := d.(*Page); ok { section, _ = page.RelPermalink() } diff --git a/hugolib/site_test.go b/hugolib/site_test.go index 7fb562f92..acf3fd56a 100644 --- a/hugolib/site_test.go +++ b/hugolib/site_test.go @@ -2,11 +2,11 @@ package hugolib import ( "bytes" - "io" "fmt" "github.com/spf13/hugo/source" "github.com/spf13/hugo/target" "html/template" + "io" "strings" "testing" ) @@ -187,6 +187,8 @@ func TestTargetPath(t *testing.T) { expectedSection string }{ {"content/a/file.md", PAGE_URL_SPECIFIED, "mycategory/my-whatever-content/index.html", "a"}, + {"content/x/y/deepfile.md", SIMPLE_PAGE, "x/y/deepfile.html", "x/y"}, + {"content/x/y/z/deeperfile.md", SIMPLE_PAGE, "x/y/z/deeperfile.html", "x/y/z"}, {"content/b/file.md", SIMPLE_PAGE, "b/file.html", "b"}, {"a/file.md", SIMPLE_PAGE, "a/file.html", "a"}, {"file.md", SIMPLE_PAGE, "file.html", ""},