Filters #
Various template engines can be extended with custom filters to modify content. Here’s an example:
Syntax Nunjucks or Liquid
<h1>{{ name | makeUppercase }}</h1>
Syntax Handlebars
<h1>{{ makeUppercase name }}</h1>
Syntax JavaScript
New in v0.7.0module.exports = function({name}) {
return `<h1>${this.makeUppercase(name)}</h1>`;
};
These can be added using the Configuration API. Here are a few examples:
Filename .eleventy.js
module.exports = function(eleventyConfig) {
// Liquid Filter
eleventyConfig.addLiquidFilter("makeUppercase", function(value) { … });
// Nunjucks Filter
eleventyConfig.addNunjucksFilter("makeUppercase", function(value) { … });
// Handlebars Filter
eleventyConfig.addHandlebarsHelper("makeUppercase", function(value) { … });
// JavaScript Template Function (New in 0.7.0)
eleventyConfig.addJavaScriptFunction("makeUppercase", function(value) { … });
// or, use a Universal filter (an alias for all of the above)
eleventyConfig.addFilter("makeUppercase", function(value) { … });
};
Read more about filters on the individual Template Language documentation pages:
Universal Filters #
Universal filters can be added in a single place and are available to multiple template engines, simultaneously. This is currently supported in JavaScript (New in 0.7.0), Nunjucks, Liquid, and Handlebars.
Filename .eleventy.js
module.exports = function(eleventyConfig) {
// Universal filters add to:
// * Liquid
// * Nunjucks
// * Handlebars
// * JavaScript (New in 0.7.0)
eleventyConfig.addFilter("myFilter", function(value) {
return value;
});
};
Eleventy Provided Universal Filters #
We also provide a few universal filters, built-in:
url
Filter: Normalize absolute paths in your content, allows easily changing deploy subdirectories for your project.slug
Filter:"My string"
to"my-string"
for permalinks.log
Filter:console.log
inside templates.get*CollectionItem
Filters: Get next or previous collection items for easy linking.