hugo/docs/content/templates/functions.md
2014-09-01 08:19:40 -04:00

130 lines
2.8 KiB
Markdown

---
aliases:
- /layout/functions/
date: 2013-07-01
linktitle: Functions
menu:
main:
parent: layout
next: /templates/variables
prev: /templates/go-templates
title: Hugo Template Functions
weight: 20
---
Hugo uses the excellent Go html/template library for its template engine.
It is an extremely lightweight engine that provides a very small amount of
logic. In our experience it is just the right amount of logic to be able
to create a good static website.
Go templates are lightweight but extensible. Hugo has added the following
functions to the basic template logic.
Go documentation for the built-in functions can be found [here](http://golang.org/pkg/text/template/)
## General
### isset
Return true if the parameter is set.
Takes either a slice, array or channel and an index or a map and a key as input.
eg. {{ if isset .Params "project_url" }} {{ index .Params "project_url" }}{{ end }}
### echoParam
If parameter is set, then echo it.
eg. {{echoParam .Params "project_url" }}
### first
Slices an array to only the first X elements.
Works on [lists](/templates/list/), [taxonomies](/taxonomies/displaying/), [terms](/templates/terms/), [groups](/templates/list/)
eg.
{{ range first 10 .Data.Pages }}
{{ .Render "summary"}}
{{ 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
### add
Adds two integers.
eg {{add 1 2}} -> 3
### sub
Subtracts two integers.
eg {{sub 3 2}} -> 1
### div
Divides two integers.
eg {{div 6 3}} -> 2
### mul
Multiplies two integers.
eg {{mul 2 3}} -> 6
### mod
Modulus of two integers.
eg {{mod 15 3}} -> 0
### modBool
Boolean of modulus of two integers.
true if modulus is 0.
eg {{modBool 15 3}} -> true
## Strings
### urlize
Takes a string and sanitizes it for usage in urls, converts spaces to "-".
eg. <a href="/tags/{{ . | urlize }}">{{ . }}</a>
### safeHtml
Declares the provided string as "safe" so go templates will not filter it.
eg. {{ .Params.CopyrightHTML | safeHtml }}
### lower
Convert all characters in string to lowercase.
eg {{lower "BatMan"}} -> "batman"
### upper
Convert all characters in string to uppercase.
eg {{upper "BatMan"}} -> "BATMAN"
### title
Convert all characters in string to titlecase.
eg {{title "BatMan"}} -> "Batman"
### highlight
Take a string of code and a language, uses pygments to return the syntax
highlighted code in html. Used in the [highlight shortcode](/extras/highlighting).