Skip to content

Commit 805222b

Browse files
committed
Use Page.Params more consistently when adding metadata
1 parent 6d2281c commit 805222b

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

‎hugolib/page.go‎

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -919,29 +919,37 @@ func (p *Page) update(f interface{}) error {
919919
switch loki {
920920
case "title":
921921
p.Title = cast.ToString(v)
922+
p.Params[loki] = p.Title
922923
case "linktitle":
923924
p.linkTitle = cast.ToString(v)
925+
p.Params[loki] = p.linkTitle
924926
case "description":
925927
p.Description = cast.ToString(v)
926-
p.Params["description"] = p.Description
928+
p.Params[loki] = p.Description
927929
case "slug":
928930
p.Slug = cast.ToString(v)
931+
p.Params[loki] = p.Slug
929932
case "url":
930933
if url := cast.ToString(v); strings.HasPrefix(url, "http://") || strings.HasPrefix(url, "https://") {
931934
return fmt.Errorf("Only relative URLs are supported, %v provided", url)
932935
}
933936
p.URLPath.URL = cast.ToString(v)
937+
p.Params[loki] = p.URLPath.URL
934938
case "type":
935939
p.contentType = cast.ToString(v)
940+
p.Params[loki] = p.contentType
936941
case "extension", "ext":
937942
p.extension = cast.ToString(v)
943+
p.Params[loki] = p.extension
938944
case "keywords":
939945
p.Keywords = cast.ToStringSlice(v)
946+
p.Params[loki] = p.Keywords
940947
case "date":
941948
p.Date, err = cast.ToTimeE(v)
942949
if err != nil {
943950
p.s.Log.ERROR.Printf("Failed to parse date '%v' in page %s", v, p.File.Path())
944951
}
952+
p.Params[loki] = p.Date
945953
case "lastmod":
946954
p.Lastmod, err = cast.ToTimeE(v)
947955
if err != nil {
@@ -965,21 +973,27 @@ func (p *Page) update(f interface{}) error {
965973
*published = cast.ToBool(v)
966974
case "layout":
967975
p.Layout = cast.ToString(v)
976+
p.Params[loki] = p.Layout
968977
case "markup":
969978
p.Markup = cast.ToString(v)
979+
p.Params[loki] = p.Markup
970980
case "weight":
971981
p.Weight = cast.ToInt(v)
982+
p.Params[loki] = p.Weight
972983
case "aliases":
973984
p.Aliases = cast.ToStringSlice(v)
974985
for _, alias := range p.Aliases {
975986
if strings.HasPrefix(alias, "http://") || strings.HasPrefix(alias, "https://") {
976987
return fmt.Errorf("Only relative aliases are supported, %v provided", alias)
977988
}
978989
}
990+
p.Params[loki] = p.Aliases
979991
case "status":
980992
p.Status = cast.ToString(v)
993+
p.Params[loki] = p.Status
981994
case "sitemap":
982995
p.Sitemap = parseSitemap(cast.ToStringMap(v))
996+
p.Params[loki] = p.Sitemap
983997
case "iscjklanguage":
984998
isCJKLanguage = new(bool)
985999
*isCJKLanguage = cast.ToBool(v)
@@ -1034,17 +1048,20 @@ func (p *Page) update(f interface{}) error {
10341048
} else if published != nil {
10351049
p.Draft = !*published
10361050
}
1051+
p.Params["draft"] = p.Draft
10371052

10381053
if p.Date.IsZero() && p.s.Cfg.GetBool("useModTimeAsFallback") {
10391054
fi, err := p.s.Fs.Source.Stat(filepath.Join(p.s.PathSpec.AbsPathify(p.s.Cfg.GetString("contentDir")), p.File.Path()))
10401055
if err == nil {
10411056
p.Date = fi.ModTime()
1057+
p.Params["date"] = p.Date
10421058
}
10431059
}
10441060

10451061
if p.Lastmod.IsZero() {
10461062
p.Lastmod = p.Date
10471063
}
1064+
p.Params["lastmod"] = p.Lastmod
10481065

10491066
if isCJKLanguage != nil {
10501067
p.isCJKLanguage = *isCJKLanguage
@@ -1055,6 +1072,7 @@ func (p *Page) update(f interface{}) error {
10551072
p.isCJKLanguage = false
10561073
}
10571074
}
1075+
p.Params["iscjklanguage"] = p.isCJKLanguage
10581076

10591077
return nil
10601078

‎hugolib/page_test.go‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,7 +1336,7 @@ some content
13361336
func TestPageParams(t *testing.T) {
13371337
t.Parallel()
13381338
s := newTestSite(t)
1339-
want := map[string]interface{}{
1339+
wantedMap := map[string]interface{}{
13401340
"tags": []string{"hugo", "web"},
13411341
// Issue #2752
13421342
"social": []interface{}{
@@ -1348,7 +1348,9 @@ func TestPageParams(t *testing.T) {
13481348
for i, c := range pagesParamsTemplate {
13491349
p, err := s.NewPageFrom(strings.NewReader(c), "content/post/params.md")
13501350
require.NoError(t, err, "err during parse", "#%d", i)
1351-
assert.Equal(t, want, p.Params, "#%d", i)
1351+
for key, _ := range wantedMap {
1352+
assert.Equal(t, wantedMap[key], p.Params[key], "#%d", key)
1353+
}
13521354
}
13531355
}
13541356

0 commit comments

Comments
 (0)