This plugin parses the frontmatter of the page using the gray-matter library and optionally displays selected properties in a collapsible panel. See authoring content, Obsidian compatibility and OxHugo compatibility for more information.

Note

For information on how to add, remove or configure plugins, see the Configuration page.

Warning

This plugin must not be removed, otherwise Quartz will break.

Configuration

This plugin accepts the following configuration options:

  • delimiters: the delimiters to use for the frontmatter. Can have one value (e.g. "---") or separate values for opening and closing delimiters (e.g. ["---", "~~~"]). Defaults to "---".
  • language: the language to use for parsing the frontmatter. Can be yaml (default) or toml.
  • includeAll: include all frontmatter properties in the properties panel. When false, only includedProperties are shown. Defaults to false.
  • includedProperties: properties to include when includeAll is false. Defaults to ["description", "tags", "aliases"].
  • excludedProperties: properties to always exclude from display, even when includeAll is true. Defaults to [].
  • hidePropertiesView: hide the visual properties panel while still processing frontmatter. Useful if you only need frontmatter parsing without the UI. Defaults to false.

Default options

quartz.config.yaml
- source: github:quartz-community/note-properties
  enabled: true
  options:
    includeAll: false
    includedProperties:
      - description
      - tags
      - aliases
    excludedProperties: []
    hidePropertiesView: false
    delimiters: "---"
    language: yaml

Properties panel

When enabled, this plugin renders a collapsible “Properties” panel before the page body. The panel displays selected frontmatter fields in a table with automatic type rendering:

  • Strings are shown as plain text. Wikilinks and markdown links within strings are rendered as clickable links.
  • Arrays are rendered as comma-separated lists.
  • Booleans are rendered as disabled checkboxes.
  • Numbers are rendered in a monospace font.
  • Objects are rendered as JSON in a code block.
  • Tags get special treatment: they are rendered as highlighted links that point to the corresponding tag page.
  • Null/undefined values are shown as an em-dash (—).

Per-note overrides

You can control the properties panel on a per-note basis using frontmatter keys:

  • quartz-properties (or quartzProperties): set to true to force-show the panel, or false to force-hide it, overriding the global hidePropertiesView setting.
  • quartz-properties-collapse (or quartzPropertiesCollapse): set to true to start the panel collapsed, or false to start it expanded, overriding the default collapse state.

These keys are automatically excluded from the visible properties table.

Example frontmatter
---
title: My Note
quartz-properties: true
quartz-properties-collapse: false
---

Supported frontmatter

Quartz supports the following frontmatter fields. Where multiple keys are listed, they are aliases — the first matching key is used.

FieldKeysDescription
TitletitlePage title. Falls back to filename if empty.
DescriptiondescriptionPage description for metadata and search.
Tagstags, tagCategorization tags. Automatically slugified.
Aliasesaliases, aliasAlternative names for the page, used for link resolution.
PermalinkpermalinkCustom URL slug. Also added to aliases.
CSS classescssclasses, cssclassCSS classes applied to the page body.
Social imagesocialImage, image, coverImage used for social media previews.
Social descriptionsocialDescriptionDescription used specifically for social media previews.
Created datecreated, dateWhen the note was created.
Modified datemodified, lastmod, updated, last-modifiedWhen the note was last modified. Falls back to created if unset.
Published datepublished, publishDate, dateWhen the note was published.
PublishpublishWhether the note should be published.
DraftdraftWhether the note is a draft.
CommentscommentsWhether comments are enabled for the note.
LanguagelangLanguage code for the note.
Enable TOCenableTocWhether to show the table of contents.

API

  • Category: Transformer, Component
  • Function name: ExternalPlugin.NoteProperties().
  • Source: quartz-community/note-properties
  • Install: npx quartz plugin add github:quartz-community/note-properties