summaryrefslogtreecommitdiffhomepage
path: root/docs/content/templates/functions.md
blob: a9297294d3b6899fe1b92da720635c232a10523d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
---
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.

eg.
    {{ range first 10 .Data.Pages }}
        {{ .Render "summary"}}
    {{ 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/highlight).