mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
ffcb4aeb8e
commit
6cceef65c2
2 changed files with 66 additions and 3 deletions
|
@ -206,6 +206,22 @@ func (c *PageCollections) getSectionOrPage(ref string) (*contentNode, string) {
|
|||
|
||||
}
|
||||
|
||||
// For Ref/Reflink and .Site.GetPage do simple name lookups for the potentially ambigous myarticle.md and /myarticle.md,
|
||||
// but not when we get ./myarticle*, section/myarticle.
|
||||
func shouldDoSimpleLookup(ref string) bool {
|
||||
if ref[0] == '.' {
|
||||
return false
|
||||
}
|
||||
|
||||
slashCount := strings.Count(ref, "/")
|
||||
|
||||
if slashCount > 1 {
|
||||
return false
|
||||
}
|
||||
|
||||
return slashCount == 0 || ref[0] == '/'
|
||||
}
|
||||
|
||||
func (c *PageCollections) getContentNode(context page.Page, isReflink bool, ref string) (*contentNode, error) {
|
||||
ref = filepath.ToSlash(strings.ToLower(strings.TrimSpace(ref)))
|
||||
if ref == "" {
|
||||
|
@ -215,9 +231,7 @@ func (c *PageCollections) getContentNode(context page.Page, isReflink bool, ref
|
|||
navUp := strings.HasPrefix(ref, "..")
|
||||
var doSimpleLookup bool
|
||||
if isReflink || context == nil {
|
||||
// For Ref/Reflink and .Site.GetPage do simple name lookups for the potentially ambigous myarticle.md and /myarticle.md,
|
||||
// but not when we get ./myarticle*, section/myarticle.
|
||||
doSimpleLookup = ref[0] != '.' || ref[0] == '/' && strings.Count(ref, "/") == 1
|
||||
doSimpleLookup = shouldDoSimpleLookup(ref)
|
||||
}
|
||||
|
||||
if context != nil && !strings.HasPrefix(ref, "/") {
|
||||
|
|
|
@ -334,3 +334,52 @@ NOT FOUND
|
|||
b.AssertFileContent("public/who/index.html", `NOT FOUND`)
|
||||
|
||||
}
|
||||
|
||||
// https://github.com/gohugoio/hugo/issues/7016
|
||||
func TestGetPageMultilingual(t *testing.T) {
|
||||
b := newTestSitesBuilder(t)
|
||||
|
||||
b.WithConfigFile("yaml", `
|
||||
baseURL: "http://example.org/"
|
||||
languageCode: "en-us"
|
||||
defaultContentLanguage: ru
|
||||
title: "My New Hugo Site"
|
||||
uglyurls: true
|
||||
|
||||
languages:
|
||||
ru: {}
|
||||
en: {}
|
||||
`)
|
||||
|
||||
b.WithContent(
|
||||
"docs/1.md", "\n---title: p1\n---",
|
||||
"news/1.md", "\n---title: p1\n---",
|
||||
"news/1.en.md", "\n---title: p1en\n---",
|
||||
"news/about/1.md", "\n---title: about1\n---",
|
||||
"news/about/1.en.md", "\n---title: about1en\n---",
|
||||
)
|
||||
|
||||
b.WithTemplates("index.html", `
|
||||
{{ with site.GetPage "docs/1" }}
|
||||
Docs p1: {{ .Title }}
|
||||
{{ else }}
|
||||
NOT FOUND
|
||||
{{ end }}
|
||||
`)
|
||||
|
||||
b.Build(BuildCfg{})
|
||||
|
||||
b.AssertFileContent("public/index.html", `Docs p1: p1`)
|
||||
b.AssertFileContent("public/en/index.html", `NOT FOUND`)
|
||||
|
||||
}
|
||||
|
||||
func TestShouldDoSimpleLookup(t *testing.T) {
|
||||
c := qt.New(t)
|
||||
|
||||
c.Assert(shouldDoSimpleLookup("foo.md"), qt.Equals, true)
|
||||
c.Assert(shouldDoSimpleLookup("/foo.md"), qt.Equals, true)
|
||||
c.Assert(shouldDoSimpleLookup("./foo.md"), qt.Equals, false)
|
||||
c.Assert(shouldDoSimpleLookup("docs/foo.md"), qt.Equals, false)
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue