|theme
The |theme
filter returns an address relative to the active theme path of the website. The result is an absolute URL, including domain and protocol, to the asset specified in the filter parameter. Theme assets usually reside in the assets subdirectory of a theme directory.
<script type="text/javascript" src="{{ 'assets/js/menu.js'|theme }}"></script>
If the website address is https://octobercms.com and the active theme is called website
the above example would output the following:
<script type="text/javascript" src="http://october.com/themes/website/assets/js/menu.js"></script>
# Combining CSS and JavaScript
The filter can also be used to combine assets of the same type by passing an array of files.
<link href="{{ [
'assets/css/styles1.css',
'assets/css/styles2.css'
]|theme }}" rel="stylesheet">
Note: You can enable the assets minification with the
enableAssetMinify
parameter in theconfig/cms.php
script. By default the minification is disabled.
# Combiner Aliases
The asset combiner supports common aliases that substitute file paths, these will begin with the @
symbol. For example the AJAX framework assets can be included in the combiner.
<script src="{{ [
'@framework.extras',
'assets/javascript/app.js'
]|theme }}"></script>
The following aliases are supported:
Alias | Description |
---|---|
@framework | AJAX framework extras, subsitute for {% framework %} tag (JavaScript) |
@framework.extras | AJAX framework extras, subsitute for {% framework extras %} tag (JavaScript, CSS) |
@framework.turbo | AJAX framework turbo, subsitute for {% framework turbo %} tag (JavaScript) |
@framework.bundle | AJAX framework bundle, subsitute for {% framework extras turbo %} tag (JavaScript, CSS) |
:: tip
The same alias can be used for JavaScript or CSS, for example @framework.extras
. At least one other reference with a CSS or JS file extension is needed in the array to determine which to use.
:::
# External Combiner Paths
In some cases you may wish to combine a file outside the theme, this is achieved by prefixing the path with a symbol to create a dynamic path. For example, a path beginning with ~/
will create a path relative to the application:
<script src="{{ ['~/modules/system/assets/js/framework.js']|theme }}"></script>
These symbols are supported for creating dynamic paths:
Symbol | Description |
---|---|
~ | Relative to the application directory |
$ | Relative to the plugins directory |
# | Relative to the themes directory |