diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-01-05 12:56:41 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-01-05 19:41:53 +0100 |
commit | 196a9df585c4744e3280f37c1c24e469fce14b8c (patch) | |
tree | 30a3d06dec5846ad00c22fde5abe11269741511d /hugolib | |
parent | 9b6e61464b09ffe3423fb8d7c72bddb7a9ed5b98 (diff) |
hugolib: Fix relative .Page.GetPage from bundle
Fixes #6705
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/hugo_modules_test.go | 42 | ||||
-rw-r--r-- | hugolib/page.go | 2 | ||||
-rw-r--r-- | hugolib/pagecollections.go | 9 | ||||
-rw-r--r-- | hugolib/testhelpers_test.go | 1 |
4 files changed, 51 insertions, 3 deletions
diff --git a/hugolib/hugo_modules_test.go b/hugolib/hugo_modules_test.go index 1c665e6e3..14085e2c0 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 -}} +<a href="{{ $link | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if $isRemote }} target="_blank"{{ end }}>{{ .Text | safeHTML }}</a> `) 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", ` +<a href="https://example.com/blog/mybundle/">Relative Link From Page</a> +<a href="https://example.com/blog/mybundle/">Relative Link From Page, filename</a> +<a href="https://example.com/blog/mybundle/">Link using original path</a> + +`) + b.AssertFileContent("public/blog/mybundle/index.html", ` +<a href="https://example.com/blog/mypage/">Dot Relative Link From Bundle</a> +<a href="https://example.com/blog/mypage/">Link using original path</a> +<a href="https://example.com/">Link to Home</a> +<a href="https://example.com/">Link to Home, README.md</a> +<a href="https://example.com/">Link to Home, _index.md</a> +`) 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 f5031332c..8aad8dcc7 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 57878881a..023222bdd 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 93ea9477c..44185eadc 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", |