mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
hugolib: Allow relative URLs in front matter
Before this commit you would have to do this in multilingual setups: ``` --- title: "Custom!" url: "/jp/custom/foo" --- ``` This commit allows for relative URLs, e.g: ``` --- title: "Custom!" url: "custom/foo" --- ``` Which is obviously easier and more portable. The meaning of relative may change to include more in the future (e.g. role based access). Fixes #5704
This commit is contained in:
parent
92baa14fd3
commit
5185fb065b
3 changed files with 47 additions and 2 deletions
|
@ -104,3 +104,43 @@ Content
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRelativeURLInFrontMatter(t *testing.T) {
|
||||||
|
|
||||||
|
config := `
|
||||||
|
|
||||||
|
defaultContentLanguage = "en"
|
||||||
|
defaultContentLanguageInSubdir = false
|
||||||
|
|
||||||
|
[Languages]
|
||||||
|
[Languages.en]
|
||||||
|
weight = 10
|
||||||
|
contentDir = "content/en"
|
||||||
|
[Languages.nn]
|
||||||
|
weight = 20
|
||||||
|
contentDir = "content/nn"
|
||||||
|
|
||||||
|
`
|
||||||
|
|
||||||
|
pageTempl := `---
|
||||||
|
title: "A page"
|
||||||
|
url: %q
|
||||||
|
---
|
||||||
|
|
||||||
|
Some content.
|
||||||
|
`
|
||||||
|
|
||||||
|
b := newTestSitesBuilder(t).WithConfigFile("toml", config)
|
||||||
|
b.WithContent("content/en/blog/page1.md", fmt.Sprintf(pageTempl, "myblog/p1/"))
|
||||||
|
b.WithContent("content/en/blog/_index.md", fmt.Sprintf(pageTempl, "this-is-my-english-blog"))
|
||||||
|
b.WithContent("content/nn/blog/page1.md", fmt.Sprintf(pageTempl, "myblog/p1/"))
|
||||||
|
b.WithContent("content/nn/blog/_index.md", fmt.Sprintf(pageTempl, "this-is-my-blog"))
|
||||||
|
|
||||||
|
b.Build(BuildCfg{})
|
||||||
|
|
||||||
|
b.AssertFileContent("public/nn/myblog/p1/index.html", "Single: A page|Hello|nn|RelPermalink: /nn/myblog/p1/|")
|
||||||
|
b.AssertFileContent("public/nn/this-is-my-blog/index.html", "List Page 1|A page|Hello|/nn/this-is-my-blog/|")
|
||||||
|
b.AssertFileContent("public/this-is-my-english-blog/index.html", "List Page 1|A page|Hello|/this-is-my-english-blog/|")
|
||||||
|
b.AssertFileContent("public/myblog/p1/index.html", "Single: A page|Hello|en|RelPermalink: /myblog/p1/|Permalink: /myblog/p1/|")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -208,7 +208,7 @@ func (s *Site) render404() error {
|
||||||
s: s,
|
s: s,
|
||||||
kind: kind404,
|
kind: kind404,
|
||||||
urlPaths: pagemeta.URLPath{
|
urlPaths: pagemeta.URLPath{
|
||||||
URL: path.Join(s.GetURLLanguageBasePath(), "404.html"),
|
URL: "404.html",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
output.HTMLFormat,
|
output.HTMLFormat,
|
||||||
|
@ -271,7 +271,7 @@ func (s *Site) renderRobotsTXT() error {
|
||||||
s: s,
|
s: s,
|
||||||
kind: kindRobotsTXT,
|
kind: kindRobotsTXT,
|
||||||
urlPaths: pagemeta.URLPath{
|
urlPaths: pagemeta.URLPath{
|
||||||
URL: path.Join(s.GetURLLanguageBasePath(), "robots.txt"),
|
URL: "robots.txt",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
output.RobotsTxtFormat)
|
output.RobotsTxtFormat)
|
||||||
|
|
|
@ -124,6 +124,11 @@ func CreateTargetPaths(d TargetPathDescriptor) (tp TargetPaths) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if d.URL != "" && !strings.HasPrefix(d.URL, "/") {
|
||||||
|
// Treat this as a context relative URL
|
||||||
|
d.ForcePrefix = true
|
||||||
|
}
|
||||||
|
|
||||||
pagePath := slash
|
pagePath := slash
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
Loading…
Reference in a new issue