Craft 3 Documentation

Functions

On top of the template functions that Twig comes with, Craft provides a few of its own:

alias( string ) #

Passes a string through Craft::getAlias(), which will check if the string begins with an alias. (See Configuration for more info.)

<img src="{{ alias('@assetBaseUrl/images/logo.png') }}">

beginBody() #

Outputs any scripts and styles that were registered for the “begin body” position. It should be placed right after your <body> tag.

<body>
    {{ beginBody() }}

    <h1>{{ page.name }}</h1>
    {{ page.body }}
</body>

ceil( num ) #

Rounds a number up.

{{ ceil(42.1) }} => 43

className( object ) #

Returns the fully qualified class name of a given object.

clone( object ) #

Clones a given object.

{% set query = craft.entries.section('news') %}
{% set articles = clone(query).type('articles') %}

csrfInput() #

Returns a hidden CSRF Token input. All sites that have CSRF Protection enabled must include this in each form that submits via POST.

<form method="post">
    {{ csrfInput() }}
    <!-- ... -->
</form>

endBody() #

Outputs any scripts and styles that were registered for the “end body” position. It should be placed right before your </body> tag.

<body>
    <h1>{{ page.name }}</h1>
    {{ page.body }}

    {{ endBody() }}
</body>

floor( num ) #

Rounds a number down.

{{ floor(42.9) }} => 42

getenv( name ) #

Returns the value of an environment variable.

{{ getenv('MAPS_API_KEY') }}

Outputs any scripts and styles that were registered for the “head” position. It shoul be placed right before your </head> tag.

<head>
    <title>{{ siteName }}</title>
    {{ head() }}
</head>

max( num1, num2, ... ) #

Returns the largest number of a given set.

{{ max(1, 2, 3) }} => 3

min( num1, num2, ... ) #

Returns the smallest number of a given set.

{{ min(1, 2, 3) }} => 1

redirectInput( url ) #

Shortcut for typing <input type="hidden" name="redirect" value="{{ url|hash }}">.

round( num ) #

Rounds off a number to the closest integer.

{{ round(42.1) }} => 42
{{ round(42.9) }} => 43

shuffle( array ) #

Randomizes the order of the elements within an array.

{% set promos = shuffle(homepage.promos) %}

{% for promo in promos %}
    <div class="promo {{ promo.slug }}">
        <h3>{{ promo.title }}</h3>
        <p>{{ promo.description }}</p>
        <a class="cta" href="{{ promo.ctaUrl }}">{{ promo.ctaLabel }}</a>
    </div>
{% endfor %}

svg( svg, sanitize ) #

Returns the contents of a given SVG file.

Arguments #

The svg() function has the following arguments:

url( path, params, protocol, mustShowScriptName ) #

Returns a URL to a page on your site.

<a href="{{ url('company/contact') }}">Contact Us</a>

Arguments #

The url() function has the following arguments:

You can use the url() function for appending query string parameters and/or enforcing a protocol on an absolute URL:

{{ url('http://example.com', 'foo=1', 'https') }}
{# Outputs: "https://example.com?foo=1" #}