--- 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 that 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).