Frontmatter

Frontmatter is YAML that you can add to the front of your markdown file. It was first introduced by jekyll and is a convenient way of adding metadata to your plaintext documents.

Dendron supports frontmatter. By default, we add the following keys to a new note created with Dendron:

  • id: a globally unique identifier for the note
  • title: your note title. Used to label nodes in graph view
  • desc: optional description about your note. Will show up in lookup results
  • updated: unix timestamp of when note was updated
  • created: unix timestamp of when note was created

Frontmatter is required in Dendron, and it will warn you in the editor if you have any notes that don't have a frontmatter, or have a frontmatter that's broken. You can fix these by clicking on the lightbulb symbol that appears next to them, or using the fixFrontmatter Doctor action.

Feel free to add your attributes. As long as it doesn't conflict with a Dendron builtin keyword, Dendron will leave it alone. In the future, we plan on adding a lot more functionality to the frontmatter you see in Dendron so stay tuned.

Reserved Keys

Note that not all the keys are written out to the markdown file. Dendron merges the attributes from the markdown frontmatter to its own internal set of attributes.

id

A globally unique identifier for the note. This identifier is used for two things: (1) generating unique URLs when notes are published and (2) ensuring each note in the index is unique.

title

Your note title. Used to label nodes in graph view

desc

Optional description about your note. Will show up in lookup results.

updated

Unix timestamp of when note was updated

created

Unix timestamp of when note was created

parent

Node parent

children

Node children

uri

Absolute filepath to the note

tags

These are used for frontmatter tags.

data

This is reserved for internal use

custom

This is reserved for internal use

Other keys

Note Configuration

You can specify how notes are published via the frontmatter of each note.

canonicalUrl

  • default: undefined

If set, adds CANONICAL_URL when publishing

<link rel="canonical" href="CANONICAL_URL" />

published

  • default: true

To exclude a page from publication, you can add the following to the frontmatter. If you set publishByDefault: false for a hierarchy, this needs to be set to true to publish

...
published: false

If set, do not include the current note in the navigation bar.

  • type: number

If set, denote order that item appears in the published nav bar

NOTE: root has nav_order: 1 so the nav_order of your denoted items must be superior to 1

By default, all notes at a given level are organized alphabetically

- Dendron
  - Alpha
  - Bravo
  - Charlie

Same example where Bravo has nav_order: 2 and Charlie has nav_order: 1

- Dendron
  - Charlie <-- appears first because it has the smallest nav order
  - Bravo 
  - Alpha <-- appears last because notes with `nav_order` are sorted ahead of notes without `nav_order` 

noindex

  • default: false

To tell google to not index a page, you can add the following tag to the frontmatter. You can also have this as a default for a given hierarchy by setting noIndexByDefault: true in the site config.

...
noindex: true

Disable git linking for this page

gitNotePath

When set, override how we generate the URL for the edit on github link.

There are a few special variables you can set:

  • ${noteHierarchy}: this specifies the full hiearchy to the note in posix format
    • eg. foo.bar will translate to foot/bar

collection options

has_collection

  • default: false

Whether a given page is a collection. A collection doesn't have a table of contents and allows you to set collection specific options.

NOTE: Setting this property has_collection in the frontmatter of parent note is sufficient.

date

If set, used to designate a custom publication date. By default, use timestamp of created field.

skipLevels

If set, determines how many levels of children to skip when making the collection. For example, you might have the following hierarchy.

- blog.md
- blog.reading.md
- blog.reading.journal.md
- blog.reading.journal.2020.md
- blog.reading.journal.2020.12.md
- blog.reading.journal.2020.12.20.one.md
- blog.reading.journal.2020.12.31.two.md

When you publish, you might only want to show the leaf nodes and skip the intermediary levels. In the above example, setting skipLevels: 3 on blog.reading.md will result in the following hierarchy being published.

- blog.md
- blog.reading.md
- blog.reading.journal.2020.12.20.one.md
- blog.reading.journal.2020.12.31.two.md

sort_order

  • default: ascending
  • values: ascending|reverse

Sort items in a collection page. Ascending by default. Specify reverse to sort in descending order.

seo options

image

Sets image url for the page. Shows up in twitter card preview

excerpt

Sets a custom og:description tag for the particular page

Line Configuration

You can control publication on a per line basis.

LOCAL_ONLY_LINE

Sometimes, you just want to keep a few lines private while publishing the rest of your vault. You can do that with Local only. In order to mark a line as Local Only, add the following markdown comment at the end of the line:

Hello World!  <!-- Will be published -->

This is a secret <!--LOCAL_ONLY_LINE--> <!-- won't be published -->