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,
|
||||
Kind: p.Kind,
|
||||
Sections: p.sections,
|
||||
UglyURLs: p.s.Info.uglyURLs,
|
||||
UglyURLs: p.s.Info.uglyURLs(p),
|
||||
Dir: filepath.ToSlash(p.Source.Dir()),
|
||||
URL: p.URLPath.URL,
|
||||
IsMultihost: p.s.owner.IsMultihost(),
|
||||
|
|
|
@ -357,7 +357,7 @@ type SiteInfo struct {
|
|||
BuildDrafts bool
|
||||
canonifyURLs bool
|
||||
relativeURLs bool
|
||||
uglyURLs bool
|
||||
uglyURLs func(p *Page) bool
|
||||
preserveTaxonomyNames bool
|
||||
Data *map[string]interface{}
|
||||
|
||||
|
@ -413,6 +413,9 @@ func newSiteInfo(cfg siteBuilderCfg) SiteInfo {
|
|||
multilingual: newMultiLingualForLanguage(cfg.language),
|
||||
PageCollections: cfg.pageCollections,
|
||||
Params: make(map[string]interface{}),
|
||||
uglyURLs: func(p *Page) bool {
|
||||
return false
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1035,6 +1038,24 @@ func (s *Site) initializeSiteInfo() {
|
|||
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{
|
||||
Title: lang.GetString("title"),
|
||||
Author: lang.GetStringMap("author"),
|
||||
|
@ -1052,7 +1073,7 @@ func (s *Site) initializeSiteInfo() {
|
|||
BuildDrafts: s.Cfg.GetBool("buildDrafts"),
|
||||
canonifyURLs: s.Cfg.GetBool("canonifyURLs"),
|
||||
relativeURLs: s.Cfg.GetBool("relativeURLs"),
|
||||
uglyURLs: s.Cfg.GetBool("uglyURLs"),
|
||||
uglyURLs: uglyURLs,
|
||||
preserveTaxonomyNames: lang.GetBool("preserveTaxonomyNames"),
|
||||
PageCollections: s.PageCollections,
|
||||
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