mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
fc045e12a9
commit
82abca32fa
3 changed files with 87 additions and 1 deletions
|
@ -424,7 +424,7 @@ In the above example, you may want `{{.Title}}` to point the `title` field you h
|
||||||
### By Publish Date
|
### By Publish Date
|
||||||
|
|
||||||
{{< code file="layouts/partials/by-page-publish-date.html" >}}
|
{{< code file="layouts/partials/by-page-publish-date.html" >}}
|
||||||
<!-- Groups content by month according to the "publishdate" field in front matter -->
|
<!-- Groups content by month according to the "publishDate" field in front matter -->
|
||||||
{{ range .Pages.GroupByPublishDate "2006-01" }}
|
{{ range .Pages.GroupByPublishDate "2006-01" }}
|
||||||
<h3>{{ .Key }}</h3>
|
<h3>{{ .Key }}</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -438,6 +438,41 @@ In the above example, you may want `{{.Title}}` to point the `title` field you h
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{< /code >}}
|
{{< /code >}}
|
||||||
|
|
||||||
|
|
||||||
|
### By Lastmod
|
||||||
|
|
||||||
|
{{< code file="layouts/partials/by-page-lastmod.html" >}}
|
||||||
|
<!-- Groups content by month according to the "lastMod" field in front matter -->
|
||||||
|
{{ range .Pages.GroupByLastmod "2006-01" }}
|
||||||
|
<h3>{{ .Key }}</h3>
|
||||||
|
<ul>
|
||||||
|
{{ range .Pages }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .Permalink }}">{{ .Title }}</a>
|
||||||
|
<div class="meta">{{ .Lastmod.Format "Mon, Jan 2, 2006" }}</div>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
|
{{< /code >}}
|
||||||
|
|
||||||
|
### By Expiry Date
|
||||||
|
|
||||||
|
{{< code file="layouts/partials/by-page-expiry-date.html" >}}
|
||||||
|
<!-- Groups content by month according to the "expiryDate" field in front matter -->
|
||||||
|
{{ range .Pages.GroupByExpiryDate "2006-01" }}
|
||||||
|
<h3>{{ .Key }}</h3>
|
||||||
|
<ul>
|
||||||
|
{{ range .Pages }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .Permalink }}">{{ .Title }}</a>
|
||||||
|
<div class="meta">{{ .ExpiryDate.Format "Mon, Jan 2, 2006" }}</div>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
|
{{< /code >}}
|
||||||
|
|
||||||
### By Page Parameter
|
### By Page Parameter
|
||||||
|
|
||||||
{{< code file="layouts/partials/by-page-param.html" >}}
|
{{< code file="layouts/partials/by-page-param.html" >}}
|
||||||
|
|
|
@ -284,6 +284,20 @@ func (p Pages) GroupByExpiryDate(format string, order ...string) (PagesGroup, er
|
||||||
return p.groupByDateField(sorter, formatter, order...)
|
return p.groupByDateField(sorter, formatter, order...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GroupByLastmod groups by the given page's Lastmod value in
|
||||||
|
// the given format and with the given order.
|
||||||
|
// Valid values for order is asc, desc, rev and reverse.
|
||||||
|
// For valid format strings, see https://golang.org/pkg/time/#Time.Format
|
||||||
|
func (p Pages) GroupByLastmod(format string, order ...string) (PagesGroup, error) {
|
||||||
|
sorter := func(p Pages) Pages {
|
||||||
|
return p.ByLastmod()
|
||||||
|
}
|
||||||
|
formatter := func(p Page) string {
|
||||||
|
return p.Lastmod().Format(format)
|
||||||
|
}
|
||||||
|
return p.groupByDateField(sorter, formatter, order...)
|
||||||
|
}
|
||||||
|
|
||||||
// GroupByParamDate groups by a date set as a param on the page in
|
// GroupByParamDate groups by a date set as a param on the page in
|
||||||
// the given format and with the given order.
|
// the given format and with the given order.
|
||||||
// Valid values for order is asc, desc, rev and reverse.
|
// Valid values for order is asc, desc, rev and reverse.
|
||||||
|
|
|
@ -49,6 +49,7 @@ func preparePageGroupTestPages(t *testing.T) Pages {
|
||||||
p.date = cast.ToTime(src.date)
|
p.date = cast.ToTime(src.date)
|
||||||
p.pubDate = cast.ToTime(src.date)
|
p.pubDate = cast.ToTime(src.date)
|
||||||
p.expiryDate = cast.ToTime(src.date)
|
p.expiryDate = cast.ToTime(src.date)
|
||||||
|
p.lastMod = cast.ToTime(src.date).AddDate(3, 0, 0)
|
||||||
p.params["custom_param"] = src.param
|
p.params["custom_param"] = src.param
|
||||||
p.params["custom_date"] = cast.ToTime(src.date)
|
p.params["custom_date"] = cast.ToTime(src.date)
|
||||||
pages = append(pages, p)
|
pages = append(pages, p)
|
||||||
|
@ -378,6 +379,42 @@ func TestGroupByParamDate(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGroupByLastmod(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
pages := preparePageGroupTestPages(t)
|
||||||
|
expect := PagesGroup{
|
||||||
|
{Key: "2015-04", Pages: Pages{pages[4], pages[2], pages[0]}},
|
||||||
|
{Key: "2015-03", Pages: Pages{pages[3]}},
|
||||||
|
{Key: "2015-01", Pages: Pages{pages[1]}},
|
||||||
|
}
|
||||||
|
|
||||||
|
groups, err := pages.GroupByLastmod("2006-01")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to make PagesGroup array: %s", err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(groups, expect) {
|
||||||
|
t.Errorf("PagesGroup has unexpected groups. It should be %#v, got %#v", expect, groups)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGroupByLastmodInReverseOrder(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
pages := preparePageGroupTestPages(t)
|
||||||
|
expect := PagesGroup{
|
||||||
|
{Key: "2015-01", Pages: Pages{pages[1]}},
|
||||||
|
{Key: "2015-03", Pages: Pages{pages[3]}},
|
||||||
|
{Key: "2015-04", Pages: Pages{pages[0], pages[2], pages[4]}},
|
||||||
|
}
|
||||||
|
|
||||||
|
groups, err := pages.GroupByLastmod("2006-01", "asc")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to make PagesGroup array: %s", err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(groups, expect) {
|
||||||
|
t.Errorf("PagesGroup has unexpected groups. It should be\n%#v, got\n%#v", expect, groups)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGroupByParamDateInReverseOrder(t *testing.T) {
|
func TestGroupByParamDateInReverseOrder(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
pages := preparePageGroupTestPages(t)
|
pages := preparePageGroupTestPages(t)
|
||||||
|
|
Loading…
Reference in a new issue