Using
The asset pipeline in XSL stylesheets
Namespace
Since the asset pipeline uses namespaced functions, the namespace http://git.io/sym-asset-pipeline needs to be declared in the ‘xsl:stylesheet’ tag.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ap="http://git.io/sym-asset-pipeline"
exclude-result-prefixes="ap">
CSS
CSS files are specified using the ‘css-url’ function.
<link rel="stylesheet" href="{ap:css-url('application')}" media="screen"/>
Asset Pipeline will look for a file called application.css
or application.css.php
in that order. If neither file exists and if a CSS preprocessor extension is installed then application.<preprocessor file extension>
or application.<preprocessor file extension>.php
will be looked for.
JavaScript
JavaScript files are specified using the ‘js-url’ function.
<script src="{ap:js-url('application')}"></script>
Asset Pipeline will look for a suitable file in the same way as for CSS.
Images and other non-code files
Files other than CSS/JS are specified using the url-for function.
<img src="{ap:url('picture.jpg')}" />
Data
Data in base 64 format can be included using the data function.
<img src="{ap:data('picture.jpg')}" />
The above will be rendered as:
<img src="data:image/jpeg;base64,iVBORw0KGgo....." />
Using PHP within CSS and JS
To embed PHP, add the PHP extension to the file name, e.g. styles.css.php
. In the example below, the URL for pattern.png
will be inserted.
body {
background-image: url(<?php include 'ap.url://pattern.png' ?>);
background-repeat: repeat;
}
The above will render on page load as:
body {
background-image: url(/pattern.png/?mode=pipeline);
background-repeat: repeat;
}
The code below shows how to include base 64 data instead of a URL:
body {
background-image: url(<?php include 'ap://pattern.png' ?>);
background-repeat: repeat;
}
Manifest files
PHP can be used to include a number of code files into a single file.
<!-- application.css.php -->
<?php
include 'ap://main.css';
include 'ap://home.styl';
include 'ap://articles'; //The pipeline will look for a suitable file such as 'articles.css' or 'articles.styl'
Precompiling assets for production
When a website is put into production, there is no longer any need to recompile assets on page load.
Specifying the files to be precompiled
Non-text files will be compiled automatically. Code files must be specified, and this is done by putting a comma-separated list of files in the ‘Precompile Code Files’ field on Symphony’s Preferences page.
How to precompile
Select ‘Precompile Assets’ from Symphony’s System menu.