mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
db85e83403
commit
57e10f174e
3 changed files with 61 additions and 3 deletions
|
@ -86,7 +86,7 @@ func (p *Page) initTargetPathDescriptor() error {
|
||||||
PathSpec: p.s.PathSpec,
|
PathSpec: p.s.PathSpec,
|
||||||
Kind: p.Kind,
|
Kind: p.Kind,
|
||||||
Sections: p.sections,
|
Sections: p.sections,
|
||||||
UglyURLs: p.s.Info.uglyURLs,
|
UglyURLs: p.s.Info.uglyURLs(p),
|
||||||
Dir: filepath.ToSlash(p.Source.Dir()),
|
Dir: filepath.ToSlash(p.Source.Dir()),
|
||||||
URL: p.URLPath.URL,
|
URL: p.URLPath.URL,
|
||||||
IsMultihost: p.s.owner.IsMultihost(),
|
IsMultihost: p.s.owner.IsMultihost(),
|
||||||
|
|
|
@ -357,7 +357,7 @@ type SiteInfo struct {
|
||||||
BuildDrafts bool
|
BuildDrafts bool
|
||||||
canonifyURLs bool
|
canonifyURLs bool
|
||||||
relativeURLs bool
|
relativeURLs bool
|
||||||
uglyURLs bool
|
uglyURLs func(p *Page) bool
|
||||||
preserveTaxonomyNames bool
|
preserveTaxonomyNames bool
|
||||||
Data *map[string]interface{}
|
Data *map[string]interface{}
|
||||||
|
|
||||||
|
@ -413,6 +413,9 @@ func newSiteInfo(cfg siteBuilderCfg) SiteInfo {
|
||||||
multilingual: newMultiLingualForLanguage(cfg.language),
|
multilingual: newMultiLingualForLanguage(cfg.language),
|
||||||
PageCollections: cfg.pageCollections,
|
PageCollections: cfg.pageCollections,
|
||||||
Params: make(map[string]interface{}),
|
Params: make(map[string]interface{}),
|
||||||
|
uglyURLs: func(p *Page) bool {
|
||||||
|
return false
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1035,6 +1038,24 @@ func (s *Site) initializeSiteInfo() {
|
||||||
multilingual = s.owner.multilingual
|
multilingual = s.owner.multilingual
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var uglyURLs = func(p *Page) bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
v := s.Cfg.Get("uglyURLs")
|
||||||
|
if v != nil {
|
||||||
|
if vv, ok := v.(bool); ok {
|
||||||
|
uglyURLs = func(p *Page) bool {
|
||||||
|
return vv
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
m := cast.ToStringMapBool(v)
|
||||||
|
uglyURLs = func(p *Page) bool {
|
||||||
|
return m[p.Section()]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s.Info = SiteInfo{
|
s.Info = SiteInfo{
|
||||||
Title: lang.GetString("title"),
|
Title: lang.GetString("title"),
|
||||||
Author: lang.GetStringMap("author"),
|
Author: lang.GetStringMap("author"),
|
||||||
|
@ -1052,7 +1073,7 @@ func (s *Site) initializeSiteInfo() {
|
||||||
BuildDrafts: s.Cfg.GetBool("buildDrafts"),
|
BuildDrafts: s.Cfg.GetBool("buildDrafts"),
|
||||||
canonifyURLs: s.Cfg.GetBool("canonifyURLs"),
|
canonifyURLs: s.Cfg.GetBool("canonifyURLs"),
|
||||||
relativeURLs: s.Cfg.GetBool("relativeURLs"),
|
relativeURLs: s.Cfg.GetBool("relativeURLs"),
|
||||||
uglyURLs: s.Cfg.GetBool("uglyURLs"),
|
uglyURLs: uglyURLs,
|
||||||
preserveTaxonomyNames: lang.GetBool("preserveTaxonomyNames"),
|
preserveTaxonomyNames: lang.GetBool("preserveTaxonomyNames"),
|
||||||
PageCollections: s.PageCollections,
|
PageCollections: s.PageCollections,
|
||||||
Menus: &s.Menus,
|
Menus: &s.Menus,
|
||||||
|
|
|
@ -87,3 +87,40 @@ func TestPageCount(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUglyURLsPerSection(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
assert := require.New(t)
|
||||||
|
|
||||||
|
const dt = `---
|
||||||
|
title: Do not go gentle into that good night
|
||||||
|
---
|
||||||
|
|
||||||
|
Wild men who caught and sang the sun in flight,
|
||||||
|
And learn, too late, they grieved it on its way,
|
||||||
|
Do not go gentle into that good night.
|
||||||
|
|
||||||
|
`
|
||||||
|
|
||||||
|
cfg, fs := newTestCfg()
|
||||||
|
|
||||||
|
cfg.Set("uglyURLs", map[string]bool{
|
||||||
|
"sect2": true,
|
||||||
|
})
|
||||||
|
|
||||||
|
writeSource(t, fs, filepath.Join("content", "sect1", "p1.md"), dt)
|
||||||
|
writeSource(t, fs, filepath.Join("content", "sect2", "p2.md"), dt)
|
||||||
|
|
||||||
|
s := buildSingleSite(t, deps.DepsCfg{Fs: fs, Cfg: cfg}, BuildCfg{SkipRender: true})
|
||||||
|
|
||||||
|
assert.Len(s.RegularPages, 2)
|
||||||
|
|
||||||
|
notUgly := s.getPage(KindPage, "sect1/p1.md")
|
||||||
|
assert.NotNil(notUgly)
|
||||||
|
assert.Equal("/sect1/p1/", notUgly.RelPermalink())
|
||||||
|
|
||||||
|
ugly := s.getPage(KindPage, "sect2/p2.md")
|
||||||
|
assert.NotNil(ugly)
|
||||||
|
assert.Equal("/sect2/p2.html", ugly.RelPermalink())
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue