Reference

Guide

js()

Creates a script tag to load a javascript file

js(string|array $url, string|array $options = null): string|null

Parameters

Name Type Default Description
$url string|array
$options string|array null

Return type

string|null

Example

Creating a single script tag

<?= js('assets/js/site.js') ?>

Creating multiple script tags

<?= js([
  'assets/js/jquery.js',
  'assets/js/jquery.ui.js',
  'assets/js/site.js',
]) ?>

Autoloading template specific script files

<?= js('@auto') ?>

Template specific JS files must be located in /assets/js/templates and named like the template.

Template JS file
/site/templates/project.php /assets/js/templates/project.js
/site/templates/home.php /assets/js/templates/home.js
/site/templates/blog.php /assets/js/templates/blog.js

Async

If you want the JS files to be loaded asynchronously (if supported by the browser), you can set a second parameter to true:

<?= js('assets/js/site.js', true) ?>

This also works with an array of paths:

<?= js([
  'assets/js/jquery.js',
  'assets/js/jquery.ui.js',
  'assets/js/site.js',
], true) ?>

Other attributes

You can also pass an array of completely custom attributes like the defer attribute:

<?= js('assets/js/site.js', ['async' => true, 'defer' => true, 'data-something' => 'my-value']) ?>

Source code

kirby/config/helpers.php#L359