From: Bjørn Erik Pedersen Date: Sun, 5 Jan 2020 11:56:41 +0000 (+0100) Subject: hugolib: Fix relative .Page.GetPage from bundle X-Git-Tag: v0.62.2~3 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=196a9df585c4744e3280f37c1c24e469fce14b8c;p=brevno-suite%2Fhugo hugolib: Fix relative .Page.GetPage from bundle Fixes #6705 --- diff --git a/hugolib/hugo_modules_test.go b/hugolib/hugo_modules_test.go index 1c665e6e..14085e2c 100644 --- a/hugolib/hugo_modules_test.go +++ b/hugolib/hugo_modules_test.go @@ -585,9 +585,19 @@ workingDir = %q {{ $mypage := .Site.GetPage "/blog/mypage.md" }} {{ with $mypage }}MYPAGE: {{ .Title }}|Path: {{ path.Join .File.Path }}|FilePath: {{ path.Join .File.FileInfo.Meta.PathFile }}|{{ end }} +`, "_default/_markup/render-link.html", ` +{{ $link := .Destination }} +{{ $isRemote := strings.HasPrefix $link "http" }} +{{- if not $isRemote -}} +{{ $url := urls.Parse .Destination }} +{{ $fragment := "" }} +{{- with $url.Fragment }}{{ $fragment = printf "#%s" . }}{{ end -}} +{{- with .Page.GetPage $url.Path }}{{ $link = printf "%s%s" .Permalink $fragment }}{{ end }}{{ end -}} +{{ .Text | safeHTML }} `) os.Mkdir(filepath.Join(workingDir, "mycontent"), 0777) + os.Mkdir(filepath.Join(workingDir, "mycontent", "mybundle"), 0777) b.WithSourceFile("README.md", `--- title: "Readme Title" @@ -600,6 +610,23 @@ Readme Content. title: "My Page" --- + +* [Relative Link From Page](mybundle) +* [Relative Link From Page, filename](mybundle/index.md) +* [Link using original path](/mycontent/mybundle/index.md) + + +`, filepath.Join("mycontent", "mybundle", "index.md"), ` +--- +title: "My Bundle" +--- + +* [Dot Relative Link From Bundle](../mypage.md) +* [Link using original path](/mycontent/mypage.md) +* [Link to Home](/) +* [Link to Home, README.md](/README.md) +* [Link to Home, _index.md](/_index.md) + `) b.Build(BuildCfg{}) @@ -610,7 +637,19 @@ README: Readme Title Readme Content. MYPAGE: My Page|Path: blog/mypage.md|FilePath: mycontent/mypage.md| `) - b.AssertFileContent("public/blog/mypage/index.html", "Single: My Page") + b.AssertFileContent("public/blog/mypage/index.html", ` +Relative Link From Page +Relative Link From Page, filename +Link using original path + +`) + b.AssertFileContent("public/blog/mybundle/index.html", ` +Dot Relative Link From Bundle +Link using original path +Link to Home +Link to Home, README.md +Link to Home, _index.md +`) b.EditFiles("README.md", `--- title: "Readme Edit" @@ -622,6 +661,7 @@ title: "Readme Edit" b.AssertFileContent("public/index.html", ` Readme Edit `) + } // https://github.com/gohugoio/hugo/issues/6299 diff --git a/hugolib/page.go b/hugolib/page.go index f5031332..8aad8dcc 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -954,7 +954,7 @@ func (p *pageState) sourceRefs() []string { path := meta.PathFile() if path != "" { - ref := "/" + path + ref := "/" + filepath.ToSlash(path) if ref != refs[0] { refs = append(refs, ref) } diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go index 57878881..023222bd 100644 --- a/hugolib/pagecollections.go +++ b/hugolib/pagecollections.go @@ -267,7 +267,14 @@ func (c *PageCollections) getPageNew(context page.Page, ref string) (page.Page, } else if context != nil { // Try the page-relative path. - ppath := path.Join("/", strings.ToLower(context.SectionsPath()), ref) + var dir string + if !context.File().IsZero() { + dir = filepath.ToSlash(context.File().Dir()) + } else { + dir = context.SectionsPath() + } + ppath := path.Join("/", strings.ToLower(dir), ref) + p, err := c.getFromCache(ppath) if err == nil && p != nil { return p, nil diff --git a/hugolib/testhelpers_test.go b/hugolib/testhelpers_test.go index 93ea9477..44185ead 100644 --- a/hugolib/testhelpers_test.go +++ b/hugolib/testhelpers_test.go @@ -466,6 +466,7 @@ func (s *sitesBuilder) CreateSitesE() error { for _, dir := range []string{ "content/sect", "layouts/_default", + "layouts/_default/_markup", "layouts/partials", "layouts/shortcodes", "data",