Adding documentation about 'where' and cleaning up docs around first.

This commit is contained in:
spf13 2014-08-30 00:57:38 -04:00
parent 0ce4ec1edb
commit 93addfcbee
3 changed files with 63 additions and 2 deletions

View file

@ -2,7 +2,7 @@
aliases: aliases:
- /layout/functions/ - /layout/functions/
date: 2013-07-01 date: 2013-07-01
linktitle: Single linktitle: Single Content
menu: menu:
main: main:
parent: layout parent: layout

View file

@ -38,11 +38,32 @@ eg. {{echoParam .Params "project_url" }}
### first ### first
Slices an array to only the first X elements. Slices an array to only the first X elements.
Works on [lists](/templates/list/), [taxonomies](/taxonomies/displaying/), [terms](/templates/terms/), [groups](/templates/list/)
eg. eg.
{{ range first 10 .Data.Pages }} {{ range first 10 .Data.Pages }}
{{ .Render "summary"}} {{ .Render "summary"}}
{{ end }} {{ end }}
### where
Filters an array to only elements containing a matching value for a given field.
Works on [lists](/templates/list/), [taxonomies](/taxonomies/displaying/), [terms](/templates/terms/), [groups](/templates/list/)
eg.
{{ range where .Data.Pages "Section" "post" }}
{{ .Content}}
{{ end }}
*where and first can be stacked*
eg.
{{ range first 5 (where .Data.Pages "Section" "post") }}
{{ .Content}}
{{ end }}
## Math ## Math

View file

@ -2,7 +2,7 @@
aliases: aliases:
- /layout/indexes/ - /layout/indexes/
date: 2013-07-01 date: 2013-07-01
linktitle: List linktitle: List of Content
menu: menu:
main: main:
parent: layout parent: layout
@ -296,3 +296,43 @@ within each group in alphabetical order by title.
{{ end }} {{ end }}
</ul> </ul>
{{ end }} {{ end }}
## Filtering & Limiting Content
Sometimes you only want to list a subset of the available content. A common
request is to only display “Posts” on the homepage. Using the `where` function
you can do just that.
### First
`first` works like the limit keyword in SQL. It reduces the array to only the
first X elements. It takes the array and number of elements as input.
{{ range first 10 .Data.Pages }}
{{ .Render "summary"}}
{{ end }}
### Where
`where` works in a similar manner to the where keyword in SQL. It selects all
elements of the slice that match the provided field and value. It takes three
arguments 'array or slice of maps or structs', 'key or field name' and 'match
value'
{{ range where .Data.Pages "Section" "post" }}
{{ .Content}}
{{ end }}
### First & Where Together
Using both together can be very powerful.
{{ range first 5 (where .Data.Pages "Section" "post") }}
{{ .Content}}
{{ end }}
If `where` or `first` receives invalid input or a field name that doesnt exist they will provide an error and stop site generation.
These are both template functions and work on not only
[lists](/templates/list/), but [taxonomies](/taxonomies/displaying/),
[terms](/templates/terms/) and [groups](/templates/list/).