eleventyNavigation | relatedLinks | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
|
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.
{% codetitle ".eleventy.js" %}
module.exports = function(eleventyConfig) {
eleventyConfig.setFrontMatterParsingOptions({
/* … */
});
};
{% codetitle ".eleventy.js" %}
module.exports = function(eleventyConfig) {
eleventyConfig.setFrontMatterParsingOptions({
excerpt: true,
// Optional, default is "---"
excerpt_separator: "<!-- excerpt -->"
});
};
Now you can do things like this:
{% codetitle "sample.md" %}
---
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.
{% callout "info" %}Don’t want your excerpt included with your content? The unique feature of this configuration is that you can keep your excerpt right at the beginning of your content. You can add a delimiter where you want the excerpt to end and the rest of the content to begin. If you want the excerpt to be separate from the content, make a new key for this and store it separately in your front matter or a data file.{% endcallout %}
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:
{% codetitle ".eleventy.js" %}
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
.
While Eleventy does include support for JSON, YAML, and JS front matter out of the box, you may want to add additional formats too.
{% codetitle ".eleventy.js" %}
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.
{% callout "warn" %}Windows users: There is an upstream issue with the TOML dependency used here: Expected "\n" but end of input found.
, logged at Eleventy #586.{% endcallout %}
Now you can use TOML in your front matter like this:
{% codetitle "sample.md" %}
---toml
title = "My page title using TOML"
---
<!doctype html>
<html>
…