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) {
|
func (c *PageCollections) getContentNode(context page.Page, isReflink bool, ref string) (*contentNode, error) {
|
||||||
ref = filepath.ToSlash(strings.ToLower(strings.TrimSpace(ref)))
|
ref = filepath.ToSlash(strings.ToLower(strings.TrimSpace(ref)))
|
||||||
if ref == "" {
|
if ref == "" {
|
||||||
|
@ -215,9 +231,7 @@ func (c *PageCollections) getContentNode(context page.Page, isReflink bool, ref
|
||||||
navUp := strings.HasPrefix(ref, "..")
|
navUp := strings.HasPrefix(ref, "..")
|
||||||
var doSimpleLookup bool
|
var doSimpleLookup bool
|
||||||
if isReflink || context == nil {
|
if isReflink || context == nil {
|
||||||
// For Ref/Reflink and .Site.GetPage do simple name lookups for the potentially ambigous myarticle.md and /myarticle.md,
|
doSimpleLookup = shouldDoSimpleLookup(ref)
|
||||||
// but not when we get ./myarticle*, section/myarticle.
|
|
||||||
doSimpleLookup = ref[0] != '.' || ref[0] == '/' && strings.Count(ref, "/") == 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if context != nil && !strings.HasPrefix(ref, "/") {
|
if context != nil && !strings.HasPrefix(ref, "/") {
|
||||||
|
|
|
@ -334,3 +334,52 @@ NOT FOUND
|
||||||
b.AssertFileContent("public/who/index.html", `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