Customize Front Matter Parsing New in v0.9.0 #
Eleventy uses the gray-matter npm package for parsing front matter. gray-matter allows additional options that aren’t available by default in Eleventy.
Check out the full list of available gray-matter options. By default, Eleventy uses gray-matter’s default options.
module.exports = function(eleventyConfig) {
eleventyConfig.setFrontMatterParsingOptions({
/* … */
});
};Example: Parse excerpts from content New in v0.9.0 #
module.exports = function(eleventyConfig) {
eleventyConfig.setFrontMatterParsingOptions({
excerpt: true,
// Optional, default is "---"
excerpt_separator: "<!-- excerpt -->"
});
};Now you can do things like this:
---
title: My page title
---
This is the start of my content and this will be shown as the excerpt.
<!-- excerpt -->
This is a continuation of my content…Your template’s content will include the excerpt but remove the separator:
This is the start of my content and this will be shown as the excerpt.
This is a continuation of my content…
page.excerpt now holds This is the start of my content and this will be shown as the excerpt.
Changing where your excerpt is stored #
If you don’t want to use page.excerpt to store your excerpt value, then use your own excerpt_alias option (any valid path to Lodash Set will work) like so:
module.exports = function(eleventyConfig) {
eleventyConfig.setFrontMatterParsingOptions({
excerpt: true,
// Eleventy custom option
// The variable where the excerpt will be stored.
excerpt_alias: 'my_custom_excerpt'
});
};Using excerpt_alias: 'my_custom_excerpt' means that the excerpt will be available in your templates as the my_custom_excerpt variable instead of page.excerpt.
Example: using TOML for front matter parsing New in v0.9.0 #
While Eleventy does include support for JSON, YAML, and JS front matter out of the box, you may want to add additional formats too.
const toml = require("toml");
module.exports = function(eleventyConfig) {
eleventyConfig.setFrontMatterParsingOptions({
engines: {
toml: toml.parse.bind(toml)
}
});
};For more information, read this example on the gray-matter documentation.
Expected "\n" but end of input found., logged at Eleventy #586.Now you can use TOML in your front matter like this:
---toml
title = "My page title using TOML"
---
<!doctype html>
<html>
…
